Completed
Branch master (4e8684)
by Michael
05:31 queued 02:57
created

moderate.php (1 issue)

Upgrade to new PHP Analysis Engine

These results are based on our legacy PHP analysis, consider migrating to our new PHP analysis engine instead. Learn more

1
<?php
2
/**
3
 * NewBB 5.0x,  the forum module for XOOPS project
4
 *
5
 * @copyright      XOOPS Project (http://xoops.org)
6
 * @license        GNU GPL 2 or later (http://www.gnu.org/licenses/gpl-2.0.html)
7
 * @author         Taiwen Jiang (phppp or D.J.) <[email protected]>
8
 * @since          4.00
9
 * @package        module::newbb
10
 */
11
12
use Xmf\Request;
13
14
include_once __DIR__ . '/header.php';
15
16
global $xoTheme, $xoopsTpl;
17
$GLOBALS['xoopsOption']['template_main'] = 'newbb_moderate.tpl';
18
include $GLOBALS['xoops']->path('header.php');
19
20
$forum_userid = Request::getInt('uid', 0);
21
$forum_id     = Request::getInt('forum', 0);
22
$isadmin      = newbb_isAdmin($forum_id);
23
if (!$isadmin) {
24
    redirect_header(XOOPS_URL . '/index.php', 2, _MD_NEWBB_NORIGHTTOACCESS);
25
}
26
$is_administrator = $GLOBALS['xoopsUserIsAdmin'];
27
/** @var \NewbbModerateHandler $moderateHandler */
28
$moderateHandler = xoops_getModuleHandler('moderate', 'newbb');
29
30
if (Request::hasVar('submit', 'POST') && Request::getInt('expire', 0, 'POST')) {
31
    $ipWithMask = '';
32
    if (0 == $forum_userid) {
33
        $ipWithMask = Request::getString('ip', null, 'POST');
34
        $mask       = '';
35
        $ipParts    = explode('/', $ipWithMask);
36
        $ip         = new \Xmf\IPAddress($ipParts[0]);
37
        if (false === $ip->asReadable()) {
38
            $ipWithMask = '';
39
        } else {
40
            $ipWithMask = $ip->asReadable();
41
            $mask       = empty($ipParts[1]) ? 0 : (int)$ipParts[1];
42
            $mask       = ($mask > ((4 === $ip->ipVersion()) ? 32 : 128) || $mask < 8) ? '' : $mask;
43
            $ipWithMask .= empty($mask) ? '' : '/' . $mask;
44
        }
45
    }
46
47
    $mod_end  = time() + Request::getInt('expire', 0, 'POST') * 3600 * 24;
48
    $mod_desc = Request::getString('desc', '', 'POST');
49
50
    $moderate_obj = $moderateHandler->create();
51
    $moderate_obj->setVar('uid', $forum_userid);
52
    $moderate_obj->setVar('ip', $ipWithMask);
53
    $moderate_obj->setVar('forum_id', $forum_id);
54
    $moderate_obj->setVar('mod_start', time());
55
    $moderate_obj->setVar('mod_end', $mod_end);
56
    $moderate_obj->setVar('mod_desc', $mod_desc);
57
    $res = $moderateHandler->insert($moderate_obj);
58
59
    redirect_header("moderate.php?forum={$forum_id}", 2, _MD_NEWBB_DBUPDATED);
60
} elseif (Request::hasVar('del')) {
61
    $moderate_obj = $moderateHandler->get(Request::getInt('del', 0, 'GET'));
62
    if ($is_administrator || $moderate_obj->getVar('forum_id') == $forum_id) {
63
        $moderateHandler->delete($moderate_obj, true);
64
        redirect_header("moderate.php?forum={$forum_id}", 2, _MD_NEWBB_DBUPDATED);
65
    }
66
}
67
68
$start    = Request::getInt('start', 0, 'GET');
69
$sortname = Request::getString('sort', '', 'GET');
70
71
switch ($sortname) {
72
    case 'uid':
73
        $sort  = 'uid ASC, ip';
74
        $order = 'ASC';
75
        break;
76
    case 'start':
77
        $sort  = 'mod_start';
78
        $order = 'ASC';
79
        break;
80
    case 'expire':
81
        $sort  = 'mod_end';
82
        $order = 'DESC';
83
        break;
84
    default:
85
        $sort  = 'forum_id ASC, uid ASC, ip';
86
        $order = 'ASC';
87
        break;
88
}
89
// show all bans for module admin - for moderator just show its forum_id bans
90
$criteria = new CriteriaCompo();
91
if (!$is_administrator) {
92
    $criteria->add(new Criteria('forum_id', $forum_id, '='));
93
}
94
$criteria->setLimit($GLOBALS['xoopsModuleConfig']['topics_per_page']);
95
$criteria->setStart($start);
96
$criteria->setSort($sort);
97
$criteria->setOrder($order);
98
$moderate_objs  = $moderateHandler->getObjects($criteria);
99
$moderate_count = $moderateHandler->getCount($criteria);
100
101
$url = 'moderate.php';
102
if ($forum_id) {
103
    $url .= '?forum=' . $forum_id;
104
}
105
$xoopsTpl->assign('moderate_url', $url);
106
107
if (!empty($moderate_count)) {
108
    $_users = [];
109
    foreach (array_keys($moderate_objs) as $id) {
110
        $_users[$moderate_objs[$id]->getVar('uid')] = 1;
111
    }
112
    $users =& newbb_getUnameFromIds(array_keys($_users), $GLOBALS['xoopsModuleConfig']['show_realname'], true);
113
114
    $columnHeaders ['uid']    = [
115
        'url'    => 'moderate.php?forum=' . $forum_id . '&amp;start=' . $start . '&amp;sort=uid',
116
        'header' => _MD_NEWBB_SUSPEND_UID,
117
        'title'  => _MD_NEWBB_SUSPEND_UID,
118
    ];
119
    $columnHeaders ['start']  = [
120
        'url'    => 'moderate.php?forum=' . $forum_id . '&amp;start=' . $start . '&amp;sort=start',
121
        'header' => _MD_NEWBB_SUSPEND_START,
122
        'title'  => _MD_NEWBB_SUSPEND_START,
123
    ];
124
    $columnHeaders['expire']  = [
125
        'url'    => 'moderate.php?forum=' . $forum_id . '&amp;start=' . $start . '&amp;sort=expire',
126
        'header' => _MD_NEWBB_SUSPEND_EXPIRE,
127
        'title'  => _MD_NEWBB_SUSPEND_EXPIRE,
128
    ];
129
    $columnHeaders['forum']   = [
130
        'url'    => 'moderate.php?forum=' . $forum_id . '&amp;start=' . $start . '&amp;sort=forum',
131
        'header' => _MD_NEWBB_SUSPEND_SCOPE,
132
        'title'  => _MD_NEWBB_SUSPEND_SCOPE,
133
    ];
134
    $columnHeaders['desc']    = [
135
        'url'    => false,
136
        'header' => _MD_NEWBB_SUSPEND_DESC,
137
        'title'  => _MD_NEWBB_SUSPEND_DESC,
138
    ];
139
    $columnHeaders['options'] = [
140
        'url'    => false,
141
        'header' => _DELETE,
142
        'title'  => _DELETE,
143
    ];
144
    $xoopsTpl->assign('columnHeaders', $columnHeaders);
145
146
    /** @var \NewbbForumHandler $forumHandler */
147
    $forumHandler = xoops_getModuleHandler('forum', 'newbb');
148
    $forum_list   = $forumHandler->getAll(null, ['forum_name'], false);
149
150
    $columnRows = [];
151
    foreach (array_keys($moderate_objs) as $id) {
152
        // for anon, show ip instead
153
        $row['uid']     = ($moderate_objs[$id]->getVar('uid') ? (isset($users[$moderate_objs[$id]->getVar('uid')]) ? $users[$moderate_objs[$id]->getVar('uid')] : $moderate_objs[$id]->getVar('uid')) : $moderate_objs[$id]->getVar('ip'));
154
        $row['start']   = formatTimestamp($moderate_objs[$id]->getVar('mod_start'));
155
        $row['expire']  = formatTimestamp($moderate_objs[$id]->getVar('mod_end'));
156
        $row['forum']   = ($moderate_objs[$id]->getVar('forum_id') ? $forum_list[$moderate_objs[$id]->getVar('forum_id')]['forum_name'] : _ALL);
157
        $row['desc']    = ($moderate_objs[$id]->getVar('mod_desc') ?: _NONE);
158
        $row['options'] = (($is_administrator
159
                            || $moderate_objs[$id]->getVar('forum_id') == $forum_id) ? '<a href="moderate.php?forum=' . $forum_id . '&amp;del=' . $moderate_objs[$id]->getVar('mod_id') . '">' . _DELETE . '</a>' : '');
160
        $columnRows[]   = $row;
161
    }
162
    $xoopsTpl->assign('columnRows', $columnRows);
163
164
    if ($moderate_count > $GLOBALS['xoopsModuleConfig']['topics_per_page']) {
165
        include $GLOBALS['xoops']->path('class/pagenav.php');
166
        $nav = new XoopsPageNav($moderate_count, $GLOBALS['xoopsModuleConfig']['topics_per_page'], $start, 'start', 'forum=' . $forum_id . '&amp;sort=' . $sortname);
167
        //if (isset($GLOBALS['xoopsModuleConfig']['do_rewrite'])) {
168
        //    $nav->url = formatURL($_SERVER['SERVER_NAME']) . ' /' . $nav->url;
0 ignored issues
show
Unused Code Comprehensibility introduced by
48% of this comment could be valid code. Did you maybe forget this after debugging?

Sometimes obsolete code just ends up commented out instead of removed. In this case it is better to remove the code once you have checked you do not need it.

The code might also have been commented out for debugging purposes. In this case it is vital that someone uncomments it again or your project may behave in very unexpected ways in production.

This check looks for comments that seem to be mostly valid code and reports them.

Loading history...
169
        //}
170
        $xoopsTpl->assign('moderate_page_nav', $nav->renderNav());
171
    }
172
}
173
174
include_once $GLOBALS['xoops']->path('class/xoopsformloader.php');
175
$forum_form = new XoopsThemeForm(_ADD, 'suspend_form', 'moderate.php', 'post');
176
$forum_form->addElement(new XoopsFormSelectUser(_MD_NEWBB_SUSPEND_UID, 'uid', true, $forum_userid, 1, false));
177
$forum_form->addElement(new XoopsFormText(_MD_NEWBB_SUSPEND_IP, 'ip', 50, 50));
178
$forum_form->addElement(new XoopsFormText(_MD_NEWBB_SUSPEND_DURATION, 'expire', 20, 25, '5'), true);
179
$forum_form->addElement(new XoopsFormText(_MD_NEWBB_SUSPEND_DESC, 'desc', 50, 255));
180
include_once __DIR__ . '/include/functions.forum.php';
181
if (newbb_isAdmin()) {
182
    $forumSel = '<select name="forum">';// if user doesn't select, default is "0" all forums
183
    $forumSel .= '<option value="0"';
184
    if ($forum_id == 0) {
185
        $forumSel .= ' selected';
186
    }
187
    $forumSel .= '>' . _ALL . '</option>';
188
    $forumSel .= newbb_forumSelectBox($forum_id, 'access', false); //$accessForums, $permission = "access", $delimitorCategory = true
189
    $forumSel .= '</select>';
190
    $forumEle                         = new XoopsFormLabel(_MD_NEWBB_SELFORUM, $forumSel);
191
    $forumEle->customValidationCode[] = 'if (document.suspend.forum.value < 0) {return false;} ';
192
    $forum_form->addElement($forumEle);
193
} else {
194
    $forum_form->addElement(new XoopsFormHidden('forum', $forum_id));
195
}
196
$forum_form->addElement(new XoopsFormButton('', 'submit', _SUBMIT, 'submit'));
197
$forum_form->assign($xoopsTpl);
198
199
include_once __DIR__ . '/footer.php';
200
include $GLOBALS['xoops']->path('footer.php');
201