]> git.immae.eu Git - github/shaarli/Shaarli.git/blob - application/legacy/LegacyController.php
75fa9d2cfb962cf1009bea63da16ed0d41a74c93
[github/shaarli/Shaarli.git] / application / legacy / LegacyController.php
1 <?php
2
3 declare(strict_types=1);
4
5 namespace Shaarli\Legacy;
6
7 use Shaarli\Feed\FeedBuilder;
8 use Shaarli\Front\Controller\Visitor\ShaarliVisitorController;
9 use Slim\Http\Request;
10 use Slim\Http\Response;
11
12 /**
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.
16 *
17 * @deprecated
18 */
19 class LegacyController extends ShaarliVisitorController
20 {
21 /** @var string[] Both `?post` and `?addlink` do not use `?do=` format. */
22 public const LEGACY_GET_ROUTES = [
23 'post',
24 'addlink',
25 ];
26
27 /**
28 * This method will call `$action` method, which will redirect to corresponding Slim route.
29 */
30 public function process(Request $request, Response $response, string $action): Response
31 {
32 if (!method_exists($this, $action)) {
33 throw new UnknowLegacyRouteException();
34 }
35
36 return $this->{$action}($request, $response);
37 }
38
39 /** Legacy route: ?post= */
40 public function post(Request $request, Response $response): Response
41 {
42 $parameters = count($request->getQueryParams()) > 0 ? '?' . http_build_query($request->getQueryParams()) : '';
43 $route = '/admin/shaare';
44
45 if (!$this->container->loginManager->isLoggedIn()) {
46 return $this->redirect($response, '/login?returnurl='. $this->getBasePath() . $route . $parameters);
47 }
48
49 return $this->redirect($response, $route . $parameters);
50 }
51
52 /** Legacy route: ?addlink= */
53 protected function addlink(Request $request, Response $response): Response
54 {
55 $route = '/admin/add-shaare';
56
57 if (!$this->container->loginManager->isLoggedIn()) {
58 return $this->redirect($response, '/login?returnurl=' . $this->getBasePath() . $route);
59 }
60
61 return $this->redirect($response, $route);
62 }
63
64 /** Legacy route: ?do=login */
65 protected function login(Request $request, Response $response): Response
66 {
67 $returnUrl = $request->getQueryParam('returnurl');
68
69 return $this->redirect($response, '/login' . ($returnUrl ? '?returnurl=' . $returnUrl : ''));
70 }
71
72 /** Legacy route: ?do=logout */
73 protected function logout(Request $request, Response $response): Response
74 {
75 return $this->redirect($response, '/admin/logout');
76 }
77
78 /** Legacy route: ?do=picwall */
79 protected function picwall(Request $request, Response $response): Response
80 {
81 return $this->redirect($response, '/picture-wall');
82 }
83
84 /** Legacy route: ?do=tagcloud */
85 protected function tagcloud(Request $request, Response $response): Response
86 {
87 return $this->redirect($response, '/tags/cloud');
88 }
89
90 /** Legacy route: ?do=taglist */
91 protected function taglist(Request $request, Response $response): Response
92 {
93 return $this->redirect($response, '/tags/list');
94 }
95
96 /** Legacy route: ?do=daily */
97 protected function daily(Request $request, Response $response): Response
98 {
99 $dayParam = !empty($request->getParam('day')) ? '?day=' . escape($request->getParam('day')) : '';
100
101 return $this->redirect($response, '/daily' . $dayParam);
102 }
103
104 /** Legacy route: ?do=rss */
105 protected function rss(Request $request, Response $response): Response
106 {
107 return $this->feed($request, $response, FeedBuilder::$FEED_RSS);
108 }
109
110 /** Legacy route: ?do=atom */
111 protected function atom(Request $request, Response $response): Response
112 {
113 return $this->feed($request, $response, FeedBuilder::$FEED_ATOM);
114 }
115
116 /** Legacy route: ?do=opensearch */
117 protected function opensearch(Request $request, Response $response): Response
118 {
119 return $this->redirect($response, '/open-search');
120 }
121
122 /** Legacy route: ?do=dailyrss */
123 protected function dailyrss(Request $request, Response $response): Response
124 {
125 return $this->redirect($response, '/daily-rss');
126 }
127
128 /** Legacy route: ?do=feed */
129 protected function feed(Request $request, Response $response, string $feedType): Response
130 {
131 $parameters = count($request->getQueryParams()) > 0 ? '?' . http_build_query($request->getQueryParams()) : '';
132
133 return $this->redirect($response, '/feed/' . $feedType . $parameters);
134 }
135 }