Passed
Push — master ( 565d4a...492cc7 )
by Michael
07:40
created

viewtopic.php (1 issue)

Labels
Severity
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;
34
use XoopsModules\Newbb;
35
use XoopsModules\Xoopspoll;
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');
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;
58
$post_id  = Request::getInt('post_id', 0, 'GET'); // !empty($_GET['post_id']) ? (int)($_GET['post_id']) : 0;
59
$move     = strtolower(Request::getString('move', '', 'GET')); // isset($_GET['move']) ? strtolower($_GET['move']) : '';
60
$start    = Request::getInt('start', 0, 'GET'); // !empty($_GET['start']) ? (int)($_GET['start']) : 0;
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);
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}";
77
    redirect_header($redirect, 2, _MD_NEWBB_ERRORTOPIC);
78
}
79
80
///** @var Newbb\TopicHandler $topicHandler */
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 */
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 ||
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');
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');
146
    $user_karma = $karmaHandler->getUserKarma();
147
}
148
149
//$viewmode = "flat";
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);
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
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');
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');
267
    $userid_array  = array_keys($poster_array);
268
    $user_criteria = '(' . implode(',', $userid_array) . ')';
269
    $users         = $memberHandler->getUsers(new \Criteria('uid', $user_criteria, 'IN'), true);
270
} else {
271
    $users = [];
272
}
273
274
$viewtopic_users = [];
275
if (is_array($userid_array) && count($userid_array) > 0) {
276
//    require_once $GLOBALS['xoops']->path('modules/' . $xoopsModule->getVar('dirname', 'n') . '/class/user.php');
277
    $userHandler         = new Newbb\UserHandler($GLOBALS['xoopsModuleConfig']['groupbar_enabled'], $GLOBALS['xoopsModuleConfig']['wol_enabled']);
278
    $userHandler->users  = $users;
279
    $userHandler->online = $online;
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>',
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
    require_once $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);
343
    //if (isset($GLOBALS['xoopsModuleConfig']['do_rewrite']) && $GLOBALS['xoopsModuleConfig']['do_rewrite'] === 1) $nav->url = XOOPS_URL . $nav->url;
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');
468
    $permission_table = $permHandler->getPermissionTable($forumObject, $topicObject->getVar('topic_status'), $isAdmin);
469
    $xoopsTpl->assign_by_ref('permission_table', $permission_table);
470
}
471
472
///////////////////////////////
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']);
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))) {
547
                    $myTpl = new \XoopsTpl();
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);
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);
575
                        break;
576
                    case 3:
577
                        $xoopsTpl->assign('polltypecomment', _PL_HALFBLIND);
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);
593
            $xoopsTpl->assign('lang_results', $pollObject->getVar('end_time') < time() ? _PL_RESULTS : _PL_STANDINGS);
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,
697
                      'lang_delete'      => _DELETE,
698
                      'lang_reply'       => _REPLY,
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
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
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);
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);
748
    if (!is_object($GLOBALS['xoopsUser'])) {
749
        //$configHandler = xoops_getHandler('config');
750
        $user_tray = new \XoopsFormElementTray(_MD_NEWBB_ACCOUNT);
751
        $user_tray->addElement(new \XoopsFormText(_MD_NEWBB_NAME, 'uname', 26, 255));
752
        $user_tray->addElement(new \XoopsFormPassword(_MD_NEWBB_PASSWORD, 'pass', 10, 32));
753
        $login_checkbox = new \XoopsFormCheckBox('', 'login', 1);
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}");
758
        $captcha->setConfig('mode', 'text');
759
        $forum_form->addElement($captcha);
760
    }
761
762
    //$quickform = ( !empty($GLOBALS['xoopsModuleConfig']["editor_default"]) ) ? $GLOBALS['xoopsModuleConfig']["editor_default"] : "textarea";
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 ;
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);
772
    $forum_form->addElement($_editor, true);
773
774
    $forum_form->addElement(new \XoopsFormHidden('dohtml', 0));
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));
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');
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']
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')));
829
}
830
// irmtfan move to footer.php
831
require_once __DIR__ . '/footer.php';
832
require_once $GLOBALS['xoops']->path('footer.php');
833
$xoopsLogger->stopTime('newBB_viewtopic');
834