Passed
Branch master (565d4a)
by Michael
15:11 queued 01:11
created

viewpost.php (33 issues)

1
<?php
2
//
3
//  ------------------------------------------------------------------------ //
4
//                XOOPS - PHP Content Management System                      //
5
//                  Copyright (c) 2000-2016 XOOPS.org                        //
6
//                       <https://xoops.org/>                             //
7
//  ------------------------------------------------------------------------ //
8
//  This program is free software; you can redistribute it and/or modify     //
9
//  it under the terms of the GNU General Public License as published by     //
10
//  the Free Software Foundation; either version 2 of the License, or        //
11
//  (at your option) any later version.                                      //
12
//                                                                           //
13
//  You may not change or alter any portion of this comment or credits       //
14
//  of supporting developers from this source code or any supporting         //
15
//  source code which is considered copyrighted (c) material of the          //
16
//  original comment or credit authors.                                      //
17
//                                                                           //
18
//  This program is distributed in the hope that it will be useful,          //
19
//  but WITHOUT ANY WARRANTY; without even the implied warranty of           //
20
//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the            //
21
//  GNU General Public License for more details.                             //
22
//                                                                           //
23
//  You should have received a copy of the GNU General Public License        //
24
//  along with this program; if not, write to the Free Software              //
25
//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA //
26
//  ------------------------------------------------------------------------ //
27
//  Author: phppp (D.J., [email protected])                                  //
28
//  URL: https://xoops.org                                                    //
29
//  Project: Article Project                                                 //
30
//  ------------------------------------------------------------------------ //
31
32
use Xmf\Request;
33
use XoopsModules\Newbb;
34
35
require_once __DIR__ . '/header.php';
36
37
$start    = Request::getInt('start', 0, 'GET');
38
$forum_id = Request::getInt('forum', 0, 'GET');
39
$order    = Request::getString('order', 'DESC', 'GET');
40
41
$uid = Request::getInt('uid', 0, 'GET');
42
43
$status = (Request::getString('status', '', 'GET')
44
           && in_array(Request::getString('status', '', 'GET'), ['active', 'pending', 'deleted', 'new', 'all', 'digest'], true)) ? Request::getString('status', '', 'GET') : '';
45
$mode   = Request::getInt('mode', 0, 'GET');
46
$mode   = (!empty($status) && in_array($status, ['active', 'pending', 'deleted'], true)) ? 2 : $mode;
47
48
///** @var Newbb\ForumHandler $forumHandler */
0 ignored issues
show
Unused Code Comprehensibility introduced by
55% 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...
49
//$forumHandler = Newbb\Helper::getInstance()->getHandler('Forum');
50
///** @var Newbb\PostHandler $postHandler */
51
//$postHandler = Newbb\Helper::getInstance()->getHandler('Post');
52
53
if (empty($forum_id)) {
54
    $forums       = $forumHandler->getByPermission(0, 'view');
55
    $accessForums = array_keys($forums);
56
    $isAdmin      = $GLOBALS['xoopsUserIsAdmin'];
57
} else {
58
    $forumObject       = $forumHandler->get($forum_id);
59
    $forums[$forum_id] = $forumObject;
60
    $accessForums      = [$forum_id];
61
    $isAdmin           = newbbIsAdmin($forumObject);
62
}
63
64
/* Only admin has access to admin mode */
65
if (!$isAdmin && 2 === $mode) {
66
    $status = in_array($status, ['active', 'pending', 'deleted'], true) ? '' : $status;
67
    $mode   = 0;
68
}
69
if ($mode) {
70
    $_GET['viewmode'] = 'flat';
71
}
72
//echo $mode.' - '.$status;
0 ignored issues
show
Unused Code Comprehensibility introduced by
63% 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...
73
$post_perpage = $GLOBALS['xoopsModuleConfig']['posts_per_page'];
74
75
$criteria_count = new \CriteriaCompo(new \Criteria('forum_id', '(' . implode(',', $accessForums) . ')', 'IN'));
0 ignored issues
show
The type CriteriaCompo was not found. Maybe you did not declare it correctly or list all dependencies?

The issue could also be caused by a filter entry in the build configuration. If the path has been excluded in your configuration, e.g. excluded_paths: ["lib/*"], you can move it to the dependency path list as follows:

filter:
    dependency_paths: ["lib/*"]

For further information see https://scrutinizer-ci.com/docs/tools/php/php-scrutinizer/#list-dependency-paths

Loading history...
The type Criteria was not found. Maybe you did not declare it correctly or list all dependencies?

