aboutsummaryrefslogtreecommitdiffhomepage
path: root/application
diff options
context:
space:
mode:
Diffstat (limited to 'application')
-rw-r--r--application/front/controller/admin/ShaarliAdminController.php2
-rw-r--r--application/front/controller/visitor/FeedController.php4
-rw-r--r--application/front/controller/visitor/ShaarliVisitorController.php26
-rw-r--r--application/legacy/LegacyController.php12
-rw-r--r--application/legacy/LegacyRouter.php134
-rw-r--r--application/plugin/PluginManager.php4
6 files changed, 36 insertions, 146 deletions
diff --git a/application/front/controller/admin/ShaarliAdminController.php b/application/front/controller/admin/ShaarliAdminController.php
index 3b5939bb..c26c9cbe 100644
--- a/application/front/controller/admin/ShaarliAdminController.php
+++ b/application/front/controller/admin/ShaarliAdminController.php
@@ -4,9 +4,7 @@ declare(strict_types=1);
4 4
5namespace Shaarli\Front\Controller\Admin; 5namespace Shaarli\Front\Controller\Admin;
6 6
7use Shaarli\Container\ShaarliContainer;
8use Shaarli\Front\Controller\Visitor\ShaarliVisitorController; 7use Shaarli\Front\Controller\Visitor\ShaarliVisitorController;
9use Shaarli\Front\Exception\UnauthorizedException;
10use Shaarli\Front\Exception\WrongTokenException; 8use Shaarli\Front\Exception\WrongTokenException;
11use Shaarli\Security\SessionManager; 9use Shaarli\Security\SessionManager;
12use Slim\Http\Request; 10use Slim\Http\Request;
diff --git a/application/front/controller/visitor/FeedController.php b/application/front/controller/visitor/FeedController.php
index da2848c2..8d8b546a 100644
--- a/application/front/controller/visitor/FeedController.php
+++ b/application/front/controller/visitor/FeedController.php
@@ -46,10 +46,10 @@ class FeedController extends ShaarliVisitorController
46 46
47 $data = $this->container->feedBuilder->buildData($feedType, $request->getParams()); 47 $data = $this->container->feedBuilder->buildData($feedType, $request->getParams());
48 48
49 $this->executePageHooks('render_feed', $data, $feedType); 49 $this->executePageHooks('render_feed', $data, 'feed.' . $feedType);
50 $this->assignAllView($data); 50 $this->assignAllView($data);
51 51
52 $content = $this->render('feed.'. $feedType); 52 $content = $this->render('feed.' . $feedType);
53 53
54 $cache->cache($content); 54 $cache->cache($content);
55 55
diff --git a/application/front/controller/visitor/ShaarliVisitorController.php b/application/front/controller/visitor/ShaarliVisitorController.php
index f17c8ed3..cd27455b 100644
--- a/application/front/controller/visitor/ShaarliVisitorController.php
+++ b/application/front/controller/visitor/ShaarliVisitorController.php
@@ -78,16 +78,14 @@ abstract class ShaarliVisitorController
78 'footer', 78 'footer',
79 ]; 79 ];
80 80
81 $parameters = $this->buildPluginParameters($template);
82
81 foreach ($common_hooks as $name) { 83 foreach ($common_hooks as $name) {
82 $pluginData = []; 84 $pluginData = [];
83 $this->container->pluginManager->executeHooks( 85 $this->container->pluginManager->executeHooks(
84 'render_' . $name, 86 'render_' . $name,
85 $pluginData, 87 $pluginData,
86 [ 88 $parameters
87 'target' => $template,
88 'loggedin' => $this->container->loginManager->isLoggedIn(),
89 'basePath' => $this->container->basePath,
90 ]
91 ); 89 );
92 $this->assignView('plugins_' . $name, $pluginData); 90 $this->assignView('plugins_' . $name, $pluginData);
93 } 91 }
@@ -95,19 +93,23 @@ abstract class ShaarliVisitorController
95 93
96 protected function executePageHooks(string $hook, array &$data, string $template = null): void 94 protected function executePageHooks(string $hook, array &$data, string $template = null): void
97 { 95 {
98 $params = [
99 'target' => $template,
100 'loggedin' => $this->container->loginManager->isLoggedIn(),
101 'basePath' => $this->container->basePath,
102 ];
103
104 $this->container->pluginManager->executeHooks( 96 $this->container->pluginManager->executeHooks(
105 $hook, 97 $hook,
106 $data, 98 $data,
107 $params 99 $this->buildPluginParameters($template)
108 ); 100 );
109 } 101 }
110 102
103 protected function buildPluginParameters(?string $template): array
104 {
105 return [
106 'target' => $template,
107 'loggedin' => $this->container->loginManager->isLoggedIn(),
108 'basePath' => $this->container->basePath,
109 'bookmarkService' => $this->container->bookmarkService
110 ];
111 }
112
111 /** 113 /**
112 * Simple helper which prepend the base path to redirect path. 114 * Simple helper which prepend the base path to redirect path.
113 * 115 *
diff --git a/application/legacy/LegacyController.php b/application/legacy/LegacyController.php
index e16dd0f4..826604e7 100644
--- a/application/legacy/LegacyController.php
+++ b/application/legacy/LegacyController.php
@@ -39,13 +39,23 @@ class LegacyController extends ShaarliVisitorController
39 /** Legacy route: ?post= */ 39 /** Legacy route: ?post= */
40 public function post(Request $request, Response $response): Response 40 public function post(Request $request, Response $response): Response
41 { 41 {
42 $parameters = count($request->getQueryParams()) > 0 ? '?' . http_build_query($request->getQueryParams()) : '';
43 $route = '/admin/shaare'; 42 $route = '/admin/shaare';
43 $buildParameters = function (?array $parameters, bool $encode) {
44 if ($encode) {
45 $parameters = array_map('urlencode', $parameters);
46 }
47
48 return count($parameters) > 0 ? '?' . http_build_query($parameters) : '';
49 };
50
44 51
45 if (!$this->container->loginManager->isLoggedIn()) { 52 if (!$this->container->loginManager->isLoggedIn()) {
53 $parameters = $buildParameters($request->getQueryParams(), true);
46 return $this->redirect($response, '/login?returnurl='. $this->getBasePath() . $route . $parameters); 54 return $this->redirect($response, '/login?returnurl='. $this->getBasePath() . $route . $parameters);
47 } 55 }
48 56
57 $parameters = $buildParameters($request->getQueryParams(), false);
58
49 return $this->redirect($response, $route . $parameters); 59 return $this->redirect($response, $route . $parameters);
50 } 60 }
51 61
diff --git a/application/legacy/LegacyRouter.php b/application/legacy/LegacyRouter.php
index cea99154..0449c7e1 100644
--- a/application/legacy/LegacyRouter.php
+++ b/application/legacy/LegacyRouter.php
@@ -17,15 +17,15 @@ class LegacyRouter
17 17
18 public static $PAGE_PICWALL = 'picwall'; 18 public static $PAGE_PICWALL = 'picwall';
19 19
20 public static $PAGE_TAGCLOUD = 'tagcloud'; 20 public static $PAGE_TAGCLOUD = 'tag.cloud';
21 21
22 public static $PAGE_TAGLIST = 'taglist'; 22 public static $PAGE_TAGLIST = 'tag.list';
23 23
24 public static $PAGE_DAILY = 'daily'; 24 public static $PAGE_DAILY = 'daily';
25 25
26 public static $PAGE_FEED_ATOM = 'atom'; 26 public static $PAGE_FEED_ATOM = 'feed.atom';
27 27
28 public static $PAGE_FEED_RSS = 'rss'; 28 public static $PAGE_FEED_RSS = 'feed.rss';
29 29
30 public static $PAGE_TOOLS = 'tools'; 30 public static $PAGE_TOOLS = 'tools';
31 31
@@ -37,7 +37,7 @@ class LegacyRouter
37 37
38 public static $PAGE_ADDLINK = 'addlink'; 38 public static $PAGE_ADDLINK = 'addlink';
39 39
40 public static $PAGE_EDITLINK = 'edit_link'; 40 public static $PAGE_EDITLINK = 'editlink';
41 41
42 public static $PAGE_DELETELINK = 'delete_link'; 42 public static $PAGE_DELETELINK = 'delete_link';
43 43
@@ -60,128 +60,4 @@ class LegacyRouter
60 public static $PAGE_THUMBS_UPDATE = 'thumbs_update'; 60 public static $PAGE_THUMBS_UPDATE = 'thumbs_update';
61 61
62 public static $GET_TOKEN = 'token'; 62 public static $GET_TOKEN = 'token';
63
64 /**
65 * Reproducing renderPage() if hell, to avoid regression.
66 *
67 * This highlights how bad this needs to be rewrite,
68 * but let's focus on plugins for now.
69 *
70 * @param string $query $_SERVER['QUERY_STRING'].
71 * @param array $get $_SERVER['GET'].
72 * @param bool $loggedIn true if authenticated user.
73 *
74 * @return string page found.
75 */
76 public static function findPage($query, $get, $loggedIn)
77 {
78 $loggedIn = ($loggedIn === true) ? true : false;
79
80 if (empty($query) && !isset($get['edit_link']) && !isset($get['post'])) {
81 return self::$PAGE_LINKLIST;
82 }
83
84 if (startsWith($query, 'do=' . self::$PAGE_LOGIN) && $loggedIn === false) {
85 return self::$PAGE_LOGIN;
86 }
87
88 if (startsWith($query, 'do=' . self::$PAGE_PICWALL)) {
89 return self::$PAGE_PICWALL;
90 }
91
92 if (startsWith($query, 'do=' . self::$PAGE_TAGCLOUD)) {
93 return self::$PAGE_TAGCLOUD;
94 }
95
96 if (startsWith($query, 'do=' . self::$PAGE_TAGLIST)) {
97 return self::$PAGE_TAGLIST;
98 }
99
100 if (startsWith($query, 'do=' . self::$PAGE_OPENSEARCH)) {
101 return self::$PAGE_OPENSEARCH;
102 }
103
104 if (startsWith($query, 'do=' . self::$PAGE_DAILY)) {
105 return self::$PAGE_DAILY;
106 }
107
108 if (startsWith($query, 'do=' . self::$PAGE_FEED_ATOM)) {
109 return self::$PAGE_FEED_ATOM;
110 }
111
112 if (startsWith($query, 'do=' . self::$PAGE_FEED_RSS)) {
113 return self::$PAGE_FEED_RSS;
114 }
115
116 if (startsWith($query, 'do=' . self::$PAGE_THUMBS_UPDATE)) {
117 return self::$PAGE_THUMBS_UPDATE;
118 }
119
120 if (startsWith($query, 'do=' . self::$AJAX_THUMB_UPDATE)) {
121 return self::$AJAX_THUMB_UPDATE;
122 }
123
124 // At this point, only loggedin pages.
125 if (!$loggedIn) {
126 return self::$PAGE_LINKLIST;
127 }
128
129 if (startsWith($query, 'do=' . self::$PAGE_TOOLS)) {
130 return self::$PAGE_TOOLS;
131 }
132
133 if (startsWith($query, 'do=' . self::$PAGE_CHANGEPASSWORD)) {
134 return self::$PAGE_CHANGEPASSWORD;
135 }
136
137 if (startsWith($query, 'do=' . self::$PAGE_CONFIGURE)) {
138 return self::$PAGE_CONFIGURE;
139 }
140
141 if (startsWith($query, 'do=' . self::$PAGE_CHANGETAG)) {
142 return self::$PAGE_CHANGETAG;
143 }
144
145 if (startsWith($query, 'do=' . self::$PAGE_ADDLINK)) {
146 return self::$PAGE_ADDLINK;
147 }
148
149 if (isset($get['edit_link']) || isset($get['post'])) {
150 return self::$PAGE_EDITLINK;
151 }
152
153 if (isset($get['delete_link'])) {
154 return self::$PAGE_DELETELINK;
155 }
156
157 if (isset($get[self::$PAGE_CHANGE_VISIBILITY])) {
158 return self::$PAGE_CHANGE_VISIBILITY;
159 }
160
161 if (startsWith($query, 'do=' . self::$PAGE_PINLINK)) {
162 return self::$PAGE_PINLINK;
163 }
164
165 if (startsWith($query, 'do=' . self::$PAGE_EXPORT)) {
166 return self::$PAGE_EXPORT;
167 }
168
169 if (startsWith($query, 'do=' . self::$PAGE_IMPORT)) {
170 return self::$PAGE_IMPORT;
171 }
172
173 if (startsWith($query, 'do=' . self::$PAGE_PLUGINSADMIN)) {
174 return self::$PAGE_PLUGINSADMIN;
175 }
176
177 if (startsWith($query, 'do=' . self::$PAGE_SAVE_PLUGINSADMIN)) {
178 return self::$PAGE_SAVE_PLUGINSADMIN;
179 }
180
181 if (startsWith($query, 'do=' . self::$GET_TOKEN)) {
182 return self::$GET_TOKEN;
183 }
184
185 return self::$PAGE_LINKLIST;
186 }
187} 63}
diff --git a/application/plugin/PluginManager.php b/application/plugin/PluginManager.php
index 2d93cb3a..7881e3be 100644
--- a/application/plugin/PluginManager.php
+++ b/application/plugin/PluginManager.php
@@ -112,6 +112,10 @@ class PluginManager
112 $data['_BASE_PATH_'] = $params['basePath']; 112 $data['_BASE_PATH_'] = $params['basePath'];
113 } 113 }
114 114
115 if (isset($params['bookmarkService'])) {
116 $data['_BOOKMARK_SERVICE_'] = $params['bookmarkService'];
117 }
118
115 foreach ($this->loadedPlugins as $plugin) { 119 foreach ($this->loadedPlugins as $plugin) {
116 $hookFunction = $this->buildHookName($hook, $plugin); 120 $hookFunction = $this->buildHookName($hook, $plugin);
117 121