misuzu/public/forum/forum.php

53 lines
1.5 KiB
PHP
Raw Normal View History

2018-05-18 01:20:27 +00:00
<?php
require_once '../../misuzu.php';
2018-05-18 01:20:27 +00:00
2018-05-23 01:41:57 +00:00
$forumId = max((int)($_GET['f'] ?? 0), 0);
2018-05-21 16:37:17 +00:00
$topicsOffset = max((int)($_GET['o'] ?? 0), 0);
$topicsRange = max(min((int)($_GET['r'] ?? 20), 50), 10);
2018-05-18 01:20:27 +00:00
if ($forumId === 0) {
header('Location: /forum/');
exit;
}
$forum = forum_fetch($forumId);
2018-05-18 01:20:27 +00:00
2018-05-23 01:41:57 +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(MSZ_FORUM_PERMS_GENERAL, $forum['forum_id'], user_session_current('user_id', 0));
if (!perms_check($perms, MSZ_FORUM_PERM_VIEW_FORUM)) {
echo render_error(403);
return;
}
tpl_var('forum_perms', $perms);
2018-05-23 01:41:57 +00:00
if ($forum['forum_type'] == MSZ_FORUM_TYPE_LINK) {
forum_increment_clicks($forum['forum_id']);
2018-05-18 01:20:27 +00:00
header('Location: ' . $forum['forum_link']);
return;
}
$topics = forum_may_have_topics($forum['forum_type'])
? forum_topic_listing($forum['forum_id'], user_session_current('user_id', 0), $topicsOffset, $topicsRange)
: [];
2018-05-18 01:20:27 +00:00
$forum['forum_subforums'] = forum_get_children($forum['forum_id'], user_session_current('user_id', 0));
2018-05-18 01:20:27 +00:00
foreach ($forum['forum_subforums'] as $skey => $subforum) {
$forum['forum_subforums'][$skey]['forum_subforums']
= forum_get_children($subforum['forum_id'], user_session_current('user_id', 0), true);
2018-05-18 01:20:27 +00:00
}
2018-08-15 01:12:58 +00:00
echo tpl_render('forum.forum', [
2018-05-23 01:41:57 +00:00
'forum_breadcrumbs' => forum_get_breadcrumbs($forum['forum_id']),
2018-05-18 01:20:27 +00:00
'forum_info' => $forum,
'forum_topics' => $topics,
2018-05-21 16:37:17 +00:00
'forum_offset' => $topicsOffset,
'forum_range' => $topicsRange,
2018-05-18 01:20:27 +00:00
]);