79 lines
2.3 KiB
PHP
79 lines
2.3 KiB
PHP
<?php
|
|
use Misuzu\Request\RequestVar;
|
|
|
|
require_once '../../misuzu.php';
|
|
|
|
$forumId = RequestVar::get()->select('f')->value('int');
|
|
$forumId = max($forumId, 0);
|
|
|
|
if ($forumId === 0) {
|
|
header('Location: /forum/');
|
|
exit;
|
|
}
|
|
|
|
$forum = forum_get($forumId);
|
|
$forumUserId = user_session_current('user_id', 0);
|
|
|
|
if (empty($forum) || ($forum['forum_type'] == MSZ_FORUM_TYPE_LINK && empty($forum['forum_link']))) {
|
|
echo render_error(404);
|
|
return;
|
|
}
|
|
|
|
$perms = forum_perms_get_user(MSZ_FORUM_PERMS_GENERAL, $forum['forum_id'], $forumUserId);
|
|
|
|
if (!perms_check($perms, MSZ_FORUM_PERM_VIEW_FORUM)) {
|
|
echo render_error(403);
|
|
return;
|
|
}
|
|
|
|
if (user_warning_check_restriction($forumUserId)) {
|
|
$perms &= ~MSZ_FORUM_PERM_SET_WRITE;
|
|
}
|
|
|
|
tpl_var('forum_perms', $perms);
|
|
|
|
if ($forum['forum_type'] == MSZ_FORUM_TYPE_LINK) {
|
|
forum_increment_clicks($forum['forum_id']);
|
|
header('Location: ' . $forum['forum_link']);
|
|
return;
|
|
}
|
|
|
|
$forumPagination = pagination_create($forum['forum_topic_count'], 20);
|
|
$topicsOffset = pagination_offset($forumPagination, pagination_param());
|
|
|
|
if (!pagination_is_valid_offset($topicsOffset) && $forum['forum_topic_count'] > 0) {
|
|
echo render_error(404);
|
|
return;
|
|
}
|
|
|
|
$forumMayHaveTopics = forum_may_have_topics($forum['forum_type']);
|
|
$topics = $forumMayHaveTopics
|
|
? forum_topic_listing(
|
|
$forum['forum_id'],
|
|
$forumUserId,
|
|
$topicsOffset,
|
|
$forumPagination['range'],
|
|
perms_check($perms, MSZ_FORUM_PERM_DELETE_ANY_POST)
|
|
)
|
|
: [];
|
|
|
|
$forumMayHaveChildren = forum_may_have_children($forum['forum_type']);
|
|
|
|
if ($forumMayHaveChildren) {
|
|
$forum['forum_subforums'] = forum_get_children($forum['forum_id'], $forumUserId, MSZ_FORUM_POSTS_PER_PAGE);
|
|
|
|
foreach ($forum['forum_subforums'] as $skey => $subforum) {
|
|
$forum['forum_subforums'][$skey]['forum_subforums']
|
|
= forum_get_children($subforum['forum_id'], $forumUserId, MSZ_FORUM_POSTS_PER_PAGE, true);
|
|
}
|
|
}
|
|
|
|
echo tpl_render('forum.forum', [
|
|
'forum_breadcrumbs' => forum_get_breadcrumbs($forum['forum_id']),
|
|
'global_accent_colour' => forum_get_colour($forum['forum_id']),
|
|
'forum_may_have_topics' => $forumMayHaveTopics,
|
|
'forum_may_have_children' => $forumMayHaveChildren,
|
|
'forum_info' => $forum,
|
|
'forum_topics' => $topics,
|
|
'forum_pagination' => $forumPagination,
|
|
]);
|