The issue could also be caused by a filter entry in the build configuration. If the path has been excluded in your configuration, e.g. excluded_paths: ["lib/*"], you can move it to the dependency path list as follows:

filter:
    dependency_paths: ["lib/*"]

For further information see https://scrutinizer-ci.com/docs/tools/php/php-scrutinizer/#list-dependency-paths

Loading history...
76
$criteria_post  = new \CriteriaCompo(new \Criteria('p.forum_id', '(' . implode(',', $accessForums) . ')', 'IN'));
77
$criteria_post->setSort('p.post_id');
78
$criteria_post->setOrder($order);
79
80
if (!empty($uid)) {
81
    $criteria_count->add(new \Criteria('uid', $uid));
82
    $criteria_post->add(new \Criteria('p.uid', $uid));
83
}
84
85
$join = null;
86
// START irmtfan solve the status issues and specially status = new issue
87
switch ($status) {
88
    case 'pending':
89
        $criteria_count->add(new \Criteria('approved', 0)); // irmtfan add new \Criteria
90
        $criteria_post->add(new \Criteria('p.approved', 0)); // irmtfan add new \Criteria
91
        break;
92
    case 'deleted':
93
        $criteria_count->add(new \Criteria('approved', -1)); // irmtfan add new \Criteria
94
        $criteria_post->add(new \Criteria('p.approved', -1)); // irmtfan add new \Criteria
95
        break;
96
    case 'new':
97
        //$criteria_status_count = new \CriteriaCompo(new \Criteria("post_time", (int)($last_visit), ">"));// irmtfan commented and removed
0 ignored issues
show
Unused Code Comprehensibility introduced by
64% 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...
98
        //$criteria_status_post = new \CriteriaCompo(new \Criteria("p.post_time", (int)($last_visit), ">"));// irmtfan commented and removed
0 ignored issues
show
Unused Code Comprehensibility introduced by
64% 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...
99
        $criteria_count->add(new \Criteria('approved', 1)); // irmtfan uncomment
100
        $criteria_post->add(new \Criteria('p.approved', 1)); // irmtfan uncomment
101
        // following is for 'unread' -- not finished -- irmtfan Now it is finished!
102
        if (empty($GLOBALS['xoopsModuleConfig']['read_mode'])) {
0 ignored issues
show
This if statement is empty and can be removed.

This check looks for the bodies of if statements that have no statements or where all statements have been commented out. This may be the result of changes for debugging or the code may simply be obsolete.

These if bodies can be removed. If you have an empty if but statements in the else branch, consider inverting the condition.

if (rand(1, 6) > 3) {
//print "Check failed";
} else {
    print "Check succeeded";
}

could be turned into

if (rand(1, 6) <= 3) {
    print "Check succeeded";
}

This is much more concise to read.

Loading history...
103
            //$criteria_status_count->add(new \Criteria('approved', 1));// irmtfan commented and removed
0 ignored issues
show
Unused Code Comprehensibility introduced by
74% 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...
104
            //$criteria_status_post->add(new \Criteria('p.approved', 1));// irmtfan commented and removed
0 ignored issues
show
Unused Code Comprehensibility introduced by
74% 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...
105
        } elseif (2 == $GLOBALS['xoopsModuleConfig']['read_mode']) {
106
            // START irmtfan use read_uid to find the unread posts when the user is logged in
107
            $read_uid = is_object($GLOBALS['xoopsUser']) ? $GLOBALS['xoopsUser']->getVar('uid') : 0;
108
            if (!empty($read_uid)) {
109
                $join                 = ' LEFT JOIN ' . $GLOBALS['xoopsDB']->prefix('newbb_reads_topic') . ' AS r ON r.read_item = p.topic_id AND r.uid = ' . $read_uid . ' '; // irmtfan corrected add AS
110
                $criteria_status_post = new \CriteriaCompo();// irmtfan new \Criteria
111
                $criteria_status_post->add(new \Criteria('p.post_id', 'r.`post_id`', '>')); // irmtfan corrected - should use $value='r.``' to render in XOOPS/class/criteria.php
112
                $criteria_status_post->add(new \Criteria('r.read_id', null, 'IS NULL'), 'OR');// irmtfan corrected - should use "IS NULL" to render in XOOPS/class/criteria.php
113
                $criteria_post->add($criteria_status_post); // irmtfan add the status criteria to post criteria - move here
114
                $criteria_count = $criteria_post;// irmtfan criteria count is equal to criteria post - move here
115
            } else {
0 ignored issues
show
This else statement is empty and can be removed.

This check looks for the else branches of if statements that have no statements or where all statements have been commented out. This may be the result of changes for debugging or the code may simply be obsolete.

These else branches can be removed.

if (rand(1, 6) > 3) {
print "Check failed";
} else {
    //print "Check succeeded";
}

could be turned into

if (rand(1, 6) > 3) {
    print "Check failed";
}

This is much more concise to read.

Loading history...
116
            }
117
            // END irmtfan use read_uid to find the unread posts when the user is logged in
118
            //$criteria_status_post->add(new \Criteria("p.approved", 1)); // irmtfan commented and removed
0 ignored issues
show
Unused Code Comprehensibility introduced by
69% 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...
119
            //$criteria_status_count =& $criteria_status_post;
0 ignored issues
show
Unused Code Comprehensibility introduced by
58% 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...
120
        } elseif (1 == $GLOBALS['xoopsModuleConfig']['read_mode']) {
121
            $criteria_count->add(new \Criteria('post_time', (int)$last_visit, '>')); // irmtfan add new \Criteria
122
            $criteria_post->add(new \Criteria('p.post_time', (int)$last_visit, '>')); // irmtfan add new \Criteria
123
            // START irmtfan fix read_mode = 1 bugs - for all users (member and anon)
124
            $topics         = [];
125
            $topic_lastread = newbbGetCookie('LT', true);
126
            if (count($topic_lastread) > 0) {
127
                foreach ($topic_lastread as $id => $time) {
128
                    if ($time > (int)$last_visit) {
129
                        $topics[] = $id;
130
                    }
131
                }
132
            }
133
            if (count($topics) > 0) {
134
                $criteria_count->add(new \Criteria('topic_id', '(' . implode(',', $topics) . ')', 'NOT IN'));
135
                $criteria_post->add(new \Criteria('p.topic_id', '(' . implode(',', $topics) . ')', 'NOT IN'));
136
            }
137
            // END irmtfan fix read_mode = 1 bugs - for all users (member and anon)
138
            //$criteria_status_count->add(new \Criteria("approved", 1));// irmtfan commented and removed
0 ignored issues
show
Unused Code Comprehensibility introduced by
74% 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...
139
            //$criteria_status_post->add(new \Criteria("p.approved", 1));// irmtfan commented and removed
0 ignored issues
show
Unused Code Comprehensibility introduced by
74% 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...
140
        }
141
        break;
142
    default:
143
        $criteria_count->add(new \Criteria('approved', 1)); // irmtfan add new \Criteria
144
        $criteria_post->add(new \Criteria('p.approved', 1)); // irmtfan add new \Criteria
145
        break;
146
}
147
//$criteria_count->add($criteria_status_count); // irmtfan commented and removed
0 ignored issues
show
Unused Code Comprehensibility introduced by
39% 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...
148
//$criteria_post->add($criteria_status_post); // irmtfan commented and removed
149
// END irmtfan solve the status issues and specially status = new issue
150
///** @var Newbb\KarmaHandler $karmaHandler */
151
//$karmaHandler = Newbb\Helper::getInstance()->getHandler('Karma');
152
$user_karma = $karmaHandler->getUserKarma();
153
154
$valid_modes     = ['flat', 'compact'];
155
$viewmode_cookie = newbbGetCookie('V');
156
157
if ('compact' === Request::getString('viewmode', '', 'GET')) {
158
    newbbSetCookie('V', 'compact', $forumCookie['expire']);
159
}
160
161
$viewmode = Request::getString('viewmode', (!empty($viewmode_cookie) ? $viewmode_cookie : (@$valid_modes[$GLOBALS['xoopsModuleConfig']['view_mode'] - 1])), 'GET');
162
$viewmode = in_array($viewmode, $valid_modes) ? $viewmode : $valid_modes[0];
163
164
$postCount = $postHandler->getPostCount($criteria_count, $join);// irmtfan add join for read_mode = 2
165
$posts     = $postHandler->getPostsByLimit($criteria_post, $post_perpage, $start, $join);// irmtfan add join for read_mode = 2
166
167
$poster_array = [];
168
if (count($posts) > 0) {
169
    foreach (array_keys($posts) as $id) {
170
        /** @var Newbb\Post[] $posts */
171
        $poster_array[$posts[$id]->getVar('uid')] = 1;
172
    }
173
}
174
175
$xoops_pagetitle                = $xoopsModule->getVar('name') . ' - ' . _MD_NEWBB_VIEWALLPOSTS;
176
$xoopsOption['xoops_pagetitle'] = $xoops_pagetitle;
177
$xoopsOption['template_main']   = 'newbb_viewpost.tpl';
178
179
require_once $GLOBALS['xoops']->path('header.php');
180
require_once __DIR__ . '/include/functions.time.php';
181
require_once __DIR__ . '/include/functions.render.php';
182
183
//global $xoTheme;
0 ignored issues
show
Unused Code Comprehensibility introduced by
75% 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...
184
//$xoTheme->addScript('/Frameworks/textsanitizer/xoops.js');
185
186
if (!empty($forum_id)) {
187
    if (!$forumHandler->getPermission($forumObject, 'view')) {
188
        redirect_header(XOOPS_URL . '/index.php', 2, _MD_NEWBB_NORIGHTTOACCESS);
0 ignored issues
show
The constant XOOPS_URL was not found. Maybe you did not declare it correctly or list all dependencies?
Loading history...
The function redirect_header was not found. Maybe you did not declare it correctly or list all dependencies? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

188
        /** @scrutinizer ignore-call */ 
189
        redirect_header(XOOPS_URL . '/index.php', 2, _MD_NEWBB_NORIGHTTOACCESS);
Loading history...
189
    }
190
    if ($forumObject->getVar('parent_forum')) {
191
        $parent_forumObject = $forumHandler->get($forumObject->getVar('parent_forum'), ['forum_name']);
192
        $parentforum        = [
193
            'id'   => $forumObject->getVar('parent_forum'),
194
            'name' => $parent_forumObject->getVar('forum_name')
195
        ];
196
        unset($parent_forumObject);
197
        $xoopsTpl->assign_by_ref('parentforum', $parentforum);
198
    }
199
    $xoopsTpl->assign('forum_name', $forumObject->getVar('forum_name'));
200
    $xoopsTpl->assign('forum_moderators', $forumObject->dispForumModerators());
201
202
    $xoops_pagetitle = $forumObject->getVar('forum_name') . ' - ' . _MD_NEWBB_VIEWALLPOSTS . ' [' . $xoopsModule->getVar('name') . ']';
203
    $xoopsTpl->assign('forum_id', $forumObject->getVar('forum_id'));
204
    // irmtfan new method
205
    if (!empty($GLOBALS['xoopsModuleConfig']['rss_enable'])) {
206
        $xoopsTpl->assign('xoops_module_header', '
207
            <link rel="alternate" type="application/xml+rss" title="' . $xoopsModule->getVar('name') . '-' . $forumObject->getVar('forum_name') . '" href="' . XOOPS_URL . '/modules/' . $xoopsModule->getVar('dirname') . '/rss.php?f=' . $forum_id . '" />
208
            ' . @$xoopsTpl->get_template_vars('xoops_module_header'));
209
    }
210
} elseif (!empty($GLOBALS['xoopsModuleConfig']['rss_enable'])) {
211
    $xoopsTpl->assign('xoops_module_header', '
212
        <link rel="alternate" type="application/xml+rss" title="' . $xoopsModule->getVar('name') . '" href="' . XOOPS_URL . '/modules/' . $xoopsModule->getVar('dirname') . '/rss.php" />
213
    ' . @$xoopsTpl->get_template_vars('xoops_module_header'));
214
}
215
// irmtfan remove and move to footer.php
0 ignored issues
show
Unused Code Comprehensibility introduced by
36% 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...
216
//$xoopsTpl->assign('xoops_module_header', $xoops_module_header);
217
$xoopsTpl->assign('xoops_pagetitle', $xoops_pagetitle);
218
// irmtfan - remove icon_path and use newbbDisplayImage
219
$xoopsTpl->assign('anonym_avatar', newbbDisplayImage('anonym'));
220
$userid_array = [];
221
if (count($poster_array) > 0) {
222
    /** @var \XoopsMembershipHandler $memberHandler */
223
    $memberHandler = xoops_getHandler('member');
0 ignored issues
show
The function xoops_getHandler was not found. Maybe you did not declare it correctly or list all dependencies? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

223
    $memberHandler = /** @scrutinizer ignore-call */ xoops_getHandler('member');
Loading history...
224
    $userid_array  = array_keys($poster_array);
225
    $user_criteria = '(' . implode(',', $userid_array) . ')';
226
    $users         = $memberHandler->getUsers(new \Criteria('uid', $user_criteria, 'IN'), true);
227
} else {
228
    $user_criteria = '';
229
    $users         = null;
230
}
231
232
$online = [];
233
234
if ($GLOBALS['xoopsModuleConfig']['wol_enabled']) {
235
    if (!empty($user_criteria)) {
236
        //        /** @var Newbb\OnlineHandler $onlineHandler */
237
        //        $onlineHandler = Newbb\Helper::getInstance()->getHandler('Online');
0 ignored issues
show
Unused Code Comprehensibility introduced by
57% 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...
238
        $onlineHandler->init($forum_id);
239
    }
240
}
241
242
$viewtopic_users = [];
243
244
if (count($userid_array) > 0) {
245
//    require $GLOBALS['xoops']->path('modules/' . $xoopsModule->getVar('dirname', 'n') . '/class/user.php');
0 ignored issues
show
Unused Code Comprehensibility introduced by
63% 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...
246
    $userHandler         = new Newbb\UserHandler($GLOBALS['xoopsModuleConfig']['groupbar_enabled'], $GLOBALS['xoopsModuleConfig']['wol_enabled']);
247
    $userHandler->users  = $users;
248
    $userHandler->online = $online;
249
    $viewtopic_users     = $userHandler->getUsers();
250
}
251
252
$pn = 0;
253
//$topicHandler = Newbb\Helper::getInstance()->getHandler('Topic');
0 ignored issues
show
Unused Code Comprehensibility introduced by
60% 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...
254
static $suspension = [];
255
foreach (array_keys($posts) as $id) {
256
    ++$pn;
257
258
    /** @var Newbb\Post $post */
259
    $post       = $posts[$id];
260
    $post_title = $post->getVar('subject');
261
262
    if ($posticon = $post->getVar('icon')) {
263
        $post_image = '<a name="' . $post->getVar('post_id') . '"><img src="' . XOOPS_URL . '/images/subject/' . htmlspecialchars($posticon, ENT_QUOTES | ENT_HTML5) . '" alt="" /></a>';
264
    } else {
265
        $post_image = '<a name="' . $post->getVar('post_id') . '"><img src="' . XOOPS_URL . '/images/icons/no_posticon.gif" alt="" /></a>';
266
    }
267
    $poster = [
268
        'uid'  => 0,
269
        'name' => $post->getVar('poster_name') ?: $myts->htmlSpecialChars($GLOBALS['xoopsConfig']['anonymous']),
270
        'link' => $post->getVar('poster_name') ?: $myts->htmlSpecialChars($GLOBALS['xoopsConfig']['anonymous'])
271
    ];
272
    if ($post->getVar('uid') > 0 && isset($viewtopic_users[$post->getVar('uid')])) {
273
        $poster = $viewtopic_users[$post->getVar('uid')];
274
    }
275
    if ($isAdmin || $post->checkIdentity()) {
276
        $post_text       = $post->getVar('post_text');
277
        $post_attachment = $post->displayAttachment();
278
    } elseif ($GLOBALS['xoopsModuleConfig']['enable_karma'] && $post->getVar('post_karma') > $user_karma) {
279
        $post_text       = "<div class='karma'>" . sprintf(_MD_NEWBB_KARMA_REQUIREMENT, $user_karma, $post->getVar('post_karma')) . '</div>';
280
        $post_attachment = '';
281
    } elseif ($GLOBALS['xoopsModuleConfig']['allow_require_reply'] && $post->getVar('require_reply')) {
282
        $post_text       = "<div class='karma'>" . _MD_NEWBB_REPLY_REQUIREMENT . '</div>';
283
        $post_attachment = '';
284
    } else {
285
        $post_text       = $post->getVar('post_text');
286
        $post_attachment = $post->displayAttachment();
287
    }
288
289
    $thread_buttons = [];
290
291
    if ($GLOBALS['xoopsModuleConfig']['enable_permcheck']) {
292
        if (!isset($suspension[$post->getVar('forum_id')])) {
293
            //            /** @var Newbb\ModerateHandler $moderateHandler */
294
            //            $moderateHandler                       = Newbb\Helper::getInstance()->getHandler('Moderate');
0 ignored issues
show
Unused Code Comprehensibility introduced by
57% 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...
295
            $suspension[$post->getVar('forum_id')] = !$moderateHandler->verifyUser(-1, '', $post->getVar('forum_id'));
296
        }
297
298
        if ($isAdmin
299
            || (!$suspension[$post->getVar('forum_id')] && $post->checkIdentity()
300
                && $post->checkTimelimit('delete_timelimit'))) {
301
            $thread_buttons['delete']['image'] = newbbDisplayImage('p_delete', _DELETE);
0 ignored issues
show
The constant _DELETE was not found. Maybe you did not declare it correctly or list all dependencies?
Loading history...
302
            $thread_buttons['delete']['link']  = XOOPS_URL . '/modules/' . $xoopsModule->getVar('dirname') . '/delete.php?forum=' . $post->getVar('forum_id') . '&amp;topic_id=' . $post->getVar('topic_id');
303
            $thread_buttons['delete']['name']  = _DELETE;
304
        }
305
        if ($isAdmin
306
            || !$suspension[$post->getVar('forum_id')] && $post->checkIdentity()
307
               && $post->checkTimelimit('edit_timelimit')) {
308
            $thread_buttons['edit']['image'] = newbbDisplayImage('p_edit', _EDIT);
0 ignored issues
show
The constant _EDIT was not found. Maybe you did not declare it correctly or list all dependencies?
Loading history...
309
            $thread_buttons['edit']['link']  = XOOPS_URL . '/modules/' . $xoopsModule->getVar('dirname') . '/edit.php?forum=' . $post->getVar('forum_id') . '&amp;topic_id=' . $post->getVar('topic_id');
310
            $thread_buttons['edit']['name']  = _EDIT;
311
        }
312
        if (is_object($GLOBALS['xoopsUser']) && !$suspension[$post->getVar('forum_id')]) {
313
            $thread_buttons['reply']['image'] = newbbDisplayImage('p_reply', _MD_NEWBB_REPLY);
314
            $thread_buttons['reply']['link']  = XOOPS_URL . '/modules/' . $xoopsModule->getVar('dirname') . '/reply.php?forum=' . $post->getVar('forum_id') . '&amp;topic_id=' . $post->getVar('topic_id');
315
            $thread_buttons['reply']['name']  = _MD_NEWBB_REPLY;
316
317
            $thread_buttons['quote']['image'] = newbbDisplayImage('p_quote', _MD_NEWBB_QUOTE);
318
            $thread_buttons['quote']['link']  = XOOPS_URL . '/modules/' . $xoopsModule->getVar('dirname') . '/reply.php?forum=' . $post->getVar('forum_id') . '&amp;topic_id=' . $post->getVar('topic_id') . '&amp;quotedac=1';
319
            $thread_buttons['quote']['name']  = _MD_NEWBB_QUOTE;
320
        }
321
    } else {
322
        $thread_buttons['delete']['image'] = newbbDisplayImage('p_delete', _DELETE);
323
        $thread_buttons['delete']['link']  = XOOPS_URL . '/modules/' . $xoopsModule->getVar('dirname') . '/delete.php?forum=' . $post->getVar('forum_id') . '&amp;topic_id=' . $post->getVar('topic_id');
324
        $thread_buttons['delete']['name']  = _DELETE;
325
        $thread_buttons['edit']['image']   = newbbDisplayImage('p_edit', _EDIT);
326
        $thread_buttons['edit']['link']    = XOOPS_URL . '/modules/' . $xoopsModule->getVar('dirname') . '/edit.php?forum=' . $post->getVar('forum_id') . '&amp;topic_id=' . $post->getVar('topic_id');
327
        $thread_buttons['edit']['name']    = _EDIT;
328
        $thread_buttons['reply']['image']  = newbbDisplayImage('p_reply', _MD_NEWBB_REPLY);
329
        $thread_buttons['reply']['link']   = XOOPS_URL . '/modules/' . $xoopsModule->getVar('dirname') . '/reply.php?forum=' . $post->getVar('forum_id') . '&amp;topic_id=' . $post->getVar('topic_id');
330
        $thread_buttons['reply']['name']   = _MD_NEWBB_REPLY;
331
    }
332
333
    if (!$isAdmin && $GLOBALS['xoopsModuleConfig']['reportmod_enabled']) {
334
        $thread_buttons['report']['image'] = newbbDisplayImage('p_report', _MD_NEWBB_REPORT);
335
        $thread_buttons['report']['link']  = XOOPS_URL . '/modules/' . $xoopsModule->getVar('dirname') . '/report.php?forum=' . $post->getVar('forum_id') . '&amp;topic_id=' . $post->getVar('topic_id');
336
        $thread_buttons['report']['name']  = _MD_NEWBB_REPORT;
337
    }
338
    $thread_action = [];
339
340
    $xoopsTpl->append('posts', [
341
        'post_id'         => $post->getVar('post_id'),
342
        'topic_id'        => $post->getVar('topic_id'),
343
        'forum_id'        => $post->getVar('forum_id'),
344
        'post_date'       => newbbFormatTimestamp($post->getVar('post_time')),
345
        'post_image'      => $post_image,
346
        'post_title'      => $post_title,
347
        'post_text'       => $post_text,
348
        'post_attachment' => $post_attachment,
349
        'post_edit'       => $post->displayPostEdit(),
350
        'post_no'         => $start + $pn,
351
        'post_signature'  => $post->getVar('attachsig') ? @$poster['signature'] : '',
352
        //                                 'poster_ip'       => ($isAdmin && $GLOBALS['xoopsModuleConfig']['show_ip']) ? long2ip($post->getVar('poster_ip')) : '',
0 ignored issues
show
Unused Code Comprehensibility introduced by
69% 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...
353
        'poster_ip'       => ($isAdmin && $GLOBALS['xoopsModuleConfig']['show_ip']) ? $post->getVar('poster_ip') : '',
354
        'thread_action'   => $thread_action,
355
        'thread_buttons'  => $thread_buttons,
356
        'poster'          => $poster
357
    ]);
358
359
    unset($thread_buttons, $poster);
360
}
361
unset($viewtopic_users, $forums);
362
363
if (!empty($GLOBALS['xoopsModuleConfig']['show_jump'])) {
364
    require_once __DIR__ . '/include/functions.forum.php';
365
    $xoopsTpl->assign('forum_jumpbox', newbbMakeJumpbox($forum_id));
366
}
367
368
if ($postCount > $post_perpage) {
369
    include $GLOBALS['xoops']->path('class/pagenav.php');
370
    $nav = new \XoopsPageNav($postCount, $post_perpage, $start, 'start', 'forum=' . $forum_id . '&amp;viewmode=' . $viewmode . '&amp;status=' . $status . '&amp;uid=' . $uid . '&amp;order=' . $order . '&amp;mode=' . $mode);
0 ignored issues
show
The type XoopsPageNav was not found. Maybe you did not declare it correctly or list all dependencies?

The issue could also be caused by a filter entry in the build configuration. If the path has been excluded in your configuration, e.g. excluded_paths: ["lib/*"], you can move it to the dependency path list as follows:

filter:
    dependency_paths: ["lib/*"]

For further information see https://scrutinizer-ci.com/docs/tools/php/php-scrutinizer/#list-dependency-paths

Loading history...
371
    //if (isset($GLOBALS['xoopsModuleConfig']['do_rewrite'])) $nav->url = formatURL(Request::getString('SERVER_NAME', '', 'SERVER')) . $nav->url;
0 ignored issues
show
Unused Code Comprehensibility introduced by
66% 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...
372
    if ('select' === $GLOBALS['xoopsModuleConfig']['pagenav_display']) {
373
        $navi = $nav->renderSelect();
374
    } elseif ('image' === $GLOBALS['xoopsModuleConfig']['pagenav_display']) {
375
        $navi = $nav->renderImageNav(4);
376
    } else {
377
        $navi = $nav->renderNav(4);
378
    }
379
380
    $xoopsTpl->assign('pagenav', $navi);
381
} else {
382
    $xoopsTpl->assign('pagenav', '');
383
}
384
385
$xoopsTpl->assign('lang_forum_index', sprintf(_MD_NEWBB_FORUMINDEX, htmlspecialchars($GLOBALS['xoopsConfig']['sitename'], ENT_QUOTES)));
386
387
switch ($status) {
388
    case 'active':
389
        $lang_title = _MD_NEWBB_VIEWALLPOSTS . ' [' . _MD_NEWBB_TYPE_ADMIN . ']';
390
        break;
391
    case 'pending':
392
        $lang_title = _MD_NEWBB_VIEWALLPOSTS . ' [' . _MD_NEWBB_TYPE_PENDING . ']';
393
        break;
394
    case 'deleted':
395
        $lang_title = _MD_NEWBB_VIEWALLPOSTS . ' [' . _MD_NEWBB_TYPE_DELETED . ']';
396
        break;
397
    case 'new':
398
        $lang_title = _MD_NEWBB_NEWPOSTS;
399
        break;
400
    default:
401
        $lang_title = _MD_NEWBB_VIEWALLPOSTS;
402
        break;
403
}
404
if ($uid > 0) {
405
    $lang_title .= ' (' . XoopsUser::getUnameFromId($uid) . ')';
0 ignored issues
show
The type XoopsUser was not found. Maybe you did not declare it correctly or list all dependencies?

The issue could also be caused by a filter entry in the build configuration. If the path has been excluded in your configuration, e.g. excluded_paths: ["lib/*"], you can move it to the dependency path list as follows:

filter:
    dependency_paths: ["lib/*"]

For further information see https://scrutinizer-ci.com/docs/tools/php/php-scrutinizer/#list-dependency-paths

Loading history...
406
}
407
$xoopsTpl->assign('lang_title', $lang_title);
408
// irmtfan up to p_up
409
$xoopsTpl->assign('p_up', newbbDisplayImage('up', _MD_NEWBB_TOP));
410
$xoopsTpl->assign('groupbar_enable', $GLOBALS['xoopsModuleConfig']['groupbar_enabled']);
411
$xoopsTpl->assign('anonymous_prefix', $GLOBALS['xoopsModuleConfig']['anonymous_prefix']);
412
$xoopsTpl->assign('down', newbbDisplayImage('down', _MD_NEWBB_BOTTOM));
413
414
$all_link       = XOOPS_URL . '/modules/' . $xoopsModule->getVar('dirname') . '/viewpost.php?forum=' . $forum_id . "&amp;start=$start";
415
$post_link      = XOOPS_URL . '/modules/' . $xoopsModule->getVar('dirname') . '/viewpost.php?forum=' . $forum_id;
416
$newpost_link   = XOOPS_URL . '/modules/' . $xoopsModule->getVar('dirname') . '/viewpost.php?forum=' . $forum_id . '&amp;status=new';
417
$digest_link    = XOOPS_URL . '/modules/' . $xoopsModule->getVar('dirname') . '/viewpost.php?forum=' . $forum_id . "&amp;start=$start&amp;status=digest";
418
$unreplied_link = XOOPS_URL . '/modules/' . $xoopsModule->getVar('dirname') . '/viewpost.php?forum=' . $forum_id . "&amp;start=$start&amp;status=unreplied";
419
$unread_link    = XOOPS_URL . '/modules/' . $xoopsModule->getVar('dirname') . '/viewpost.php?forum=' . $forum_id . "&amp;start=$start&amp;status=unread";
420
421
$xoopsTpl->assign('all_link', $all_link);
422
$xoopsTpl->assign('post_link', $post_link);
423
$xoopsTpl->assign('newpost_link', $newpost_link);
424
$xoopsTpl->assign('digest_link', $digest_link);
425
$xoopsTpl->assign('unreplied_link', $unreplied_link);
426
$xoopsTpl->assign('unread_link', $unread_link);
427
428
$viewmode_options = [];
429
if ('DESC' === $order) {
430
    $viewmode_options[] = [
431
        'link'  => XOOPS_URL . '/modules/' . $xoopsModule->getVar('dirname') . '/viewpost.php?viewmode=flat&amp;order=ASC&amp;forum=' . $forum_id,
432
        'title' => _OLDESTFIRST
0 ignored issues
show
The constant _OLDESTFIRST was not found. Maybe you did not declare it correctly or list all dependencies?
Loading history...
433
    ];
434
} else {
435
    $viewmode_options[] = [
436
        'link'  => XOOPS_URL . '/modules/' . $xoopsModule->getVar('dirname') . '/viewpost.php?viewmode=flat&amp;order=DESC&amp;forum=' . $forum_id,
437
        'title' => _NEWESTFIRST
0 ignored issues
show
The constant _NEWESTFIRST was not found. Maybe you did not declare it correctly or list all dependencies?
Loading history...
438
    ];
439
}
440
441
//$xoopsTpl->assign('viewmode_compact', ($viewmode=="compact")?1:0);
0 ignored issues
show
Unused Code Comprehensibility introduced by
84% 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...
442
$xoopsTpl->assign_by_ref('viewmode_options', $viewmode_options);
443
$xoopsTpl->assign('menumode', $menumode);
444
$xoopsTpl->assign('menumode_other', $menumode_other);
445
446
$xoopsTpl->assign('viewer_level', $isAdmin ? 2 : is_object($GLOBALS['xoopsUser']));
447
$xoopsTpl->assign('uid', $uid);
448
$xoopsTpl->assign('mode', $mode);
449
$xoopsTpl->assign('status', $status);
450
// irmtfan move to footer.php
451
require_once __DIR__ . '/footer.php';
452
include $GLOBALS['xoops']->path('footer.php');
453