misuzu/public/forum/forum.php

81 lines
2.2 KiB
PHP
Raw Normal View History

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