From df2545dd37b938ebfddd9fded79f779b227eb082 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Simon=20Sessing=C3=B8?= Date: Sat, 19 Dec 2015 20:15:10 +0100 Subject: [PATCH] [TASK] - Added support for setups where getallheaders function is not availible. - Made matchDomain method in RouterGroup always return boolean. --- src/Pecee/Http/Request.php | 12 +++++++++++- src/Pecee/SimpleRouter/RouterBase.php | 17 ++++++++++------- src/Pecee/SimpleRouter/RouterGroup.php | 6 +++--- 3 files changed, 24 insertions(+), 11 deletions(-) diff --git a/src/Pecee/Http/Request.php b/src/Pecee/Http/Request.php index 21ace3a..3037ac8 100644 --- a/src/Pecee/Http/Request.php +++ b/src/Pecee/Http/Request.php @@ -27,7 +27,17 @@ class Request { $this->host = $_SERVER['HTTP_HOST']; $this->uri = $_SERVER['REQUEST_URI']; $this->method = (isset($_POST['_method'])) ? strtolower($_POST['_method']) : strtolower($_SERVER['REQUEST_METHOD']); - $this->headers = array_change_key_case(getallheaders(), CASE_LOWER); + $this->headers = $this->getAllHeaders(); + } + + public function getAllHeaders() { + $headers = array(); + foreach ($_SERVER as $name => $value) { + if (substr($name, 0, 5) === 'HTTP_') { + $headers[str_replace(' ', '-', strtolower(str_replace('_', ' ', substr($name, 5))))] = $value; + } + } + return $headers; } public function getIsSecure() { diff --git a/src/Pecee/SimpleRouter/RouterBase.php b/src/Pecee/SimpleRouter/RouterBase.php index 895c10b..4246757 100644 --- a/src/Pecee/SimpleRouter/RouterBase.php +++ b/src/Pecee/SimpleRouter/RouterBase.php @@ -54,7 +54,10 @@ class RouterBase { $route = $routes[$i]; $route->addSettings($settings); - $route->setGroup($group); + + if($backStack) { + $route->setGroup($group); + } if($this->defaultNamespace && !$route->getNamespace()) { $namespace = null; @@ -124,6 +127,12 @@ class RouterBase { $route = $this->controllerUrlMap[$i]; + if($route->getGroup() !== null) { + if($route->getGroup()->matchDomain($this->request) === false) { + continue; + } + } + $routeMatch = $route->matchRoute($this->request); if($routeMatch) { @@ -133,12 +142,6 @@ class RouterBase { continue; } - if($route->getGroup() !== null) { - if($route->getGroup()->matchDomain($this->request) === null) { - continue; - } - } - $routeNotAllowed = false; $this->loadedRoute = $route; diff --git a/src/Pecee/SimpleRouter/RouterGroup.php b/src/Pecee/SimpleRouter/RouterGroup.php index 2da215e..a44c91f 100644 --- a/src/Pecee/SimpleRouter/RouterGroup.php +++ b/src/Pecee/SimpleRouter/RouterGroup.php @@ -28,7 +28,7 @@ class RouterGroup extends RouterEntry { } } - return null; + return false; } $parameters = $this->parseParameters($this->domain, $request->getHost(), '[^.]*'); @@ -38,10 +38,10 @@ class RouterGroup extends RouterEntry { return true; } - return null; + return false; } - return false; + return true; } public function renderRoute(Request $request) {