misuzu/src/LegacyRoutes.php
2023-09-08 20:40:48 +00:00

137 lines
5.2 KiB
PHP

<?php
namespace Misuzu;
use Index\Routing\Route;
use Index\Routing\RouteHandler;
use Misuzu\URLs\URLRegistry;
class LegacyRoutes extends RouteHandler {
public function __construct(
private URLRegistry $urls
) {}
#[Route('GET', '/index.php')]
public function getIndexPHP($response): void {
$response->redirect($this->urls->format('index'), true);
}
#[Route('GET', '/info.php')]
public function getInfoPHP($response): void {
$response->redirect($this->urls->format('info'), true);
}
#[Route('GET', '/info.php/:name')]
public function getInfoDocsPHP($response, $request, string $name): void {
$response->redirect($this->urls->format('info', ['title' => $name]), true);
}
#[Route('GET', '/info.php/:project/:name')]
public function getInfoProjectPHP($response, $request, string $project, string $name): void {
$response->redirect($this->urls->format('info', ['title' => $project . '/' . $name]), true);
}
#[Route('GET', '/news.php')]
public function getNewsPHP($response, $request): void {
$postId = (int)($request->getParam('n', FILTER_SANITIZE_NUMBER_INT) ?? $request->getParam('p', FILTER_SANITIZE_NUMBER_INT));
if($postId > 0)
$location = $this->urls->format('news-post', ['post' => $postId]);
else {
$catId = (int)$request->getParam('c', FILTER_SANITIZE_NUMBER_INT);
$pageId = $request->getParam('page', FILTER_SANITIZE_NUMBER_INT);
$location = $this->urls->format($catId > 0 ? 'news-category' : 'news-index', ['category' => $catId, 'page' => $pageId]);
}
$response->redirect($location, true);
}
#[Route('GET', '/news.php/rss')]
public function getNewsRssPHP($response, $request): void {
$catId = (int)$request->getParam('c', FILTER_SANITIZE_NUMBER_INT);
$location = $this->urls->format($catId > 0 ? 'news-category-feed-rss' : 'news-feed-rss', ['category' => $catId]);
$response->redirect($location, true);
}
#[Route('GET', '/news.php/atom')]
public function getNewsAtomPHP($response, $request): void {
$catId = (int)$request->getParam('c', FILTER_SANITIZE_NUMBER_INT);
$location = $this->urls->format($catId > 0 ? 'news-category-feed-atom' : 'news-feed-atom', ['category' => $catId]);
$response->redirect($location, true);
}
#[Route('GET', '/news/index.php')]
public function getNewsIndexPHP($response, $request): void {
$response->redirect($this->urls->format('news-index', [
'page' => $request->getParam('page', FILTER_SANITIZE_NUMBER_INT),
]), true);
}
#[Route('GET', '/news/category.php')]
public function getNewsCategoryPHP($response, $request): void {
$response->redirect($this->urls->format('news-category', [
'category' => $request->getParam('c', FILTER_SANITIZE_NUMBER_INT),
'page' => $request->getParam('p', FILTER_SANITIZE_NUMBER_INT),
]), true);
}
#[Route('GET', '/news/post.php')]
public function getNewsPostPHP($response, $request): void {
$response->redirect($this->urls->format('news-post', [
'post' => $request->getParam('p', FILTER_SANITIZE_NUMBER_INT),
]), true);
}
#[Route('GET', '/news/feed.php')]
public function getNewsFeedPHP($response, $request): int {
return 400;
}
#[Route('GET', '/news/feed.php/rss')]
public function getNewsFeedRssPHP($response, $request): void {
$catId = (int)$request->getParam('c', FILTER_SANITIZE_NUMBER_INT);
$response->redirect($this->urls->format(
$catId > 0 ? 'news-category-feed-rss' : 'news-feed-rss',
['category' => $catId]
), true);
}
#[Route('GET', '/news/feed.php/atom')]
public function getNewsFeedAtomPHP($response, $request): void {
$catId = (int)$request->getParam('c', FILTER_SANITIZE_NUMBER_INT);
$response->redirect($this->urls->format(
$catId > 0 ? 'news-category-feed-atom' : 'news-feed-atom',
['category' => $catId]
), true);
}
#[Route('GET', '/changelog.php')]
public function getChangelogPHP($response, $request): void {
$changeId = $request->getParam('c', FILTER_SANITIZE_NUMBER_INT);
if($changeId) {
$response->redirect($this->urls->format('changelog-change', ['change' => $changeId]), true);
return;
}
$response->redirect($this->urls->format('changelog-index', [
'date' => $request->getParam('d'),
'user' => $request->getParam('u', FILTER_SANITIZE_NUMBER_INT),
]), true);
}
#[Route('GET', '/auth.php')]
public function getAuthPHP($response, $request): void {
$response->redirect($this->urls->format(match($request->getParam('m')) {
'logout' => 'auth-logout',
'reset' => 'auth-reset',
'forgot' => 'auth-forgot',
'register' => 'auth-register',
default => 'auth-login',
}), true);
}
#[Route('GET', '/settings.php')]
public function getSettingsPHP($response): void {
$response->redirect($this->urls->format('settings-index'), true);
}
}