Third pass to clean up code

This commit is contained in:
Jean-Christian Paul Denis 2021-09-03 09:45:21 +02:00
parent 60289b71c4
commit 8b50811b0b
4 changed files with 515 additions and 584 deletions

View File

@ -11,13 +11,16 @@
* @copyright GPL-2.0 https://www.gnu.org/licenses/gpl-2.0.html
*/
if (!defined('DC_RC_PATH')){return;}
if (!defined('DC_RC_PATH')) {
return null;
}
if (!defined('ACTIVITY_REPORT')){return;}
if (!defined('ACTIVITY_REPORT')) {
return null;
}
/* ActivityReport plugin
-------------------------*/
$core->activityReport->addGroup('activityReport',__('ActivityReport messages'));
// ActivityReport plugin
$core->activityReport->addGroup('activityReport', __('ActivityReport messages'));
$core->activityReport->addAction(
'activityReport',
@ -25,194 +28,189 @@ $core->activityReport->addAction(
__('Special messages'),
__('%s'),
'messageActivityReport',
array('activityReportBehaviors','messageActivityReport')
['activityReportBehaviors', 'messageActivityReport']
);
/* Blog
-------------------------*/
$core->activityReport->addGroup('blog',__('Actions on blog'));
// Blog
$core->activityReport->addGroup('blog', __('Actions on blog'));
# Not use as it is global : BEHAVIOR adminAfterBlogCreate in admin/blog.php
// Not use as it is global : BEHAVIOR adminAfterBlogCreate in admin/blog.php
# from BEHAVIOR adminAfterBlogUpdate in admin/blog_pref.php
// from BEHAVIOR adminAfterBlogUpdate in admin/blog_pref.php
$core->activityReport->addAction(
'blog',
'update',
__('updating blog'),
__('Blog was updated by "%s"'),
'adminAfterBlogUpdate',
array('activityReportBehaviors','blogUpdate')
['activityReportBehaviors', 'blogUpdate']
);
# from BEHAVIOR publicHeadContent in template
// from BEHAVIOR publicHeadContent in template
$core->activityReport->addAction(
'blog',
'p404',
__('404 error'),
__('New 404 error page at "%s"'),
'publicHeadContent',
array('activityReportBehaviors','blogP404')
['activityReportBehaviors', 'blogP404']
);
/* Post
-------------------------*/
$core->activityReport->addGroup('post',__('Actions on posts'));
// Post
$core->activityReport->addGroup('post', __('Actions on posts'));
# from BEHAVIOR coreAfterPostCreate in inc/core/class.dc.blog.php (DC 2.2)
# duplicate adminAfterPostCreate in admin/post.php
# duplicate adminAfterPostCreate in admin/services.php
// from BEHAVIOR coreAfterPostCreate in inc/core/class.dc.blog.php (DC 2.2)
// duplicate adminAfterPostCreate in admin/post.php
// duplicate adminAfterPostCreate in admin/services.php
$core->activityReport->addAction(
'post',
'create',
__('post creation'),
__('A new post called "%s" was created by "%s" at %s'),
'adminAfterPostCreate',
array('activityReportBehaviors','postCreate')
['activityReportBehaviors', 'postCreate']
);
# Plugin contribute
# from BEHAVIOR publicAfterPostCreate in plugins/contribute/_public.php
// Plugin contribute
// from BEHAVIOR publicAfterPostCreate in plugins/contribute/_public.php
$core->activityReport->addAction(
'post',
'create',
__('post creation'),
__('A new post called "%s" was created by "%s" at %s'),
'publicAfterPostCreate',
array('activityReportBehaviors','postCreate')
['activityReportBehaviors', 'postCreate']
);
# from BEHAVIOR coreAfterPostUpdate in inc/core/class.dc.blog.php (DC2.2)
# duplicate adminAfterPostUpdate in admin/post.php
// from BEHAVIOR coreAfterPostUpdate in inc/core/class.dc.blog.php (DC2.2)
// duplicate adminAfterPostUpdate in admin/post.php
$core->activityReport->addAction(
'post',
'update',
__('updating post'),
__('Post called "%s" has been updated by "%s" at %s'),
'adminAfterPostUpdate',
array('activityReportBehaviors','postUpdate')
['activityReportBehaviors', 'postUpdate']
);
# from BEHAVIOR adminBeforePostDelete in admin/posts_actions.php
# from BEHAVIOR adminBeforePostDelete in admin/post.php
// from BEHAVIOR adminBeforePostDelete in admin/posts_actions.php
// from BEHAVIOR adminBeforePostDelete in admin/post.php
$core->activityReport->addAction(
'post',
'delete',
__('post deletion'),
__('Post called "%s" has been deleted by "%s"'),
'adminBeforePostDelete',
array('activityReportBehaviors','postDelete')
['activityReportBehaviors', 'postDelete']
);
# Wrong attempt on passworded enrty
# from BEHAVIOR urlHandlerServeDocument in inc/public/lib.urlhandlers.php
// Wrong attempt on passworded enrty
// from BEHAVIOR urlHandlerServeDocument in inc/public/lib.urlhandlers.php
$core->activityReport->addAction(
'post',
'protection',
__('Post protection'),
__('An attempt failed on a passworded post with password "%s" at "%s"'),
'urlHandlerServeDocument',
array('activityReportBehaviors','postPasswordAttempt')
['activityReportBehaviors', 'postPasswordAttempt']
);
/* Comment
-------------------------*/
// Comment
$core->activityReport->addGroup('comment',__('Actions on comments'));
# from BEHAVIOR coreAfterCommentCreate in inc/core/class.dc.blog.php
# duplicate adminAfterCommentCreate in admin/comment.php
# duplicate publicAfterCommentCreate in inc/public/lib.urlhandlers.php
// from BEHAVIOR coreAfterCommentCreate in inc/core/class.dc.blog.php
// duplicate adminAfterCommentCreate in admin/comment.php
// duplicate publicAfterCommentCreate in inc/public/lib.urlhandlers.php
$core->activityReport->addAction(
'comment',
'create',
__('comment creation'),
__('A new comment was created by "%s" on post "%s" at %s'),
'coreAfterCommentCreate',
array('activityReportBehaviors','commentCreate')
['activityReportBehaviors', 'commentCreate']
);
# from BEHAVIOR coreAfterCommentUpdate in inc/core/class.dc.blog.php
# duplicate adminAfterCommentUpdate in admin/comment.php
// from BEHAVIOR coreAfterCommentUpdate in inc/core/class.dc.blog.php
// duplicate adminAfterCommentUpdate in admin/comment.php
$core->activityReport->addAction(
'comment',
'update',
__('updating comment'),
__('Comment has been updated by "%s" at %s'),
'coreAfterCommentUpdate',
array('activityReportBehaviors','commentUpdate')
['activityReportBehaviors', 'commentUpdate']
);
# Missing coreBeforeCommentDelete in inc/core/class.dc.blog.php
# Missing adminBeforeCommentDelete in admin/comment.php
// Missing coreBeforeCommentDelete in inc/core/class.dc.blog.php
// Missing adminBeforeCommentDelete in admin/comment.php
# from BEHAVIOR coreAfterCommentCreate in inc/core/class.dc.blog.php
# duplicate publicAfterTrackbackCreate in inc/core/class.dc.trackback.php
// from BEHAVIOR coreAfterCommentCreate in inc/core/class.dc.blog.php
// duplicate publicAfterTrackbackCreate in inc/core/class.dc.trackback.php
$core->activityReport->addAction(
'comment',
'trackback',
__('trackback creation'),
__('A new trackback to "%" at "%s" was created on post "%s" at %s'),
'coreAfterCommentCreate',
array('activityReportBehaviors','trackbackCreate')
['activityReportBehaviors', 'trackbackCreate']
);
/* Category
-------------------------*/
$core->activityReport->addGroup('category',__('Actions on categories'));
// Category
$core->activityReport->addGroup('category', __('Actions on categories'));
# from BEHAVIOR adminAfterCategoryCreate in admin/category.php
// from BEHAVIOR adminAfterCategoryCreate in admin/category.php
$core->activityReport->addAction(
'category',
'create',
__('category creation'),
__('A new category called "%s" was created by "%s" at %s'),
'adminAfterCategoryCreate',
array('activityReportBehaviors','categoryCreate')
['activityReportBehaviors', 'categoryCreate']
);
# from BEHAVIOR adminAfterCategoryUpdate in admin/category.php
// from BEHAVIOR adminAfterCategoryUpdate in admin/category.php
$core->activityReport->addAction(
'category',
'update',
__('updating category'),
__('Category called "%s" has been updated by "%s" at %s'),
'adminAfterCategoryUpdate',
array('activityReportBehaviors','categoryUpdate')
['activityReportBehaviors', 'categoryUpdate']
);
# Missing adminBeforeCategoryDelete in admin/category.php
// Missing adminBeforeCategoryDelete in admin/category.php
/* User
-------------------------*/
$core->activityReport->addGroup('user',__('Actions on users'));
// User
$core->activityReport->addGroup('user', __('Actions on users'));
# from BEHAVIOR adminAfterUserCreate in admin/user.php
// from BEHAVIOR adminAfterUserCreate in admin/user.php
$core->activityReport->addAction(
'user',
'create',
__('user creation'),
__('A new user named "%s" was created by "%s"'),
'adminAfterUserCreate',
array('activityReportBehaviors','userCreate')
['activityReportBehaviors', 'userCreate']
);
# from BEHAVIOR adminAfterUserUpdated in admin/user.php
// from BEHAVIOR adminAfterUserUpdated in admin/user.php
$core->activityReport->addAction(
'user',
'update',
__('updating user'),
__('User named "%s" has been updated by "%s"'),
'adminAfterUserUpdate',
array('activityReportBehaviors','userUpdate')
['activityReportBehaviors', 'userUpdate']
);
# from BEHAVIOR adminBeforeUserDelete in admin/users.php
// from BEHAVIOR adminBeforeUserDelete in admin/users.php
$core->activityReport->addAction(
'user',
'delete',
__('user deletion'),
__('User named "%s" has been deleted by "%"'),
'adminBeforeUserDelete',
array('activityReportBehaviors','userDelete')
['activityReportBehaviors', 'userDelete']
);
class activityReportBehaviors
@ -220,210 +218,198 @@ class activityReportBehaviors
public static function messageActivityReport($message)
{
global $core;
$logs = array($message);
$core->activityReport->addLog('activityReport','message',$logs);
$logs = [$message];
$core->activityReport->addLog('activityReport', 'message', $logs);
}
public static function blogUpdate($cur,$blog_id)
public static function blogUpdate($cur, $blog_id)
{
global $core;
$logs = array($core->auth->getInfo('user_cn'));
$core->activityReport->addLog('blog','update',$logs);
$logs = [$core->auth->getInfo('user_cn')];
$core->activityReport->addLog('blog', 'update' ,$logs);
}
public static function blogP404()
{
global $core;
if ($core->url->type != '404') return;
$logs = array($core->blog->url.$_SERVER['QUERY_STRING']);
$core->activityReport->addLog('blog','p404',$logs);
if ($core->url->type != '404') {
return null;
}
$logs = [$core->blog->url . $_SERVER['QUERY_STRING']];
$core->activityReport->addLog('blog', 'p404', $logs);
}
public static function postCreate($cur,$post_id)
public static function postCreate($cur, $post_id)
{
global $core;
$type = $cur->post_type ? $cur->post_type : 'post';
$post_url = $core->blog->getPostURL('',$cur->post_dt,$cur->post_title,$post_id);
$logs = array(
$post_url = $core->blog->getPostURL('', $cur->post_dt, $cur->post_title, $post_id);
$logs = [
$cur->post_title,
$core->auth->getInfo('user_cn'),
$core->blog->url.$core->url->getBase($type).'/'.$post_url
);
$core->activityReport->addLog('post','create',$logs);
$core->blog->url . $core->url->getBase($type) . '/' . $post_url
];
$core->activityReport->addLog('post', 'create', $logs);
}
public static function postUpdate($cur,$post_id)
public static function postUpdate($cur, $post_id)
{
global $core;
$type = $cur->post_type ? $cur->post_type : 'post';
$post_url = $core->blog->getPostURL('',$cur->post_dt,$cur->post_title,$post_id);
$logs = array(
$post_url = $core->blog->getPostURL('', $cur->post_dt, $cur->post_title, $post_id);
$logs = [
$cur->post_title,
$core->auth->getInfo('user_cn'),
$core->blog->url.$core->url->getBase($type).'/'.$post_url
);
$core->activityReport->addLog('post','update',$logs);
$core->blog->url . $core->url->getBase($type) . '/' . $post_url
];
$core->activityReport->addLog('post', 'update', $logs);
}
public static function postDelete($post_id)
{
global $core;
$posts = $core->blog->getPosts(array('post_id'=>$post_id,'limit'=>1));
$logs = array(
$posts = $core->blog->getPosts(['post_id' => $post_id, 'limit' => 1]);
$logs = [
$posts->post_title,
$core->auth->getInfo('user_cn')
);
$core->activityReport->addLog('post','delete',$logs);
];
$core->activityReport->addLog('post', 'delete', $logs);
}
public static function postPasswordAttempt($result)
{
global $core;
if ($result['tpl'] != 'password-form.html' || empty($_POST['password'])) return;
$logs = array(
if ($result['tpl'] != 'password-form.html' || empty($_POST['password'])) {
return null;
}
$logs = [
$_POST['password'],
http::getSelfURI()
);
$core->activityReport->addLog('post','protection',$logs);
];
$core->activityReport->addLog('post', 'protection', $logs);
}
public static function commentCreate($blog,$cur)
public static function commentCreate($blog, $cur)
{
global $core;
if ($cur->comment_trackback) return;
$posts = $core->blog->getPosts(array('post_id'=>$cur->post_id,'limit'=>1));
$logs = array(
if ($cur->comment_trackback) {
return null;
}
$posts = $core->blog->getPosts(['post_id' => $cur->post_id, 'limit' => 1]);
$logs = [
$cur->comment_author,
$posts->post_title,
$core->blog->url.$core->url->getBase($posts->post_type).
'/'.$posts->post_url.'#c'.$cur->comment_id
);
$core->activityReport->addLog('comment','create',$logs);
$core->blog->url . $core->url->getBase($posts->post_type) .
'/' . $posts->post_url . '#c' . $cur->comment_id
];
$core->activityReport->addLog('comment', 'create', $logs);
}
public static function commentUpdate($blog,$cur,$old)
public static function commentUpdate($blog, $cur, $old)
{
global $core;
$posts = $core->blog->getPosts(array('post_id'=>$old->post_id,'limit'=>1));
$posts = $core->blog->getPosts(['post_id' => $old->post_id, 'limit' => 1]);
$logs = array(
$logs = [
$core->auth->getInfo('user_cn'),
$posts->post_title,
$core->blog->url.$core->url->getBase($posts->post_type).
'/'.$posts->post_url.'#c'.$old->comment_id
);
$core->activityReport->addLog('comment','update',$logs);
$core->blog->url . $core->url->getBase($posts->post_type) .
'/' . $posts->post_url . '#c' . $old->comment_id
];
$core->activityReport->addLog('comment', 'update', $logs);
}
public static function trackbackCreate($cur,$comment_id)
public static function trackbackCreate($cur, $comment_id)
{
global $core;
// From blog args are $blog,$cur #thks to bruno
// From blog args are $blog, $cur #thks to bruno
$c = $cur instanceOf dcBlog ? $comment_id : $cur;
if (!$c->comment_trackback || !$c->comment_site) return;
if (!$c->comment_trackback || !$c->comment_site) {
return null;
}
$posts = $core->blog->getPosts(
array('post_id'=>$c->post_id,'no_content'=>true,'limit'=>1));
if ($posts->isEmpty()) return;
$logs = array(
['post_id' => $c->post_id, 'no_content' => true, 'limit' => 1]);
if ($posts->isEmpty()) {
return null;
}
$logs = [
$c->comment_author,
$c->comment_site,
$posts->post_title,
$core->blog->url.$core->url->getBase($posts->post_type).
'/'.$posts->post_url
);
$core->activityReport->addLog('comment','trackback',$logs);
$core->blog->url . $core->url->getBase($posts->post_type) .
'/' . $posts->post_url
];
$core->activityReport->addLog('comment', 'trackback', $logs);
}
public static function categoryCreate($cur,$cat_id)
public static function categoryCreate($cur, $cat_id)
{
global $core;
$logs = array(
$logs = [
$cur->cat_title,
$core->auth->getInfo('user_cn'),
$core->blog->url.$core->url->getBase('category').'/'.$cur->cat_url
);
$core->activityReport->addLog('category','create',$logs);
$core->blog->url . $core->url->getBase('category') . '/' . $cur->cat_url
];
$core->activityReport->addLog('category', 'create', $logs);
}
public static function categoryUpdate($cur,$cat_id)
public static function categoryUpdate($cur, $cat_id)
{
global $core;
$logs = array(
$logs = [
$cur->cat_title,
$core->auth->getInfo('user_cn'),
$core->blog->url.$core->url->getBase('category').'/'.$cur->cat_url
);
$core->activityReport->addLog('category','update',$logs);
$core->blog->url . $core->url->getBase('category') . '/' . $cur->cat_url
];
$core->activityReport->addLog('category', 'update', $logs);
}
public static function userCreate($cur,$user_id)
public static function userCreate($cur, $user_id)
{
global $core;
$user_cn = dcUtils::getUserCN($cur->user_id, $cur->user_name,
$cur->user_firstname, $cur->user_displayname);
$logs = array(
$user_cn = dcUtils::getUserCN(
$cur->user_id,
$cur->user_name,
$cur->user_firstname,
$cur->user_displayname
);
$logs = [
$user_cn,
$core->auth->getInfo('user_cn')
);
$core->activityReport->addLog('user','create',$logs);
];
$core->activityReport->addLog('user', 'create', $logs);
}
public static function usertUpdate($cur,$user_id)
public static function usertUpdate($cur, $user_id)
{
global $core;
$user_cn = dcUtils::getUserCN($cur->user_id, $cur->user_name,
$cur->user_firstname, $cur->user_displayname);
$logs = array(
$user_cn = dcUtils::getUserCN(
$cur->user_id,
$cur->user_name,
$cur->user_firstname,
$cur->user_displayname
);
$logs = [
$user_cn,
$core->auth->getInfo('user_cn')
);
$core->activityReport->addLog('user','update',$logs);
];
$core->activityReport->addLog('user', 'update', $logs);
}
public static function userDelete($user_id)
{
global $core;
$users = $core->getUser($id);
$user_cn = dcUtils::getUserCN($users->user_id, $users->user_name,
$users->user_firstname, $users->user_displayname);
$logs = array(
$user_cn = dcUtils::getUserCN(
$users->user_id,
$users->user_name,
$users->user_firstname,
$users->user_displayname
);
$logs = [
$user_cn,
$core->auth->getInfo('user_cn')
);
$core->activityReport->addLog('user','delete',$logs);
];
$core->activityReport->addLog('user', 'delete', $logs);
}
}

