From 1e089895356ba3dc019b08b47838a6879e66dc50 Mon Sep 17 00:00:00 2001 From: nnssn Date: Fri, 5 Aug 2016 14:53:11 +0900 Subject: [PATCH] fix module reserved routes --- classes/module.php | 16 ++-------------- classes/request.php | 23 +---------------------- classes/router.php | 36 ++++++++++++++++++++++++++++++++++++ 3 files changed, 39 insertions(+), 36 deletions(-) diff --git a/classes/module.php b/classes/module.php index a9318a9499..9bbe1b0ef6 100644 --- a/classes/module.php +++ b/classes/module.php @@ -122,20 +122,8 @@ public static function unload($module) // load and add the module routes $module_routes = \Fuel::load($path); - $route_names = array(); - foreach($module_routes as $name => $_route) - { - if ($name === '_root_') - { - $name = $module; - } - elseif (strpos($name, $module.'/') !== 0 and $name != $module and $name !== '_404_') - { - $name = $module.'/'.$name; - } - - $route_names[] = $name; - }; + $routes = \Router::parse_module_routes($module_routes, $module); + $route_names = array_keys($routes); // delete the defined module routes \Router::delete($route_names); diff --git a/classes/request.php b/classes/request.php index 8f1a2c2f29..f43a309362 100644 --- a/classes/request.php +++ b/classes/request.php @@ -280,28 +280,7 @@ public function __construct($uri, $route = true, $method = null) // load and add the module routes $module_routes = \Fuel::load($module_path); - $reserve_routes = array( - '_root_' => $module, - '_403_' => '_403_', - '_404_' => '_404_', - '_500_' => '_500_', - $module => $module, - ); - - $prepped_routes = array(); - foreach($module_routes as $name => $_route) - { - if (isset($reserve_routes[$name])) - { - $name = $reserve_routes[$name]; - } - elseif (strpos($name, $module.'/') !== 0) - { - $name = $module.'/'.$name; - } - - $prepped_routes[$name] = $_route; - }; + $prepped_routes = \Router::parse_module_routes($module_routes, $module); // update the loaded list of routes \Router::add($prepped_routes, null, true); diff --git a/classes/router.php b/classes/router.php index 1cf18eefd6..25b4188172 100644 --- a/classes/router.php +++ b/classes/router.php @@ -196,6 +196,42 @@ public static function delete($path, $case_sensitive = null) } } + /** + * It parses the module routes + * + * @param array $module_routes + * @param string $module_name + * @return array + * @see Fuel\Core\Request::__construct, Fuel\Core\Module::unload + */ + public static function parse_module_routes(array $module_routes, $module_name) + { + $routes = array(); + + foreach ($module_routes as $name => $path) + { + if ($name === '_root_') + { + $name = $module_name; + } + + // Exception routings. Redundant condition for short-circuit evaluation + elseif ($name[0] === '_' and preg_match('/\A_(4|5)\d{2}_\z/', $name)) { + // do nothing + } + + // Add if there is no module name + elseif (strpos($name, $module_name . '/') !== 0 and $name !== $module_name) + { + $name = $module_name . '/' . $name; + } + + $routes[$name] = $path; + }; + + return $routes; + } + /** * Processes the given request using the defined routes *