1
|
|
|
<?php |
2
|
|
|
/* |
3
|
|
|
You may not change or alter any portion of this comment or credits |
4
|
|
|
of supporting developers from this source code or any supporting source code |
5
|
|
|
which is considered copyrighted (c) material of the original comment or credit authors. |
6
|
|
|
|
7
|
|
|
This program is distributed in the hope that it will be useful, |
8
|
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of |
9
|
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. |
10
|
|
|
*/ |
11
|
|
|
/** |
12
|
|
|
* userlog module |
13
|
|
|
* |
14
|
|
|
* @copyright XOOPS Project (https://xoops.org) |
15
|
|
|
* @license GNU GPL 2 (http://www.gnu.org/licenses/old-licenses/gpl-2.0.html) |
16
|
|
|
* @package userlog admin |
17
|
|
|
* @since 1 |
18
|
|
|
* @author irmtfan ([email protected]) |
19
|
|
|
* @author XOOPS Project <www.xoops.org> <www.xoops.ir> |
20
|
|
|
*/ |
21
|
|
|
|
22
|
|
|
require_once __DIR__ . '/admin_header.php'; |
23
|
|
|
|
24
|
|
|
xoops_cp_header(); |
25
|
|
|
|
26
|
|
|
$adminObject = \Xmf\Module\Admin::getInstance(); |
27
|
|
|
$userlog = Userlog::getInstance(); |
28
|
|
|
|
29
|
|
|
// update all time stats |
30
|
|
|
$statsObj = UserlogStats::getInstance(); |
31
|
|
|
$statsObj->updateAll('log', 100); // prob = 100 |
32
|
|
|
$statsObj->updateAll('set', 100); // prob = 100 |
33
|
|
|
$statsObj->updateAll('file', 100); // prob = 100 |
34
|
|
|
|
35
|
|
|
$stats = $statsObj->getAll(['log', 'logdel', 'set', 'file']); |
36
|
|
|
// if no set in database - start with a setting! |
37
|
|
|
if (isset($stats['set'][0]) && 0 == $stats['set'][0]['value']) { |
38
|
|
|
$adminObject->addItemButton(_AM_USERLOG_SET_ADD, 'setting.php'); |
39
|
|
|
} else { |
40
|
|
|
$adminObject->addInfoBox(_AM_USERLOG_SUMMARY); |
41
|
|
|
$adminObject->addInfoBoxLine('<a href="logs.php?options[referer]=del&options[request_method]=POST">' . _AM_USERLOG_SUMMARY_DELETED . '</a>'); |
42
|
|
|
$adminObject->addInfoBoxLine('<a href="logs.php?options[admin]=1">' . _AM_USERLOG_SUMMARY_ADMIN . '</a>'); |
43
|
|
|
$adminObject->addInfoBoxLine('<a href="logs.php?options[referer]=google.com">' . _AM_USERLOG_SUMMARY_GOOGLE . '</a>'); |
44
|
|
|
} |
45
|
|
|
$adminObject->addInfoBox(_AM_USERLOG_STATS_ABSTRACT); |
46
|
|
|
$periods = array_flip($statsObj->period); |
47
|
|
|
$types = $statsObj->type; |
48
|
|
View Code Duplication |
foreach ($stats as $type => $arr) { |
|
|
|
|
49
|
|
|
if (strlen($type) > 10) { |
50
|
|
|
continue; |
51
|
|
|
} |
52
|
|
|
foreach ($arr as $period => $arr2) { |
53
|
|
|
// use sprintf in moduleadmin: sprintf($text, "<span style='color : " . $color . "; font-weight : bold;'>" . $value . "</span>") |
54
|
|
|
$adminObject->addInfoBoxLine( |
55
|
|
|
sprintf( |
56
|
|
|
sprintf(_AM_USERLOG_STATS_TYPE_PERIOD, '%1$s', $types[$type], constant('_AM_USERLOG_' . strtoupper($periods[$period]))) . ' ' . _AM_USERLOG_STATS_TIME_UPDATE . ' ' . $arr2['time_update'], |
57
|
|
|
$arr2['value'] |
58
|
|
|
), |
59
|
|
|
'', |
60
|
|
|
$arr2['value'] ? 'GREEN' : 'RED' |
61
|
|
|
); |
62
|
|
|
} |
63
|
|
|
} |
64
|
|
|
// if there is no file in working check the parent folder chmod |
65
|
|
|
if ((isset($stats['fileall'][0]) && 0 == $stats['fileall'][0]['value']) || (0 == $stats['file' . $userlog->getWorkingFile()][0]['value'])) { |
66
|
|
|
$adminObject->addConfigBoxLine([$userlog->getConfig('logfilepath'), 755], 'chmod'); |
67
|
|
|
// core feature: if(!$adminObject->addConfigBoxLine()) |
68
|
|
|
if (substr(decoct(fileperms($userlog->getConfig('logfilepath'))), 2) < 755) { |
69
|
|
|
$adminObject->addConfigBoxLine("<span class='bold red'>" . sprintf(_AM_USERLOG_CONFIG_CHMOD_ERROR, $userlog->getConfig('logfilepath'), 755) . '</span>', 'default'); |
70
|
|
|
$adminObject->addConfigBoxLine("<span class='bold red'>" . sprintf(_AM_USERLOG_CONFIG_CREATE_FOLDER, $userlog->getConfig('logfilepath') . '/' . USERLOG_DIRNAME, 755) . '</span>', 'default'); |
71
|
|
|
} |
72
|
|
|
} else { |
73
|
|
|
// if there is file in working check the log folder chmod |
74
|
|
|
$adminObject->addConfigBoxLine([$userlog->getConfig('logfilepath') . '/' . USERLOG_DIRNAME, 755], 'chmod'); |
75
|
|
|
} |
76
|
|
|
$adminObject->addConfigBoxLine("<span class='bold " . ($userlog->getConfig('status') ? 'green' : 'red') . "'>" . _MI_USERLOG_STATUS . ' ' . ($userlog->getConfig('status') ? _MI_USERLOG_ACTIVE : _MI_USERLOG_IDLE) . '</span>', 'default'); |
77
|
|
|
|
78
|
|
|
$adminObject->displayNavigation(basename(__FILE__)); |
79
|
|
|
$adminObject->displayButton('left'); |
80
|
|
|
$adminObject->displayIndex(); |
81
|
|
|
|
82
|
|
|
xoops_cp_footer(); |
83
|
|
|
|
There are different options of fixing this problem.
If you want to be on the safe side, you can add an additional type-check:
If you are sure that the expression is traversable, you might want to add a doc comment cast to improve IDE auto-completion and static analysis:
Mark the issue as a false-positive: Just hover the remove button, in the top-right corner of this issue for more options.