File diff suppressed because it is too large Load Diff

View File

@ -11,60 +11,54 @@
* @copyright GPL-2.0 https://www.gnu.org/licenses/gpl-2.0.html
*/
$format = array(
'html' => array(
'blog_title' => '<h2><a href="%URL%">%TEXT%</a></h2>',
'blog_open' => '',
'blog_close' => '',
'group_title' => '<h3>%TEXT%</h3>',
'group_open' => '<ul>',
'group_close' => '</ul>',
'action' => '<li><em>%TIME%</em><br />%TEXT%</li>',
'error' => '<p>%TEXT%</p>',
'period_title' => '<h1>%TEXT%</h1>',
'period_open' => '<ul>',
'period_close' => '</ul>',
'info' => '<li>%TEXT%</li>',
'page' =>
'<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">'."\n".
'<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">'."\n".
"<head><title>".__('Activity report')."</title>".
'<style type="text/css">'.
' body { color: #303030; background: #FCFCFC; font-size: 0.7em;font-family: Georgia, Tahoma, Arial, Helvetica, sans-serif; }'.
' a { color: #303030; text-decoration: none; }'.
' h1 { text-align: center; font-size: 2em; }'.
' h2 { color: #303030; text-align:center; }'.
' h3 { color: #7F3F3F; }'.
' li em { color: #303030; }'.
' div.info { color: #3F497F; background-color: #F8F8EB; border: 1px solid #888888; margin: 4px; padding: 4px; }'.
' div.content { color: #3F7F47; background-color: #F8F8EB; border: 1px solid #888888; margin: 4px; padding: 4px; }'.
' div.foot { text-align:center; font-size: 0.9em; }'.
'</style>'.
"</head><body>".
'<div class="info">%PERIOD%</div><div class="content">%TEXT%</div>'.
'<div class="foot"><p>Powered by <a href="http://dotclear.jcdenis.com/go/activityReport">activityReport</a></p></div>'.
"</body></html>"
),
'plain' => array(
'blog_title' => "\n--- %TEXT% ---\n",
'blog_open' => '',
'blog_close' => '',
'group_title' => "\n-- %TEXT% --\n\n",
'group_open' => '',
'group_close' => '',
'action' => "- %TIME% : %TEXT%\n",
'error' => '%TEXT%',
'period_title' => "%TEXT%\n",
'period_open' => '',
'period_close' => '',
'info' => "%TEXT%\n",
'page' =>
"%PERIOD%\n-----------------------------------------------------------\n%TEXT%"
));
$format = [
'html' => [
'blog_title' => '<h2><a href="%URL%">%TEXT%</a></h2>',
'blog_open' => '',
'blog_close' => '',
'group_title' => '<h3>%TEXT%</h3>',
'group_open' => '<ul>',
'group_close' => '</ul>',
'action' => '<li><em>%TIME%</em><br />%TEXT%</li>',
'error' => '<p>%TEXT%</p>',
'period_title' => '<h1>%TEXT%</h1>',
'period_open' => '<ul>',
'period_close' => '</ul>',
'info' => '<li>%TEXT%</li>',
'page' =>
'<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">'."\n".
'<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">'."\n".
"<head><title>".__('Activity report')."</title>".
'<style type="text/css">'.
' body { color: #303030; background: #FCFCFC; font-size: 0.7em;font-family: Georgia, Tahoma, Arial, Helvetica, sans-serif; }'.
' a { color: #303030; text-decoration: none; }'.
' h1 { text-align: center; font-size: 2em; }'.
' h2 { color: #303030; text-align:center; }'.
' h3 { color: #7F3F3F; }'.
' li em { color: #303030; }'.
' div.info { color: #3F497F; background-color: #F8F8EB; border: 1px solid #888888; margin: 4px; padding: 4px; }'.
' div.content { color: #3F7F47; background-color: #F8F8EB; border: 1px solid #888888; margin: 4px; padding: 4px; }'.
' div.foot { text-align:center; font-size: 0.9em; }'.
'</style>'.
"</head><body>".
'<div class="info">%PERIOD%</div><div class="content">%TEXT%</div>'.
'<div class="foot"><p>Powered by <a href="http://dotclear.jcdenis.com/go/activityReport">activityReport</a></p></div>'.
"</body></html>"
],
'plain' => [
'blog_title' => "\n--- %TEXT% ---\n",
'blog_open' => '',
'blog_close' => '',
'group_title' => "\n-- %TEXT% --\n\n",
'group_open' => '',
'group_close' => '',
'action' => "- %TIME% : %TEXT%\n",
'error' => '%TEXT%',
'period_title' => "%TEXT%\n",
'period_open' => '',
'period_close' => '',
'info' => "%TEXT%\n",
'page' =>
"%PERIOD%\n-----------------------------------------------------------\n%TEXT%"
]
];

View File

@ -23,10 +23,11 @@ dcPage::check('admin');
require_once dirname(__FILE__) . '/inc/lib.activity.report.index.php';
$tab = isset($_REQUEST['tab']) ? $_REQUEST['tab'] : 'blog_settings';
$tab = $_REQUEST['tab'] ?? 'blog_settings';
$section = $_REQUEST['section'] ?? '';
echo '
<html><head><title><?php echo __('Activity report'); ?></title>' .
<html><head><title>'. __('Activity report') . '</title>' .
dcPage::jsLoad('js/_posts_list.js') .
dcPage::jsToolBar() .
dcPage::jsPageTabs($tab) .
@ -42,11 +43,11 @@ if (!activityReport::hasMailer()) {
echo '<p class="error">' . __('This server has no mail function, activityReport not send email report.') . '</p>';
}
activityReportLib::settingTab($core,__('Settings'));
activityReportLib::logTab($core,__('Logs'));
activityReportLib::settingTab($core, __('Settings'));
activityReportLib::logTab($core, __('Logs'));
if ($core->auth->isSuperAdmin()) {
activityReportLib::settingTab($core, __('Super settings'), true);
activityReportLib::logTab($core, __('Super logs'), true);
}
echo '</html>';
echo '</body></html>';