2018-05-18 03:20:27 +02:00
|
|
|
<?php
|
2019-09-29 00:43:51 +02:00
|
|
|
namespace Misuzu;
|
|
|
|
|
2020-05-25 19:58:06 +00:00
|
|
|
use Misuzu\Users\User;
|
|
|
|
|
2018-10-04 22:30:55 +02:00
|
|
|
require_once '../../misuzu.php';
|
2018-05-18 03:20:27 +02:00
|
|
|
|
2019-03-18 23:02:30 +01:00
|
|
|
$forumId = !empty($_GET['f']) && is_string($_GET['f']) ? (int)$_GET['f'] : 0;
|
2019-03-07 19:11:24 +01:00
|
|
|
$forumId = max($forumId, 0);
|
2018-05-18 03:20:27 +02:00
|
|
|
|
2019-06-10 19:04:53 +02:00
|
|
|
if($forumId === 0) {
|
2019-06-08 23:46:24 +02:00
|
|
|
url_redirect('forum-index');
|
2018-05-18 03:20:27 +02:00
|
|
|
exit;
|
|
|
|
}
|
|
|
|
|
2019-01-18 18:08:19 +01:00
|
|
|
$forum = forum_get($forumId);
|
2020-05-25 19:58:06 +00:00
|
|
|
$forumUser = User::getCurrent();
|
|
|
|
$forumUserId = $forumUser === null ? 0 : $forumUser->getId();
|
2018-05-18 03:20:27 +02:00
|
|
|
|
2019-06-10 19:04:53 +02:00
|
|
|
if(empty($forum) || ($forum['forum_type'] == MSZ_FORUM_TYPE_LINK && empty($forum['forum_link']))) {
|
2018-05-26 22:33:05 +02:00
|
|
|
echo render_error(404);
|
2018-05-18 03:20:27 +02:00
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
2019-04-30 22:55:12 +02:00
|
|
|
$perms = forum_perms_get_user($forum['forum_id'], $forumUserId)[MSZ_FORUM_PERMS_GENERAL];
|
2018-08-23 22:06:48 +02:00
|
|
|
|
2019-06-10 19:04:53 +02:00
|
|
|
if(!perms_check($perms, MSZ_FORUM_PERM_VIEW_FORUM)) {
|
2018-08-23 22:06:48 +02:00
|
|
|
echo render_error(403);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
2020-06-11 20:30:19 +00:00
|
|
|
if(isset($forumUser) && $forumUser->hasActiveWarning())
|
2018-12-28 06:03:42 +01:00
|
|
|
$perms &= ~MSZ_FORUM_PERM_SET_WRITE;
|
|
|
|
|
2019-12-04 19:16:22 +01:00
|
|
|
Template::set('forum_perms', $perms);
|
2018-08-23 22:06:48 +02:00
|
|
|
|
2019-06-10 19:04:53 +02:00
|
|
|
if($forum['forum_type'] == MSZ_FORUM_TYPE_LINK) {
|
2018-05-23 03:41:57 +02:00
|
|
|
forum_increment_clicks($forum['forum_id']);
|
2019-06-08 23:46:24 +02:00
|
|
|
redirect($forum['forum_link']);
|
2018-05-18 03:20:27 +02:00
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
2019-12-06 02:04:10 +01:00
|
|
|
$forumPagination = new Pagination($forum['forum_topic_count'], 20);
|
2019-01-03 01:33:02 +01:00
|
|
|
|
2019-12-06 02:04:10 +01:00
|
|
|
if(!$forumPagination->hasValidOffset() && $forum['forum_topic_count'] > 0) {
|
2019-01-03 01:33:02 +01:00
|
|
|
echo render_error(404);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
2018-10-18 23:54:21 +02:00
|
|
|
$forumMayHaveTopics = forum_may_have_topics($forum['forum_type']);
|
|
|
|
$topics = $forumMayHaveTopics
|
2018-12-22 12:02:26 +01:00
|
|
|
? forum_topic_listing(
|
|
|
|
$forum['forum_id'],
|
2019-01-04 02:40:18 +01:00
|
|
|
$forumUserId,
|
2019-12-06 02:04:10 +01:00
|
|
|
$forumPagination->getOffset(),
|
|
|
|
$forumPagination->getRange(),
|
2023-01-01 05:01:18 +00:00
|
|
|
perms_check($perms, MSZ_FORUM_PERM_DELETE_ANY_POST)
|
2018-12-22 12:02:26 +01:00
|
|
|
)
|
2018-05-24 02:38:42 +02:00
|
|
|
: [];
|
2018-05-18 03:20:27 +02:00
|
|
|
|
2018-10-18 23:54:21 +02:00
|
|
|
$forumMayHaveChildren = forum_may_have_children($forum['forum_type']);
|
2018-05-18 03:20:27 +02:00
|
|
|
|
2019-06-10 19:04:53 +02:00
|
|
|
if($forumMayHaveChildren) {
|
2019-04-30 22:55:12 +02:00
|
|
|
$forum['forum_subforums'] = forum_get_children($forum['forum_id'], $forumUserId);
|
2018-10-18 23:54:21 +02:00
|
|
|
|
2019-06-10 19:04:53 +02:00
|
|
|
foreach($forum['forum_subforums'] as $skey => $subforum) {
|
2018-10-18 23:54:21 +02:00
|
|
|
$forum['forum_subforums'][$skey]['forum_subforums']
|
2019-04-30 22:55:12 +02:00
|
|
|
= forum_get_children($subforum['forum_id'], $forumUserId);
|
2018-10-18 23:54:21 +02:00
|
|
|
}
|
2018-05-18 03:20:27 +02:00
|
|
|
}
|
|
|
|
|
2019-12-04 19:16:22 +01:00
|
|
|
Template::render('forum.forum', [
|
2018-05-23 03:41:57 +02:00
|
|
|
'forum_breadcrumbs' => forum_get_breadcrumbs($forum['forum_id']),
|
2018-10-22 00:11:14 +02:00
|
|
|
'global_accent_colour' => forum_get_colour($forum['forum_id']),
|
2018-10-18 23:54:21 +02:00
|
|
|
'forum_may_have_topics' => $forumMayHaveTopics,
|
|
|
|
'forum_may_have_children' => $forumMayHaveChildren,
|
2018-05-18 03:20:27 +02:00
|
|
|
'forum_info' => $forum,
|
|
|
|
'forum_topics' => $topics,
|
2019-01-03 01:33:02 +01:00
|
|
|
'forum_pagination' => $forumPagination,
|
2018-05-18 03:20:27 +02:00
|
|
|
]);
|