3 declare(strict_types
=1);
5 namespace Shaarli\Legacy
;
7 use Shaarli\Feed\FeedBuilder
;
8 use Shaarli\Front\Controller\Visitor\ShaarliVisitorController
;
10 use Slim\Http\Response
;
13 * We use this to maintain legacy routes, and redirect requests to the corresponding Slim route.
14 * Only public routes, and both `?addlink` and `?post` were kept here.
15 * Other routes will just display the linklist.
19 class LegacyController
extends ShaarliVisitorController
21 /** @var string[] Both `?post` and `?addlink` do not use `?do=` format. */
22 public const LEGACY_GET_ROUTES
= [
28 * This method will call `$action` method, which will redirect to corresponding Slim route.
30 public function process(Request
$request, Response
$response, string $action): Response
32 if (!method_exists($this, $action)) {
33 throw new UnknowLegacyRouteException();
36 return $this->{$action
}($request, $response);
39 /** Legacy route: ?post= */
40 public function post(Request
$request, Response
$response): Response
42 $parameters = count($request->getQueryParams()) > 0 ? '?' . http_build_query($request->getQueryParams()) : '';
44 if (!$this->container
->loginManager
->isLoggedIn()) {
45 return $this->redirect($response, '/login' . $parameters);
48 return $this->redirect($response, '/admin/shaare' . $parameters);
51 /** Legacy route: ?addlink= */
52 protected function addlink(Request
$request, Response
$response): Response
54 if (!$this->container
->loginManager
->isLoggedIn()) {
55 return $this->redirect($response, '/login');
58 return $this->redirect($response, '/admin/add-shaare');
61 /** Legacy route: ?do=login */
62 protected function login(Request
$request, Response
$response): Response
64 return $this->redirect($response, '/login');
67 /** Legacy route: ?do=logout */
68 protected function logout(Request
$request, Response
$response): Response
70 return $this->redirect($response, '/admin/logout');
73 /** Legacy route: ?do=picwall */
74 protected function picwall(Request
$request, Response
$response): Response
76 return $this->redirect($response, '/picture-wall');
79 /** Legacy route: ?do=tagcloud */
80 protected function tagcloud(Request
$request, Response
$response): Response
82 return $this->redirect($response, '/tags/cloud');
85 /** Legacy route: ?do=taglist */
86 protected function taglist(Request
$request, Response
$response): Response
88 return $this->redirect($response, '/tags/list');
91 /** Legacy route: ?do=daily */
92 protected function daily(Request
$request, Response
$response): Response
94 $dayParam = !empty($request->getParam('day')) ? '?day=' . escape($request->getParam('day')) : '';
96 return $this->redirect($response, '/daily' . $dayParam);
99 /** Legacy route: ?do=rss */
100 protected function rss(Request
$request, Response
$response): Response
102 return $this->feed($request, $response, FeedBuilder
::$FEED_RSS);
105 /** Legacy route: ?do=atom */
106 protected function atom(Request
$request, Response
$response): Response
108 return $this->feed($request, $response, FeedBuilder
::$FEED_ATOM);
111 /** Legacy route: ?do=opensearch */
112 protected function opensearch(Request
$request, Response
$response): Response
114 return $this->redirect($response, '/open-search');
117 /** Legacy route: ?do=dailyrss */
118 protected function dailyrss(Request
$request, Response
$response): Response
120 return $this->redirect($response, '/daily-rss');
123 /** Legacy route: ?do=feed */
124 protected function feed(Request
$request, Response
$response, string $feedType): Response
126 $parameters = count($request->getQueryParams()) > 0 ? '?' . http_build_query($request->getQueryParams()) : '';
128 return $this->redirect($response, '/feed/' . $feedType . $parameters);