misuzu/src/Http/Handlers/ForumHandler.php

41 lines
1.4 KiB
PHP
Raw Normal View History

2022-09-13 13:14:49 +00:00
<?php
namespace Misuzu\Http\Handlers;
use Misuzu\CSRF;
use Misuzu\Template;
final class ForumHandler extends Handler {
public function markAsReadGET($response, $request) {
if(!$this->context->isLoggedIn())
2022-09-13 13:14:49 +00:00
return 403;
$forumId = (int)$request->getParam('forum', FILTER_SANITIZE_NUMBER_INT);
$response->setContent(Template::renderRaw('confirm', [
'title' => 'Mark forum as read',
'message' => 'Are you sure you want to mark ' . ($forumId === 0 ? 'the entire' : 'this') . ' forum as read?',
'return' => url($forumId ? 'forum-category' : 'forum-index', ['forum' => $forumId]),
'params' => [
'forum' => $forumId,
]
]));
}
public function markAsReadPOST($response, $request) {
if(!$this->context->isLoggedIn())
2022-09-13 13:14:49 +00:00
return 403;
if(!$request->isFormContent())
return 400;
$token = $request->getContent()->getParam('_csrf');
2022-09-13 13:14:49 +00:00
if(empty($token) || !CSRF::validate($token))
return 400;
$forumId = (int)$request->getContent()->getParam('forum', FILTER_SANITIZE_NUMBER_INT);
forum_mark_read($forumId, (int)$this->context->getActiveUser()->getId());
2022-09-13 13:14:49 +00:00
$redirect = url($forumId ? 'forum-category' : 'forum-index', ['forum' => $forumId]);
$response->redirect($redirect, false);
2022-09-13 13:14:49 +00:00
}
}