From 7e625f76876dd038d5f75771f8e5dd85d5db233a Mon Sep 17 00:00:00 2001 From: Sergio Vilar Date: Fri, 21 Aug 2015 19:05:23 -0300 Subject: [PATCH] Fixed route triggering with same path and different http methods --- src/router.php | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/src/router.php b/src/router.php index 860a7ae..f792267 100644 --- a/src/router.php +++ b/src/router.php @@ -110,6 +110,7 @@ private function addRoute($method, $parameters) { $robj = []; $route = $this->getPrefix($parameters[0]); $robj['method'] = $method; + $robj['route'] = $route; $robj['id'] = str_replace('=', '', base64_encode($method.$route)); $robj['callback'] = $parameters[count($parameters) -1]; @@ -173,6 +174,13 @@ private function getRoute($route_id) { } } + private function getRouteWithMethod($_route, $method) { + foreach($this->routes as $route) { + if($route['method'] == $method && $route['route'] == $_route['route']) + return $route; + } + } + private function getUrlParameters($params, $query_vars) { $pars = []; foreach($params as $param){ @@ -276,12 +284,15 @@ public function rewrite_url( $wp_rewrite ) { } public function parse_request($wp_query) { - if (isset($wp_query->query_vars['amp_route'])){ $route = $this->getRoute($wp_query->query_vars['amp_route']); + $_route = $this->getRouteWithMethod($route, $_SERVER['REQUEST_METHOD']); + if($route['id'] == $wp_query->query_vars['amp_route'] && $route['method'] == $_SERVER['REQUEST_METHOD']){ $this->getCallback($route, $wp_query->query_vars); + } else if($_route['method'] == $_SERVER['REQUEST_METHOD']) { + $this->getCallback($_route, $wp_query->query_vars); } else { Ampersand::getInstance()->response()->setStatus(404); Ampersand::getInstance()->response()->template('404');