This repository has been archived on 2024-06-26. You can view files and clone it, but cannot push or open issues or pull requests.
sakura/public/viewtopic.php

237 lines
6.2 KiB
PHP
Raw Normal View History

2015-06-27 11:03:11 +00:00
<?php
/*
* Sakura Forum Topic Viewer
*/
// Declare Namespace
namespace Sakura;
2015-12-29 21:52:19 +00:00
use Sakura\Perms\Forum as ForumPerms;
2015-06-27 11:03:11 +00:00
// Include components
require_once str_replace(basename(__DIR__), '', dirname(__FILE__)) . 'sakura.php';
2015-06-28 14:43:46 +00:00
// Attempt to get the thread
$thread = new Forum\Thread(
2015-10-11 21:59:17 +00:00
isset($_GET['p'])
? (new Forum\Post($_GET['p']))->thread
2015-10-11 21:59:17 +00:00
: (isset($_GET['t']) ? $_GET['t'] : 0)
);
2015-06-28 14:43:46 +00:00
// And attempt to get the forum
$forum = new Forum\Forum($thread->forum);
// Initialise templating engine
$template = new Template();
// Change templating engine
$template->setTemplate($templateName);
2015-06-28 14:43:46 +00:00
// Check if the forum exists
if (!$thread) {
2015-06-28 14:43:46 +00:00
// Set render data
$renderData['page'] = [
'message' => 'The topic you tried to access does not exist.',
2016-01-10 18:24:47 +00:00
'redirect' => $urls->format('FORUM_THREAD', [$thread->id]),
2015-06-28 14:43:46 +00:00
];
// Set parse variables
$template->setVariables($renderData);
// Print page contents
echo $template->render('global/information');
2015-06-28 14:43:46 +00:00
exit;
}
2015-12-29 21:52:19 +00:00
// Check if the user has access to the forum
2016-01-17 01:58:31 +00:00
if (!$forum->permission(ForumPerms::VIEW, $currentUser->id)) {
2015-12-29 21:52:19 +00:00
// Set render data
$renderData['page'] = [
'message' => 'You do not have access to this thread.',
2016-01-10 18:24:47 +00:00
'redirect' => $urls->format('FORUM_THREAD', [$thread->id]),
2015-12-29 21:52:19 +00:00
];
// Set parse variables
$template->setVariables($renderData);
// Print page contents
echo $template->render('global/information');
exit;
}
2016-01-10 18:24:47 +00:00
// Sticky thread
2016-01-17 01:58:31 +00:00
if (isset($_GET['sticky']) && $_GET['sticky'] == session_id() && $forum->permission(ForumPerms::STICKY, $currentUser->id)) {
2016-01-10 18:24:47 +00:00
// Check the status
if ($thread->type == 1) {
$thread->type = 0;
} else {
$thread->type = 1;
}
// Update the thread
$thread->update();
// Set render data
$renderData['page'] = [
'message' => 'Changed the thread type.',
'redirect' => $urls->format('FORUM_THREAD', [$thread->id]),
];
// Set parse variables
$template->setVariables($renderData);
// Print page contents
echo $template->render('global/information');
exit;
}
// Announce thread
2016-01-17 01:58:31 +00:00
if (isset($_GET['announce']) && $_GET['announce'] == session_id() && $forum->permission(ForumPerms::ANNOUNCEMENT, $currentUser->id)) {
2016-01-10 18:24:47 +00:00
// Check the status
if ($thread->type == 2) {
$thread->type = 0;
} else {
$thread->type = 2;
}
// Update the thread
$thread->update();
// Set render data
$renderData['page'] = [
'message' => 'Changed the thread type.',
'redirect' => $urls->format('FORUM_THREAD', [$thread->id]),
];
// Set parse variables
$template->setVariables($renderData);
// Print page contents
echo $template->render('global/information');
exit;
}
// Lock thread
2016-01-17 01:58:31 +00:00
if (isset($_GET['lock']) && $_GET['lock'] == session_id() && $forum->permission(ForumPerms::LOCK, $currentUser->id)) {
2016-01-10 18:24:47 +00:00
// Check the status
if ($thread->status == 1) {
$thread->status = 0;
} else {
$thread->status = 1;
}
// Update the thread
$thread->update();
// Set render data
$renderData['page'] = [
'message' => 'Changed the thread status.',
'redirect' => $urls->format('FORUM_THREAD', [$thread->id]),
];
// Set parse variables
$template->setVariables($renderData);
// Print page contents
echo $template->render('global/information');
exit;
}
// Trash thread
2016-01-17 01:58:31 +00:00
if (isset($_GET['trash']) && $_GET['trash'] == session_id() && $forum->permission(ForumPerms::MOVE, $currentUser->id)) {
2016-01-10 18:24:47 +00:00
// Check the status
if ($thread->forum != Config::get('forum_trash_id')) {
$thread->move(Config::get('forum_trash_id'));
// Set render data
$renderData['page'] = [
'message' => 'Moved thread to the trash.',
'redirect' => $urls->format('FORUM_THREAD', [$thread->id]),
];
} else {
// Set render data
$renderData['page'] = [
'message' => 'This thread is already trashed.',
'redirect' => $urls->format('FORUM_THREAD', [$thread->id]),
];
}
// Set parse variables
$template->setVariables($renderData);
// Print page contents
echo $template->render('global/information');
exit;
}
// Restore thread
2016-01-17 01:58:31 +00:00
if (isset($_GET['restore']) && $_GET['restore'] == session_id() && $forum->permission(ForumPerms::MOVE, $currentUser->id)) {
2016-01-10 18:24:47 +00:00
// Check the status
if ($thread->oldForum) {
// Move thread
$thread->move($thread->oldForum, false);
// Set render data
$renderData['page'] = [
'message' => 'Restored the thread to its previous location.',
'redirect' => $urls->format('FORUM_THREAD', [$thread->id]),
];
} else {
// Set render data
$renderData['page'] = [
'message' => 'This thread has never been moved.',
'redirect' => $urls->format('FORUM_THREAD', [$thread->id]),
];
}
// Set parse variables
$template->setVariables($renderData);
// Print page contents
echo $template->render('global/information');
exit;
}
// Prune thread
2016-01-17 01:58:31 +00:00
if (isset($_GET['prune']) && $_GET['prune'] == session_id() && $forum->permission(ForumPerms::DELETE_ANY, $currentUser->id)) {
2016-01-10 18:24:47 +00:00
// Check the status
if ($thread->forum == Config::get('forum_trash_id')) {
$thread->delete();
// Set render data
$renderData['page'] = [
'message' => 'The thread has been pruned.',
'redirect' => $urls->format('FORUM_SUB', [$thread->forum]),
];
} else {
// Set render data
$renderData['page'] = [
'message' => 'You can only prune trashed threads.',
'redirect' => $urls->format('FORUM_THREAD', [$thread->id]),
];
}
// Set parse variables
$template->setVariables($renderData);
// Print page contents
echo $template->render('global/information');
exit;
}
// Update the tracking status
2016-01-17 01:58:31 +00:00
$thread->trackUpdate($currentUser->id);
// Update views
$thread->viewsUpdate();
2015-06-28 14:43:46 +00:00
// Set additional render data
$renderData = array_merge($renderData, [
'thread' => $thread,
'forum' => $forum,
2015-06-28 14:43:46 +00:00
]);
// Set parse variables
$template->setVariables($renderData);
2015-06-28 14:43:46 +00:00
// Print page contents
echo $template->render('forum/viewtopic');