Passed
Push — master ( 8f67b7...dd6e46 )
by Michael
03:09
created

viewtopic.php (60 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
// irmtfan enhance include
32
33
use Xmf\Request;
0 ignored issues
show
The type Xmf\Request 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...
34
use XoopsModules\Newbb;
35
use XoopsModules\Xoopspoll;
0 ignored issues
show
The type XoopsModules\Xoopspoll 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...
36
37
require_once __DIR__ . '/header.php';
38
$xoopsLogger->startTime('newBB_viewtopic');
39
require_once __DIR__ . '/include/functions.read.php';
40
require_once __DIR__ . '/include/functions.render.php';
41
xoops_loadLanguage('user');
0 ignored issues
show
The function xoops_loadLanguage 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

41
/** @scrutinizer ignore-call */ 
42
xoops_loadLanguage('user');
Loading history...
42
43
/*Build the page query*/
44
$query_vars  = ['post_id', 'topic_id', 'status', 'order', 'start', 'move', 'mode'];
45
$query_array = [];
46
foreach ($query_vars as $var) {
47
    if (Request::getString($var, '', 'GET')) {
48
        $query_array[$var] = "{$var}=" . Request::getString($var, '', 'GET');
49
    }
50
}
51
$page_query = htmlspecialchars(implode('&', array_values($query_array)), ENT_QUOTES | ENT_HTML5);
52
unset($query_array);
53
54
$forum_id = Request::getInt('forum', 0, 'GET');
55
$read     = (Request::getString('read', '', 'GET')
56
             && 'new' === Request::getString('read', '', 'GET')) ? Request::getString('read', '', 'GET') : '';
57
$topic_id = Request::getInt('topic_id', 0, 'GET'); // isset($_GET['topic_id']) ? (int)($_GET['topic_id']) : 0;
0 ignored issues
show
Unused Code Comprehensibility introduced by
79% 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...
58
$post_id  = Request::getInt('post_id', 0, 'GET'); // !empty($_GET['post_id']) ? (int)($_GET['post_id']) : 0;
0 ignored issues
show
Unused Code Comprehensibility introduced by
80% 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...
59
$move     = strtolower(Request::getString('move', '', 'GET')); // isset($_GET['move']) ? strtolower($_GET['move']) : '';
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...
60
$start    = Request::getInt('start', 0, 'GET'); // !empty($_GET['start']) ? (int)($_GET['start']) : 0;
0 ignored issues
show
Unused Code Comprehensibility introduced by
80% 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...
61
$status   = (Request::getString('status', '', 'GET')
62
             && in_array(Request::getString('status', '', 'GET'), ['active', 'pending', 'deleted'], true)) ? Request::getString('status', '', 'GET') : '';
63
$mode     = Request::getInt('mode', (!empty($status) ? 2 : 0), 'GET'); // !empty($_GET['mode']) ? (int)($_GET['mode']) : (!empty($status) ? 2 : 0);
0 ignored issues
show
Unused Code Comprehensibility introduced by
77% 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...
64
$order    = (Request::getString('order', '', 'GET')
65
             && in_array(Request::getString('order', '', 'GET'), ['ASC', 'DESC'], true)) ? Request::getString('order', '', 'GET') : '';
66
67
if ('' === $order) {
68
    if (is_object($GLOBALS['xoopsUser']) && $GLOBALS['xoopsUser']->isActive()) {
69
        $order = (1 == $GLOBALS['xoopsUser']->getVar('uorder')) ? 'DESC' : 'ASC';
70
    } else {
71
        $order = (1 == $GLOBALS['xoopsConfig']['com_order']) ? 'DESC' : 'ASC';
72
    }
73
}
74
75
if (!$topic_id && !$post_id) {
76
    $redirect = empty($forum_id) ? XOOPS_URL . '/modules/' . $xoopsModule->getVar('dirname') . '/index.php' : XOOPS_URL . '/modules/' . $xoopsModule->getVar('dirname') . "/viewforum.php?forum={$forum_id}";
0 ignored issues
show
The constant XOOPS_URL was not found. Maybe you did not declare it correctly or list all dependencies?
Loading history...
77
    redirect_header($redirect, 2, _MD_NEWBB_ERRORTOPIC);
0 ignored issues
show
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

77
    /** @scrutinizer ignore-call */ 
78
    redirect_header($redirect, 2, _MD_NEWBB_ERRORTOPIC);
Loading history...
78
}
79
80
///** @var Newbb\TopicHandler $topicHandler */
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...
81
//$topicHandler = Newbb\Helper::getInstance()->getHandler('Topic');
82
if (!empty($post_id)) {
83
    $topicObject = $topicHandler->getByPost($post_id);
84
    $topic_id    = $topicObject->getVar('topic_id');
85
} elseif (!empty($move)) {
86
    $topicObject = $topicHandler->getByMove($topic_id, ('prev' === $move) ? -1 : 1, $forum_id);
87
    $topic_id    = $topicObject->getVar('topic_id');
88
} else {
89
    $topicObject = $topicHandler->get($topic_id);
90
}
91
92
if (!is_object($topicObject) || !$topic_id = $topicObject->getVar('topic_id')) {
93
    $redirect = empty($forum_id) ? XOOPS_URL . '/modules/' . $xoopsModule->getVar('dirname') . '/index.php' : XOOPS_URL . '/modules/' . $xoopsModule->getVar('dirname') . "/viewforum.php?forum={$forum_id}";
94
    redirect_header($redirect, 2, _MD_NEWBB_ERRORTOPIC);
95
}
96
$forum_id = $topicObject->getVar('forum_id');
97
///** @var Newbb\ForumHandler $forumHandler */
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...
98
//$forumHandler = Newbb\Helper::getInstance()->getHandler('Forum');
99
$forumObject = $forumHandler->get($forum_id);
100
101
$isAdmin = newbbIsAdmin($forumObject);
102
103
if ((!$isAdmin && $topicObject->getVar('approved') < 0) || (!$forumHandler->getPermission($forumObject))
104
    || (!$topicHandler->getPermission($forumObject, $topicObject->getVar('topic_status'), 'view'))) {
105
    redirect_header(XOOPS_URL . '/modules/' . $xoopsModule->getVar('dirname') . '/viewforum.php?forum=' . $forum_id, 2, _MD_NEWBB_NORIGHTTOVIEW);
106
}
107
108
// START irmtfan - find if topic is read or unread - for all users (member and anon)
109
$topic_is_unread = true;
110
/* if $GLOBALS['xoopsModuleConfig']["read_mode"] === 0 ||
0 ignored issues
show
Unused Code Comprehensibility introduced by
53% 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...
111
 * never read && $GLOBALS['xoopsModuleConfig']["read_mode"] === 1 ||
112
 * never read && $GLOBALS['xoopsModuleConfig']["read_mode"] === 2 ||
113
 * => $topic_last_post_time_or_id_read = NULL
114
 * if !$GLOBALS['xoopsUser'] && $GLOBALS['xoopsModuleConfig']["read_mode"] === 2
115
 * => $topic_last_post_time_or_id_read = false
116
 * if !$GLOBALS['xoopsUser'] && $GLOBALS['xoopsModuleConfig']["read_mode"] === 1
117
 * => $topic_last_post_time_or_id_read = lastview(newbb_IP{ip}LT)
118
*/
119
$topic_last_post_time_or_id_read = newbbGetRead('topic', $topic_id);
120
if (!empty($topic_last_post_time_or_id_read)) {
121
    if (1 == $GLOBALS['xoopsModuleConfig']['read_mode']) {
122
        //        $postHandler     = Newbb\Helper::getInstance()->getHandler('Post');
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...
123
        $postObject      = $postHandler->get($topicObject->getVar('topic_last_post_id'));
124
        $topic_is_unread = ($topic_last_post_time_or_id_read < $postObject->getVar('post_time'));
125
    }
126
    if (2 == $GLOBALS['xoopsModuleConfig']['read_mode']) {
127
        $topic_is_unread = ($topic_last_post_time_or_id_read < $topicObject->getVar('topic_last_post_id'));
128
        // hack jump to last post read if post_id is empty - is there any better way?
129
        if (empty($post_id) && $topic_is_unread
130
            && !empty($GLOBALS['xoopsModuleConfig']['jump_to_topic_last_post_read_enabled'])) {
131
            header('Location: ' . Request::getString('REQUEST_URI', '', 'SERVER') . '&post_id=' . $topic_last_post_time_or_id_read);
132
        }
133
    }
134
}
135
// END irmtfan - find if topic is read or unread - for all users (member and anon)
136
137
/* Only admin has access to admin mode */
138
if (!$isAdmin) {
139
    $status = '';
140
    $mode   = 0;
141
}
142
143
if (!empty($GLOBALS['xoopsModuleConfig']['enable_karma'])) {
144
    //    /** @var Newbb\KarmaHandler $karmaHandler */
145
    //    $karmaHandler = Newbb\Helper::getInstance()->getHandler('Karma');
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...
146
    $user_karma = $karmaHandler->getUserKarma();
147
}
148
149
//$viewmode = "flat";
0 ignored issues
show
Unused Code Comprehensibility introduced by
50% 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...
150
151
$total_posts = $topicHandler->getPostCount($topicObject, $status);
152
$postsArray  = [];
153
$postsArray  = $topicHandler->getAllPosts($topicObject, $order, $GLOBALS['xoopsModuleConfig']['posts_per_page'], $start, $post_id, $status);
154
155
//irmtfan - increment topic_views only if the topic is unread
156
if ($topic_is_unread) {
157
    $topicObject->incrementCounter();
158
}
159
newbbSetRead('topic', $topic_id, $topicObject->getVar('topic_last_post_id'));
160
161
$GLOBALS['xoopsOption']['template_main'] = 'newbb_viewtopic.tpl';
162
// irmtfan remove and move to footer.php
163
//$xoopsOption['xoops_module_header']= $xoops_module_header;
164
// irmtfan include header.php after defining $xoopsOption['template_main']
165
require_once $GLOBALS['xoops']->path('header.php');
166
//$xoopsTpl->assign('xoops_module_header', $xoops_module_header);
0 ignored issues
show
Unused Code Comprehensibility introduced by
53% 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...
167
// irmtfan new method
168
if (!empty($GLOBALS['xoopsModuleConfig']['rss_enable'])) {
169
    $xoopsTpl->assign('xoops_module_header', '
170
    <link rel="alternate" type="application/rss+xml" title="' . $xoopsModule->getVar('name') . '-' . $forumObject->getVar('forum_name') . '" href="' . XOOPS_URL . '/modules/' . $xoopsModule->getVar('dirname') . '/rss.php?f=' . $forumObject->getVar('forum_id') . '" />
171
    ' . @$xoopsTpl->get_template_vars('xoops_module_header'));
172
}
173
174
if ($GLOBALS['xoopsModuleConfig']['wol_enabled']) {
175
    /** @var Newbb\OnlineHandler $onlineHandler */
176
    $onlineHandler = Newbb\Helper::getInstance()->getHandler('Online');
177
    $onlineHandler->init($forumObject, $topicObject);
178
    $xoopsTpl->assign('online', $onlineHandler->showOnline());
179
}
180
$xoopsTpl->assign('parentforum', $forumHandler->getParents($forumObject));
181
// irmtfan - remove icon_path and use newbbDisplayImage
182
$xoopsTpl->assign('anonym_avatar', newbbDisplayImage('anonym'));
183
184
// START irmtfan improve infobox
185
$infobox         = [];
186
$infobox['show'] = (int)$GLOBALS['xoopsModuleConfig']['show_infobox']; //4.05
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...
187
// irmtfan removed then define after array
188
//$xoopsTpl->assign('infobox', $infobox); //4.05
189
$iconHandler = newbbGetIconHandler(); // can be use in the follwing codes in this file
190
191
if ($infobox['show'] > 0) {
192
    // irmtfan - remove icon_path and use newbbDisplayImage
193
    $infobox['icon'] = [
194
        'expand'   => $iconHandler->getImageSource('less'),
195
        'collapse' => $iconHandler->getImageSource('more')
196
    ];
197
    if (1 == $infobox['show']) {
198
        $infobox['style'] = 'none';        //irmtfan move semicolon
199
        $infobox['alt']   = _MD_NEWBB_SEEUSERDATA;
200
        $infobox['src']   = 'more';
201
    } else {
202
        $infobox['style'] = 'block';        //irmtfan move semicolon
203
        $infobox['alt']   = _MD_NEWBB_HIDEUSERDATA;
204
        $infobox['src']   = 'less';
205
    }
206
    $infobox['displayImage'] = newbbDisplayImage($infobox['src'], $infobox['alt']);
207
}
208
$xoopsTpl->assign('infobox', $infobox);
209
// END irmtfan improve infobox
210
211
$xoopsTpl->assign([
212
                      'topic_title'    => '<a href="' . XOOPS_URL . '/modules/' . $xoopsModule->getVar('dirname', 'n') . '/viewtopic.php?topic_id=' . $topic_id . '">' . $topicObject->getFullTitle() . '</a>',
213
                      'forum_name'     => $forumObject->getVar('forum_name'),
214
                      'lang_nexttopic' => _MD_NEWBB_NEXTTOPIC,
215
                      'lang_prevtopic' => _MD_NEWBB_PREVTOPIC,
216
                      'topic_status'   => $topicObject->getVar('topic_status')
217
                  ]);
218
219
//$categoryHandler = Newbb\Helper::getInstance()->getHandler('Category');
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...
220
$categoryObject = $categoryHandler->get($forumObject->getVar('cat_id'), ['cat_title']);
221
$xoopsTpl->assign('category', ['id' => $forumObject->getVar('cat_id'), 'title' => $categoryObject->getVar('cat_title')]);
222
223
$xoopsTpl->assign('post_id', $post_id);
224
$xoopsTpl->assign('topic_id', $topic_id);
225
$xoopsTpl->assign('forum_id', $forum_id);
226
227
$order_current = ('DESC' === $order) ? 'DESC' : 'ASC';
228
$xoopsTpl->assign('order_current', $order_current);
229
230
$t_new   = newbbDisplayImage('t_new', _MD_NEWBB_POSTNEW);
231
$t_reply = newbbDisplayImage('t_reply', _MD_NEWBB_REPLY);
232
// irmtfan show topic status if show reg is 0 and revise forum_post_or_register
233
if ($topicHandler->getPermission($forumObject, $topicObject->getVar('topic_status'), 'post')) {
234
    $xoopsTpl->assign('forum_post', '<a href="' . XOOPS_URL . '/modules/' . $xoopsModule->getVar('dirname', 'n') . '/newtopic.php?forum=' . $forum_id . '"> ' . $t_new . '</a>');
235
} else {
236
    if ($topicObject->getVar('topic_status')) {
237
        $xoopsTpl->assign('topic_lock', _MD_NEWBB_TOPICLOCKED);
238
    }
239
    if (!is_object($GLOBALS['xoopsUser']) && !empty($GLOBALS['xoopsModuleConfig']['show_reg'])) {
240
        $xoopsTpl->assign('forum_register', '<a href="' . XOOPS_URL . '/user.php?xoops_redirect=' . htmlspecialchars($xoopsRequestUri, ENT_QUOTES | ENT_HTML5) . '">' . _MD_NEWBB_REGTOPOST . '</a>');
241
    }
242
}
243
// irmtfan for backward compatibility assign forum_post_or_register smarty again.
244
$xoopsTpl->assign('forum_post_or_register', @$xoopsTpl->get_template_vars('forum_post') . @$xoopsTpl->get_template_vars('forum_register') . @$xoopsTpl->get_template_vars('topic_lock'));
245
246
if ($topicHandler->getPermission($forumObject, $topicObject->getVar('topic_status'), 'reply')) {
247
    $xoopsTpl->assign('forum_reply', '<a href="' . XOOPS_URL . '/modules/' . $xoopsModule->getVar('dirname', 'n') . '/reply.php?topic_id=' . $topic_id . '"> ' . $t_reply . '</a>');
248
}
249
250
$poster_array  = [];
251
$require_reply = false;
252
/** @var Post $eachpost */
253
foreach ($postsArray as $eachpost) {
254
    if ($eachpost->getVar('uid') > 0) {
255
        $poster_array[$eachpost->getVar('uid')] = 1;
256
    }
257
    if ($eachpost->getVar('require_reply') > 0) {
258
        $require_reply = true;
259
    }
260
}
261
262
$userid_array = [];
263
$online       = [];
264
if (is_array($poster_array) && count($poster_array) > 0) {
265
    /** @var \XoopsMemberHandler $memberHandler */
266
    $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

266
    $memberHandler = /** @scrutinizer ignore-call */ xoops_getHandler('member');
Loading history...
267
    $userid_array  = array_keys($poster_array);
268
    $user_criteria = '(' . implode(',', $userid_array) . ')';
269
    $users         = $memberHandler->getUsers(new \Criteria('uid', $user_criteria, 'IN'), true);
0 ignored issues
show
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...
270
} else {
271
    $users = [];
272
}
273
274
$viewtopic_users = [];
275
if (is_array($userid_array) && count($userid_array) > 0) {
276
//    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...
277
    $userHandler         = new Newbb\UserHandler($GLOBALS['xoopsModuleConfig']['groupbar_enabled'], $GLOBALS['xoopsModuleConfig']['wol_enabled']);
278
    $userHandler->users  = $users;
279
    $userHandler->online = $online;
0 ignored issues
show
The property online does not seem to exist on XoopsModules\Newbb\UserHandler.
Loading history...
280
    $viewtopic_users     = $userHandler->getUsers();
281
}
282
unset($users);
283
284
if ($GLOBALS['xoopsModuleConfig']['allow_require_reply'] && $require_reply) {
285
    if (!empty($GLOBALS['xoopsModuleConfig']['cache_enabled'])) {
286
        $viewtopic_posters = newbbGetSession('t' . $topic_id, true);
287
        if (!is_array($viewtopic_posters) || 0 === count($viewtopic_posters)) {
288
            $viewtopic_posters = $topicHandler->getAllPosters($topicObject);
289
            newbbSetSession('t' . $topic_id, $viewtopic_posters);
290
        }
291
    } else {
292
        $viewtopic_posters = $topicHandler->getAllPosters($topicObject);
293
    }
294
} else {
295
    $viewtopic_posters = [];
296
}
297
298
if ($GLOBALS['xoopsModuleConfig']['show_advertising']) {
299
    $post_werbung = [
300
        'post_id'         => 0,
301
        'post_parent_id'  => 0,
302
        'post_date'       => 0,
303
        'post_image'      => '',
304
        'post_title'      => '',
305
        'post_text'       => '<div style="text-align: center;vertical-align: middle;"><br>' . xoops_getbanner() . '</div>',
0 ignored issues
show
The function xoops_getbanner 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

305
        'post_text'       => '<div style="text-align: center;vertical-align: middle;"><br>' . /** @scrutinizer ignore-call */ xoops_getbanner() . '</div>',
Loading history...
306
        'post_attachment' => '',
307
        'post_edit'       => 0,
308
        'post_no'         => 0,
309
        'post_signature'  => _MD_NEWBB_ADVERTISING_BLOCK,
310
        'poster_ip'       => '',
311
        'thread_action'   => '',
312
        'thread_buttons'  => '',
313
        'mod_buttons'     => '',
314
        'poster'          => [
315
            'uid'        => -1,
316
            'link'       => _MD_NEWBB_ADVERTISING_USER,
317
            'avatar'     => 'avatars/blank.gif',
318
            'regdate'    => 0,
319
            'last_login' => 0,
320
            'rank'       => ['title' => '']
321
        ],
322
        // irmtfan add last_login
323
        'post_permalink'  => ''
324
    ];
325
}
326
327
$i = 0;
328
/** @var Post $eachpost */
329
foreach ($postsArray as $eachpost) {
330
    if ($GLOBALS['xoopsModuleConfig']['show_advertising']) {
331
        if (2 === $i) {
332
            $xoopsTpl->append('topic_posts', $post_werbung);
333
        }
334
        ++$i;
335
    }
336
    $xoopsTpl->append('topic_posts', $eachpost->showPost($isAdmin));
337
}
338
339
if ($total_posts > $GLOBALS['xoopsModuleConfig']['posts_per_page']) {
340
    include $GLOBALS['xoops']->path('class/pagenav.php');
341
342
    $nav = new \XoopsPageNav($total_posts, $GLOBALS['xoopsModuleConfig']['posts_per_page'], $start, 'start', 'topic_id=' . $topic_id . '&amp;order=' . $order . '&amp;status=' . $status . '&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...
343
    //if (isset($GLOBALS['xoopsModuleConfig']['do_rewrite']) && $GLOBALS['xoopsModuleConfig']['do_rewrite'] === 1) $nav->url = XOOPS_URL . $nav->url;
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...
344
    if ('select' === $GLOBALS['xoopsModuleConfig']['pagenav_display']) {
345
        $navi = $nav->renderSelect();
346
    } elseif ('image' === $GLOBALS['xoopsModuleConfig']['pagenav_display']) {
347
        $navi = $nav->renderImageNav(4);
348
    } else {
349
        $navi = $nav->renderNav(4);
350
    }
351
    $xoopsTpl->assign('forum_page_nav', $navi);
352
} else {
353
    $xoopsTpl->assign('forum_page_nav', '');
354
}
355
356
if (empty($post_id)) {
357
    $first   = array_keys($postsArray);
358
    $post_id = !empty($first[0]) ? $first[0] : 0;
359
}
360
361
if (!empty($postsArray[$post_id])) {
362
    $xoops_pagetitle = $postsArray[$post_id]->getVar('subject') . ' [' . $forumObject->getVar('forum_name') . ']';
363
    $xoopsTpl->assign('xoops_pagetitle', $xoops_pagetitle);
364
    $xoopsOption['xoops_pagetitle'] = $xoops_pagetitle;
365
    $kw                             = array_unique(explode(' ', strip_tags($postsArray[$post_id]->getVar('post_text')), 150));
366
    asort($kw);
367
    $kwort = '';
368
    $z     = 0;
369
    foreach ($kw as $k) {
370
        if ($z < 30 && strlen(trim($k)) > 5) {
371
            $kwort .= trim($k) . ' ';
372
            ++$z;
373
        }
374
    }
375
    $xoTheme->addMeta('meta', 'keywords', $kwort);
376
    $xoTheme->addMeta('meta', 'description', substr(strip_tags($postsArray[$post_id]->getVar('post_text')), 0, 120));
377
}
378
unset($postsArray);
379
380
$xoopsTpl->assign('topic_print_link', "print.php?form=1&amp;{$page_query}");
381
382
$admin_actions = [];
383
$ad_merge      = '';
384
$ad_move       = '';
385
$ad_delete     = '';
386
// irmtfan add restore to viewtopic
387
$ad_restore  = '';
388
$ad_lock     = '';
389
$ad_unlock   = '';
390
$ad_sticky   = '';
391
$ad_unsticky = '';
392
$ad_digest   = '';
393
$ad_undigest = '';
394
395
// START irmtfan add restore to viewtopic
396
// if the topic is active
397
if ($topicObject->getVar('approved') > 0) {
398
    $admin_actions['merge']  = [
399
        'link'  => XOOPS_URL . '/modules/' . $xoopsModule->getVar('dirname', 'n') . '/topicmanager.php?mode=merge&amp;topic_id=' . $topic_id,
400
        'name'  => _MD_NEWBB_MERGETOPIC,
401
        'image' => $ad_merge
402
    ];
403
    $admin_actions['move']   = [
404
        'link'  => XOOPS_URL . '/modules/' . $xoopsModule->getVar('dirname', 'n') . '/topicmanager.php?mode=move&amp;topic_id=' . $topic_id,
405
        'name'  => _MD_NEWBB_MOVETOPIC,
406
        'image' => $ad_move
407
    ];
408
    $admin_actions['delete'] = [
409
        'link'  => XOOPS_URL . '/modules/' . $xoopsModule->getVar('dirname', 'n') . '/topicmanager.php?mode=delete&amp;topic_id=' . $topic_id,
410
        'name'  => _MD_NEWBB_DELETETOPIC,
411
        'image' => $ad_delete
412
    ];
413
    if (!$topicObject->getVar('topic_status')) {
414
        $admin_actions['lock'] = [
415
            'link'  => XOOPS_URL . '/modules/' . $xoopsModule->getVar('dirname', 'n') . '/topicmanager.php?mode=lock&amp;topic_id=' . $topic_id,
416
            'image' => $ad_lock,
417
            'name'  => _MD_NEWBB_LOCKTOPIC
418
        ];
419
    } else {
420
        $admin_actions['unlock'] = [
421
            'link'  => XOOPS_URL . '/modules/' . $xoopsModule->getVar('dirname', 'n') . '/topicmanager.php?mode=unlock&amp;topic_id=' . $topic_id,
422
            'image' => $ad_unlock,
423
            'name'  => _MD_NEWBB_UNLOCKTOPIC
424
        ];
425
    }
426
    if (!$topicObject->getVar('topic_sticky')) {
427
        $admin_actions['sticky'] = [
428
            'link'  => XOOPS_URL . '/modules/' . $xoopsModule->getVar('dirname', 'n') . '/topicmanager.php?mode=sticky&amp;topic_id=' . $topic_id,
429
            'image' => $ad_sticky,
430
            'name'  => _MD_NEWBB_STICKYTOPIC
431
        ];
432
    } else {
433
        $admin_actions['unsticky'] = [
434
            'link'  => XOOPS_URL . '/modules/' . $xoopsModule->getVar('dirname', 'n') . '/topicmanager.php?mode=unsticky&amp;topic_id=' . $topic_id,
435
            'image' => $ad_unsticky,
436
            'name'  => _MD_NEWBB_UNSTICKYTOPIC
437
        ];
438
    }
439
    if (!$topicObject->getVar('topic_digest')) {
440
        $admin_actions['digest'] = [
441
            'link'  => XOOPS_URL . '/modules/' . $xoopsModule->getVar('dirname', 'n') . '/topicmanager.php?mode=digest&amp;topic_id=' . $topic_id,
442
            'image' => $ad_digest,
443
            'name'  => _MD_NEWBB_DIGESTTOPIC
444
        ];
445
    } else {
446
        $admin_actions['undigest'] = [
447
            'link'  => XOOPS_URL . '/modules/' . $xoopsModule->getVar('dirname', 'n') . '/topicmanager.php?mode=undigest&amp;topic_id=' . $topic_id,
448
            'image' => $ad_undigest,
449
            'name'  => _MD_NEWBB_UNDIGESTTOPIC
450
        ];
451
    }
452
    // if the topic is pending/deleted then restore/approve
453
} else {
454
    $admin_actions['restore'] = [
455
        'link'  => XOOPS_URL . '/modules/' . $xoopsModule->getVar('dirname', 'n') . '/topicmanager.php?mode=restore&amp;topic_id=' . $topic_id,
456
        'name'  => _MD_NEWBB_RESTORETOPIC,
457
        'image' => $ad_restore
458
    ];
459
}
460
// END irmtfan add restore to viewtopic
461
462
$xoopsTpl->assign_by_ref('admin_actions', $admin_actions);
463
$xoopsTpl->assign('viewer_level', (int)($isAdmin ? 2 : is_object($GLOBALS['xoopsUser'])));
464
465
if ($GLOBALS['xoopsModuleConfig']['show_permissiontable']) {
466
    //    /** var Newbb\PermissionHandler $permHandler */
467
    //    $permHandler      = Newbb\Helper::getInstance()->getHandler('Permission');
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...
468
    $permission_table = $permHandler->getPermissionTable($forumObject, $topicObject->getVar('topic_status'), $isAdmin);
469
    $xoopsTpl->assign_by_ref('permission_table', $permission_table);
470
}
471
472
///////////////////////////////
0 ignored issues
show
Unused Code Comprehensibility introduced by
47% 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...
473
// show Poll
474
// START irmtfan poll_module
475
// irmtfan remove
476
/*
477
$pollmodul = false;
478
$moduleHandler = xoops_getHandler( 'module' );
479
$PollModule = $moduleHandler->getByDirname('xoopspoll');
480
if ($PollModule && $PollModule->getVar('isactive')) {
481
    $pollmodul = 'xoopspoll';
482
} else {
483
    $PollModule = $moduleHandler->getByDirname('umfrage');
484
    if ($PollModule && $PollModule->getVar('isactive')) {
485
        $pollmodul = 'umfrage';
486
    }
487
}
488
*/
489
//irmtfan remove
490
$pollModuleHandler = $moduleHandler->getByDirname($GLOBALS['xoopsModuleConfig']['poll_module']);
491
if (is_object($pollModuleHandler) && $pollModuleHandler->getVar('isactive')) {
492
    $poll_id = $topicObject->getVar('poll_id');
493
    // can vote in poll
494
    $pollVote = ($topicObject->getVar('topic_haspoll') && $poll_id > 0
495
                 && $topicHandler->getPermission($forumObject, $topicObject->getVar('topic_status'), 'vote'));
496
    // can add poll
497
    $pollAdd = $topicHandler->getPermission($forumObject, $topicObject->getVar('topic_status'), 'addpoll');
498
    if ($pollVote || $pollAdd) {
499
        $pollModuleHandler = $moduleHandler->getByDirname($GLOBALS['xoopsModuleConfig']['poll_module']);
500
        // new xoopspoll module
501
        if ($pollModuleHandler->getVar('version') >= 140) {
502
//            xoops_load('renderer', $GLOBALS['xoopsModuleConfig']['poll_module']);
0 ignored issues
show
Unused Code Comprehensibility introduced by
80% 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...
503
            xoops_loadLanguage('main', $GLOBALS['xoopsModuleConfig']['poll_module']);
504
        // old xoopspoll or umfrage or any clone from them
505
        } else {
506
            $classPoll = $topicObject->loadOldPoll();
507
        }
508
    }
509
    // START can vote in poll
510
    if ($pollVote) {
511
        $xoopsTpl->assign('topic_poll', 1);
512
        $uid = is_object($GLOBALS['xoopsUser']) ? $GLOBALS['xoopsUser']->getVar('uid') : 0;
513
        // new xoopspoll module
514
        if ($pollModuleHandler->getVar('version') >= 140) {
515
            $xpollHandler = Xoopspoll\Helper::getInstance()->getHandler('Poll');
0 ignored issues
show
The type XoopsModules\Xoopspoll\Helper 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...
516
            /** @var \XoopsPoll $pollObject */
517
            $pollObject = $xpollHandler->get($poll_id);
518
            if (is_object($pollObject)) {
519
520
                /* check to see if user has rights to view the results */
521
                $vis_return = $pollObject->isResultVisible();
522
                $isVisible  = $vis_return;
523
                $visibleMsg = $isVisible ? '' : $vis_return;
524
525
                /* setup the module config handler */
526
                /** @var \XoopsConfigHandler $configHandler */
527
                $configHandler = xoops_getHandler('config');
528
                $xp_config     = $configHandler->getConfigsByCat(0, $pollModuleHandler->getVar('mid'));
529
530
                $GLOBALS['xoopsTpl']->assign([
531
                                                 'is_visible'      => $isVisible,
532
                                                 'visible_message' => $visibleMsg,
533
                                                 'disp_votes'      => $xp_config['disp_vote_nums'],
534
                                                 'lang_vote'       => constant('_MD_' . strtoupper($GLOBALS['xoopsModuleConfig']['poll_module']) . '_VOTE'),
535
                                                 'lang_results'    => constant('_MD_' . strtoupper($GLOBALS['xoopsModuleConfig']['poll_module']) . '_RESULTS'),
536
                                                 'back_link'       => ''
537
                                             ]);
538
                $classRenderer = ucfirst($GLOBALS['xoopsModuleConfig']['poll_module']) . 'Renderer';
539
                /** @var Xoopspoll\Renderer $renderer */
540
                $renderer = new $classRenderer($pollObject);
541
                // check to see if user has voted, show form if not, otherwise get results for form
542
543
                /** @var Xoopspoll\LogHandler $logHandler */
544
                $logHandler = Xoopspoll\Helper::getInstance()->getHandler('Log');
545
                if ($pollObject->isAllowedToVote()
546
                    && (!$logHandler->hasVoted($poll_id, xoops_getenv('REMOTE_ADDR'), $uid))) {
0 ignored issues
show
The function xoops_getenv 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

546
                    && (!$logHandler->hasVoted($poll_id, /** @scrutinizer ignore-call */ xoops_getenv('REMOTE_ADDR'), $uid))) {
Loading history...
547
                    $myTpl = new \XoopsTpl();
0 ignored issues
show
The type XoopsTpl 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...
548
                    $renderer->assignForm($myTpl);
549
                    $myTpl->assign('action', $GLOBALS['xoops']->url("modules/newbb/votepolls.php?topic_id={$topic_id}&amp;poll_id={$poll_id}"));
550
                    $topic_pollform = $myTpl->fetch($GLOBALS['xoops']->path('modules/' . $GLOBALS['xoopsModuleConfig']['poll_module'] . '/templates/' . $GLOBALS['xoopsModuleConfig']['poll_module'] . '_view.tpl'));
551
                    $GLOBALS['xoopsTpl']->assign('topic_pollform', $topic_pollform);
552
                } else {
553
                    $GLOBALS['xoopsTpl']->assign('can_vote', false);
554
                    $xoopsTpl->assign('topic_pollresult', 1);
555
                    $GLOBALS['xoopsTpl']->assign('topic_resultform', $renderer->renderResults());
556
                }
557
            }
558
            // old xoopspoll or umfrage or any clone from them
559
        } else {
560
            $pollObject    = new $classPoll($poll_id);
561
            $classRenderer = $classPoll . 'Renderer';
562
            $renderer      = new $classRenderer($pollObject);
563
            $xoopsTpl->assign('lang_alreadyvoted2', _PL_ALREADYVOTED2);
0 ignored issues
show
The constant _PL_ALREADYVOTED2 was not found. Maybe you did not declare it correctly or list all dependencies?
Loading history...
564
            $xoopsTpl->assign('has_ended', $pollObject->getVar('end_time') < time() ? 1 : 0);
565
            // umfrage has polltype
566
            $polltype = $pollObject->getVar('polltype');
567
            if (!empty($polltype)) {
568
                $xoopsTpl->assign('polltype', $polltype);
569
                switch ($polltype) {
570
                    case 1:
571
                        $xoopsTpl->assign('polltypecomment', '');
572
                        break;
573
                    case 2:
574
                        $xoopsTpl->assign('polltypecomment', _PL_FULLBLIND);
0 ignored issues
show
The constant _PL_FULLBLIND was not found. Maybe you did not declare it correctly or list all dependencies?
Loading history...
575
                        break;
576
                    case 3:
577
                        $xoopsTpl->assign('polltypecomment', _PL_HALFBLIND);
0 ignored issues
show
The constant _PL_HALFBLIND was not found. Maybe you did not declare it correctly or list all dependencies?
Loading history...
578
                        break;
579
580
                }
581
            }
582
            $classLog = $classPoll . 'Log';
583
            $hasvoted = 0;
584
            if ($GLOBALS['xoopsUser']) {
585
                if ($classLog::hasVoted($poll_id, Request::getString('REMOTE_ADDR', '', 'SERVER'), $uid)) {
586
                    $hasvoted = 1;
587
                }
588
            } else {
589
                $hasvoted = 1;
590
            }
591
            $xoopsTpl->assign('hasVoted', $hasvoted);
592
            $xoopsTpl->assign('lang_vote', _PL_VOTE);
0 ignored issues
show
The constant _PL_VOTE was not found. Maybe you did not declare it correctly or list all dependencies?
Loading history...
593
            $xoopsTpl->assign('lang_results', $pollObject->getVar('end_time') < time() ? _PL_RESULTS : _PL_STANDINGS);
0 ignored issues
show
The constant _PL_STANDINGS was not found. Maybe you did not declare it correctly or list all dependencies?
Loading history...
The constant _PL_RESULTS was not found. Maybe you did not declare it correctly or list all dependencies?
Loading history...
594
            // irmtfan - if the poll is expired show the result
595
            if ($hasvoted || $pollObject->hasExpired()) {
596
                $renderer->assignResults($xoopsTpl);
597
                $xoopsTpl->assign('topic_pollresult', 1);
598
                setcookie('newbb_polls[' . $poll_id . ']', 1);
599
            } else {
600
                $renderer->assignForm($xoopsTpl);
601
                $xoopsTpl->assign('lang_vote', _PL_VOTE);
602
                $xoopsTpl->assign('lang_results', _PL_RESULTS);
603
                setcookie('newbb_polls[' . $poll_id . ']', 1);
604
            }
605
        }
606
    }
607
    // END can vote in poll
608
    // START can add poll
609
    if ($pollAdd) {
610
        if (!$topicObject->getVar('topic_haspoll')) {
611
            if (is_object($GLOBALS['xoopsUser'])
612
                && $GLOBALS['xoopsUser']->getVar('uid') == $topicObject->getVar('topic_poster')) {
613
                $t_poll = newbbDisplayImage('t_poll', _MD_NEWBB_ADDPOLL);
614
                $xoopsTpl->assign('forum_addpoll', '<a href=\'' . XOOPS_URL . '/modules/' . $xoopsModule->getVar('dirname', 'n') . '/polls.php?op=add&amp;topic_id=' . $topic_id . '\'>' . $t_poll . '</a>');
615
            }
616
        } elseif ($isAdmin
617
                  || (is_object($pollObject) && is_object($GLOBALS['xoopsUser'])
618
                      && $GLOBALS['xoopsUser']->getVar('uid') == $pollObject->getVar('user_id'))) {
619
            $poll_edit    = '';
620
            $poll_delete  = '';
621
            $poll_restart = '';
622
            $poll_log     = '';
623
624
            $adminpoll_actions                = [];
625
            $adminpoll_actions['editpoll']    = [
626
                'link'  => XOOPS_URL . '/modules/' . $xoopsModule->getVar('dirname', 'n') . '/polls.php?op=edit&amp;poll_id=' . $topicObject->getVar('poll_id') . '&amp;topic_id=' . $topic_id,
627
                'image' => $poll_edit,
628
                'name'  => _MD_NEWBB_EDITPOLL
629
            ];
630
            $adminpoll_actions['deletepoll']  = [
631
                'link'  => XOOPS_URL . '/modules/' . $xoopsModule->getVar('dirname', 'n') . '/polls.php?op=delete&amp;poll_id=' . $topicObject->getVar('poll_id') . '&amp;topic_id=' . $topic_id,
632
                'image' => $poll_delete,
633
                'name'  => _MD_NEWBB_DELETEPOLL
634
            ];
635
            $adminpoll_actions['restartpoll'] = [
636
                'link'  => XOOPS_URL . '/modules/' . $xoopsModule->getVar('dirname', 'n') . '/polls.php?op=restart&amp;poll_id=' . $topicObject->getVar('poll_id') . '&amp;topic_id=' . $topic_id . '&amp;forum=' . $forum_id,
637
                'image' => $poll_restart,
638
                'name'  => _MD_NEWBB_RESTARTPOLL
639
            ];
640
            $adminpoll_actions['logpoll']     = [
641
                'link'  => XOOPS_URL . '/modules/' . $xoopsModule->getVar('dirname', 'n') . '/polls.php?op=log&amp;poll_id=' . $topicObject->getVar('poll_id') . '&amp;topic_id=' . $topic_id . '&amp;forum=' . $forum_id,
642
                'image' => $poll_log,
643
                'name'  => _MD_NEWBB_POLL_VIEWLOG
644
            ];
645
646
            $xoopsTpl->assign_by_ref('adminpoll_actions', $adminpoll_actions);
647
        }
648
    }
649
    // END can add poll
650
}
651
if (isset($pollObject)) {
652
    unset($pollObject);
653
}
654
// END irmtfan poll_module
655
656
$xoopsTpl->assign('p_up', newbbDisplayImage('up', _MD_NEWBB_TOP));
657
$xoopsTpl->assign('rating_enable', $GLOBALS['xoopsModuleConfig']['rating_enabled']);
658
$xoopsTpl->assign('groupbar_enable', $GLOBALS['xoopsModuleConfig']['groupbar_enabled']);
659
$xoopsTpl->assign('anonymous_prefix', $GLOBALS['xoopsModuleConfig']['anonymous_prefix']);
660
// irmtfan add alt for prev next and down icons.
661
$xoopsTpl->assign('previous', newbbDisplayImage('previous', _MD_NEWBB_PREVTOPIC));
662
$xoopsTpl->assign('next', newbbDisplayImage('next', _MD_NEWBB_NEXTTOPIC));
663
$xoopsTpl->assign('down', newbbDisplayImage('down', _MD_NEWBB_BOTTOM));
664
$xoopsTpl->assign('post_content', newbbDisplayImage('post'));
665
666
if (!empty($GLOBALS['xoopsModuleConfig']['rating_enabled'])) {
667
    $xoopsTpl->assign('votes', $topicObject->getVar('votes'));
668
    $rating = number_format($topicObject->getVar('rating') / 2, 0);
669
    if ($rating < 1) {
670
        $rating_img = newbbDisplayImage('blank');
671
    } else {
672
        // irmtfan - add alt key for rating
673
        $rating_img = newbbDisplayImage('rate' . $rating, constant('_MD_NEWBB_RATE' . $rating));
674
    }
675
    $xoopsTpl->assign('rating_img', $rating_img);
676
    $xoopsTpl->assign('rate1', newbbDisplayImage('rate1', _MD_NEWBB_RATE1));
677
    $xoopsTpl->assign('rate2', newbbDisplayImage('rate2', _MD_NEWBB_RATE2));
678
    $xoopsTpl->assign('rate3', newbbDisplayImage('rate3', _MD_NEWBB_RATE3));
679
    $xoopsTpl->assign('rate4', newbbDisplayImage('rate4', _MD_NEWBB_RATE4));
680
    $xoopsTpl->assign('rate5', newbbDisplayImage('rate5', _MD_NEWBB_RATE5));
681
}
682
683
// create jump box
684
if (!empty($GLOBALS['xoopsModuleConfig']['show_jump'])) {
685
    require_once __DIR__ . '/include/functions.forum.php';
686
    $xoopsTpl->assign('forum_jumpbox', newbbMakeJumpbox($forum_id));
687
}
688
689
$xoopsTpl->assign([
690
                      'lang_forum_index' => sprintf(_MD_NEWBB_FORUMINDEX, htmlspecialchars($GLOBALS['xoopsConfig']['sitename'], ENT_QUOTES)),
691
                      'lang_from'        => _MD_NEWBB_FROM,
692
                      'lang_joined'      => _MD_NEWBB_JOINED,
693
                      'lang_posts'       => _MD_NEWBB_POSTS,
694
                      'lang_poster'      => _MD_NEWBB_POSTER,
695
                      'lang_thread'      => _MD_NEWBB_THREAD,
696
                      'lang_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...
697
                      'lang_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...
698
                      'lang_reply'       => _REPLY,
0 ignored issues
show
The constant _REPLY was not found. Maybe you did not declare it correctly or list all dependencies?
Loading history...
699
                      'lang_postedon'    => _MD_NEWBB_POSTEDON,
700
                      'lang_groups'      => _MD_NEWBB_GROUPS
701
                  ]);
702
703
$viewmode_options = [];
704
if ('DESC' === $order) {
705
    $viewmode_options[] = [
706
        'link'  => XOOPS_URL . '/modules/' . $xoopsModule->getVar('dirname', 'n') . '/viewtopic.php?order=ASC&amp;status=$status&amp;topic_id=' . $topic_id,
707
        '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...
708
    ];
709
} else {
710
    $viewmode_options[] = [
711
        'link'  => XOOPS_URL . '/modules/' . $xoopsModule->getVar('dirname', 'n') . '/viewtopic.php?order=DESC&amp;status=$status&amp;topic_id=' . $topic_id,
712
        '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...
713
    ];
714
}
715
716
switch ($status) {
717
    case 'active':
718
        $current_status = '[' . _MD_NEWBB_TYPE_ADMIN . ']';
719
        break;
720
    case 'pending':
721
        $current_status = '[' . _MD_NEWBB_TYPE_PENDING . ']';
722
        break;
723
    case 'deleted':
724
        $current_status = '[' . _MD_NEWBB_TYPE_DELETED . ']';
725
        break;
726
    default:
727
        $current_status = '';
728
        break;
729
}
730
$xoopsTpl->assign('topicstatus', $current_status);
731
732
$xoopsTpl->assign('mode', $mode);
733
$xoopsTpl->assign('status', $status);
734
//$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...
735
$xoopsTpl->assign_by_ref('viewmode_options', $viewmode_options);
736
unset($viewmode_options);
737
$xoopsTpl->assign('menumode', $menumode);
738
$xoopsTpl->assign('menumode_other', $menumode_other);
739
740
// START irmtfan add verifyUser to quick reply
741
//check banning
742
//$moderateHandler = Newbb\Helper::getInstance()->getHandler('Moderate');
743
if (!empty($GLOBALS['xoopsModuleConfig']['quickreply_enabled'])
744
    && $topicHandler->getPermission($forumObject, $topicObject->getVar('topic_status'), 'reply')
745
    && $moderateHandler->verifyUser(-1, '', $forumObject->getVar('forum_id'))) {
746
    // END irmtfan add verifyUser to quick reply
747
    $forum_form = new \XoopsThemeForm(_MD_NEWBB_POSTREPLY, 'quick_reply', XOOPS_URL . '/modules/' . $xoopsModule->getVar('dirname', 'n') . '/post.php', 'post', true);
0 ignored issues
show
The type XoopsThemeForm 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...
748
    if (!is_object($GLOBALS['xoopsUser'])) {
749
        //$configHandler = xoops_getHandler('config');
0 ignored issues
show
Unused Code Comprehensibility introduced by
56% 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...
750
        $user_tray = new \XoopsFormElementTray(_MD_NEWBB_ACCOUNT);
0 ignored issues
show
The type XoopsFormElementTray 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...
751
        $user_tray->addElement(new \XoopsFormText(_MD_NEWBB_NAME, 'uname', 26, 255));
0 ignored issues
show
The type XoopsFormText 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...
752
        $user_tray->addElement(new \XoopsFormPassword(_MD_NEWBB_PASSWORD, 'pass', 10, 32));
0 ignored issues
show
The type XoopsFormPassword 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...
753
        $login_checkbox = new \XoopsFormCheckBox('', 'login', 1);
0 ignored issues
show
The type XoopsFormCheckBox 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...
754
        $login_checkbox->addOption(1, _MD_NEWBB_LOGIN);
755
        $user_tray->addElement($login_checkbox);
756
        $forum_form->addElement($user_tray);
757
        $captcha = new \XoopsFormCaptcha('', "topic_{$topic_id}_{$start}");
0 ignored issues
show
The type XoopsFormCaptcha 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...
758
        $captcha->setConfig('mode', 'text');
759
        $forum_form->addElement($captcha);
760
    }
761
762
    //$quickform = ( !empty($GLOBALS['xoopsModuleConfig']["editor_default"]) ) ? $GLOBALS['xoopsModuleConfig']["editor_default"] : "textarea";
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...
763
    $quickform               = !empty($GLOBALS['xoopsModuleConfig']['editor_quick_default']) ? $GLOBALS['xoopsModuleConfig']['editor_quick_default'] : 'textarea';
764
    $editor_configs          = [];
765
    $editor_configs ['name'] = 'message';
766
    //$editor_configs [ "value" ]     = $message ;
0 ignored issues
show
Unused Code Comprehensibility introduced by
47% 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...
767
    $editor_configs ['rows']   = empty($GLOBALS['xoopsModuleConfig'] ['editor_rows']) ? 10 : $GLOBALS['xoopsModuleConfig'] ['editor_rows'];
768
    $editor_configs ['cols']   = empty($GLOBALS['xoopsModuleConfig'] ['editor_cols']) ? 30 : $GLOBALS['xoopsModuleConfig'] ['editor_cols'];
769
    $editor_configs ['width']  = empty($GLOBALS['xoopsModuleConfig'] ['editor_width']) ? '100%' : $GLOBALS['xoopsModuleConfig'] ['editor_width'];
770
    $editor_configs ['height'] = empty($GLOBALS['xoopsModuleConfig'] ['editor_height']) ? '400px' : $GLOBALS['xoopsModuleConfig'] ['editor_height'];
771
    $_editor                   = new \XoopsFormEditor(_MD_NEWBB_MESSAGEC, $quickform, $editor_configs, true);
0 ignored issues
show
The type XoopsFormEditor 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...
772
    $forum_form->addElement($_editor, true);
773
774
    $forum_form->addElement(new \XoopsFormHidden('dohtml', 0));
0 ignored issues
show
The type XoopsFormHidden 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...
775
    $forum_form->addElement(new \XoopsFormHidden('dosmiley', 1));
776
    $forum_form->addElement(new \XoopsFormHidden('doxcode', 1));
777
    $forum_form->addElement(new \XoopsFormHidden('dobr', 1));
778
    $forum_form->addElement(new \XoopsFormHidden('attachsig', 1));
779
780
    $forum_form->addElement(new \XoopsFormHidden('isreply', 1));
781
782
    $forum_form->addElement(new \XoopsFormHidden('subject', _MD_NEWBB_RE . ': ' . $topicObject->getVar('topic_title', 'e')));
783
    $forum_form->addElement(new \XoopsFormHidden('pid', empty($post_id) ? $topicHandler->getTopPostId($topic_id) : $post_id));
784
    $forum_form->addElement(new \XoopsFormHidden('topic_id', $topic_id));
785
    $forum_form->addElement(new \XoopsFormHidden('forum', $forum_id));
786
    //$forum_form->addElement(new \XoopsFormHidden('viewmode', $viewmode));
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...
787
    $forum_form->addElement(new \XoopsFormHidden('order', $order));
788
    $forum_form->addElement(new \XoopsFormHidden('start', $start));
789
790
    $forum_form->addElement(new \XoopsFormHidden('notify', -1));
791
    $forum_form->addElement(new \XoopsFormHidden('contents_submit', 1));
792
793
    $submit_button = new \XoopsFormButton('', 'quick_submit', _SUBMIT, 'submit');
0 ignored issues
show
The type XoopsFormButton 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 constant _SUBMIT was not found. Maybe you did not declare it correctly or list all dependencies?
Loading history...
794
    $submit_button->setExtra('onclick="if (document.forms.quick_reply.message.value === \'RE\' || document.forms.quick_reply.message.value === \'\') { alert(\'' . _MD_NEWBB_QUICKREPLY_EMPTY . '\'); return false;} else { return true;}"');
795
    $forum_form->addElement($submit_button);
796
797
    $toggles = newbbGetCookie('G', true);
798
    // START irmtfan improve quickreply smarty variable - add alt key to quick reply button - change $display to $style for more comprehension - add toggle $quickreply['expand']
799
    $quickreply           = [];
800
    $qr_collapse          = 't_qr';
801
    $qr_expand            = 't_qr_expand'; // change this
802
    $quickreply['icon']   = [
803
        'expand'   => $iconHandler->getImageSource($qr_expand),
804
        'collapse' => $iconHandler->getImageSource($qr_collapse)
805
    ];
806
    $quickreply['show']   = 1; // = !empty($GLOBALS['xoopsModuleConfig']['quickreply_enabled']
0 ignored issues
show
Unused Code Comprehensibility introduced by
77% 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...
807
    $quickreply['expand'] = (count($toggles) > 0) ? (in_array('qr', $toggles, true) ? false : true) : true;
808
    if ($quickreply['expand']) {
809
        $quickreply['style']     = 'block';        //irmtfan move semicolon
810
        $quickreply_icon_display = $qr_expand;
811
        $quickreply_alt          = _MD_NEWBB_HIDE . ' ' . _MD_NEWBB_QUICKREPLY;
812
    } else {
813
        $quickreply['style']     = 'none';        //irmtfan move semicolon
814
        $quickreply_icon_display = $qr_collapse;
815
        $quickreply_alt          = _MD_NEWBB_SEE . ' ' . _MD_NEWBB_QUICKREPLY;
816
    }
817
    $quickreply['displayImage'] = newbbDisplayImage($quickreply_icon_display, $quickreply_alt);
818
    $quickreply['form']         = $forum_form->render();
819
    $xoopsTpl->assign('quickreply', $quickreply);
820
    // END irmtfan improve quickreply smarty variable
821
    unset($forum_form);
822
} else {
823
    $xoopsTpl->assign('quickreply', ['show' => 0]);
824
}
825
826
if ($GLOBALS['xoopsModuleConfig']['do_tag']
827
    && @require_once $GLOBALS['xoops']->path('modules/tag/include/tagbar.php')) {
828
    $xoopsTpl->assign('tagbar', tagBar($topicObject->getVar('topic_tags', 'n')));
0 ignored issues
show
The function tagBar 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

828
    $xoopsTpl->assign('tagbar', /** @scrutinizer ignore-call */ tagBar($topicObject->getVar('topic_tags', 'n')));
Loading history...
829
}
830
// irmtfan move to footer.php
831
require_once __DIR__ . '/footer.php';
832
include $GLOBALS['xoops']->path('footer.php');
833
$xoopsLogger->stopTime('newBB_viewtopic');
834