Fix duplicated routes

This commit is contained in:
slawkens 2024-05-31 17:22:39 +02:00
parent 60bd64a639
commit 8ef3d06f1e
2 changed files with 21 additions and 15 deletions

View File

@ -108,7 +108,9 @@ $dispatcher = FastRoute\cachedDispatcher(function (FastRoute\RouteCollector $r)
} }
foreach ($routes as $route) { foreach ($routes as $route) {
if(!isset($isAlreadyDefined[$route[1]])) { $tmp = preg_replace("/\[[^)]+\]/","", $route[1]);
if(!isset($isAlreadyDefined[$tmp])) {
if (strpos($route[2], '__redirect__') === false && strpos($route[2], '__database__') === false) { if (strpos($route[2], '__redirect__') === false && strpos($route[2], '__database__') === false) {
$routesFinal[] = [$route[0], $route[1], 'system/pages/' . $route[2]]; $routesFinal[] = [$route[0], $route[1], 'system/pages/' . $route[2]];
} }
@ -118,7 +120,6 @@ $dispatcher = FastRoute\cachedDispatcher(function (FastRoute\RouteCollector $r)
} }
} }
//var_dump($routesTmp);
foreach ($routesFinal as $route) { foreach ($routesFinal as $route) {
if ($route[0] === '*') { if ($route[0] === '*') {
$route[0] = ['GET', 'POST', 'PUT', 'DELETE', 'PATCH', 'HEAD']; $route[0] = ['GET', 'POST', 'PUT', 'DELETE', 'PATCH', 'HEAD'];

View File

@ -23,6 +23,11 @@ class Plugins {
$routes = []; $routes = [];
foreach(self::getAllPluginsJson() as $plugin) { foreach(self::getAllPluginsJson() as $plugin) {
$priority = 100;
if (isset($plugin['priority'])) {
$priority = $plugin['priority'];
}
// //
// Get all plugins/*/pages/*.php pages // Get all plugins/*/pages/*.php pages
// //
@ -31,7 +36,7 @@ class Plugins {
$file = str_replace(PLUGINS, 'plugins/', $file); $file = str_replace(PLUGINS, 'plugins/', $file);
$name = pathinfo($file, PATHINFO_FILENAME); $name = pathinfo($file, PATHINFO_FILENAME);
$routes[] = [['get', 'post'], $name, $file, 1000]; $routes[] = [['get', 'post'], $name, $file, $priority];
} }
// //
@ -46,14 +51,14 @@ class Plugins {
$file = str_replace(PLUGINS, 'plugins/', $file); $file = str_replace(PLUGINS, 'plugins/', $file);
$name = $folderName . '/' . pathinfo($file, PATHINFO_FILENAME); $name = $folderName . '/' . pathinfo($file, PATHINFO_FILENAME);
$routes[] = [['get', 'post'], $name, $file, 1000]; $routes[] = [['get', 'post'], $name, $file, $priority];
} }
} }
$warningPreTitle = 'Plugin: ' . $plugin['name'] . ' - '; $warningPreTitle = 'Plugin: ' . $plugin['name'] . ' - ';
if (isset($plugin['routes'])) { if (isset($plugin['routes'])) {
foreach ($plugin['routes'] as $_name => $info) { foreach ($plugin['routes'] as $info) {
// default method: get // default method: get
$method = $info['method'] ?? ['GET']; $method = $info['method'] ?? ['GET'];
if ($method !== '*') { if ($method !== '*') {
@ -106,7 +111,7 @@ class Plugins {
} }
} }
} }
/*
usort($routes, function ($a, $b) usort($routes, function ($a, $b)
{ {
// key 3 is priority // key 3 is priority
@ -114,9 +119,9 @@ class Plugins {
return 0; return 0;
} }
return ($a[3] > $b[3]) ? -1 : 1; return ($a[3] < $b[3]) ? -1 : 1;
}); });
*/
// cleanup before passing back // cleanup before passing back
// priority is not needed anymore // priority is not needed anymore
foreach ($routes as &$route) { foreach ($routes as &$route) {