From 3ea5fff9931b6c972495463848ed18f3d60b876e Mon Sep 17 00:00:00 2001 From: Dominique Fournier Date: Thu, 7 May 2015 13:10:07 +0000 Subject: [PATCH] Add support to baseURLresource used in the HTML page to the modules git-svn-id: https://svn.fournier38.fr/svn/ProgSVN/trunk@2154 bf3deb0d-5f1a-0410-827f-c0cc1f45334c --- route.php | 42 +++++++++++++++++++++++++++++++++++++++--- 1 file changed, 39 insertions(+), 3 deletions(-) diff --git a/route.php b/route.php index ca0ae16..f2bc1dd 100644 --- a/route.php +++ b/route.php @@ -59,6 +59,11 @@ class route if (substr ($this->baseURL, -1) !== "/") $this->baseURL .= "/"; } + elseif (isset ($_SERVER["REQUEST_URI"]) && + strpos ($_SERVER["REQUEST_URI"], "index.php?url=") !== false) + { + $this->baseURL = ""; + } else { // Calculate the root in relative @@ -80,6 +85,21 @@ class route return $this->baseURL; } + /** Return the baseURL for a resource (add a index.php?url= if there is no + mod_rewrite support. Used to link to modules in the HTML page. + The baseURL is the real base of the project, which is different when not + using the mod_rewrite. They are equal when using the mod_rewrite */ + function baseURLresource () + { + if ($this->baseURL === "") + $this->baseURL (); + if (isset ($_SERVER["REQUEST_URI"]) && + strpos ($_SERVER["REQUEST_URI"], "index.php?url=") !== false) + return "index.php?url=".$this->baseURL; + return $this->baseURL; + + } + /** Return the baseURL of the module Always finish with a slash */ function baseURLmodule () @@ -119,7 +139,17 @@ class route $url .= "//".$_SERVER["SERVER_NAME"].$port; } if (isset ($_SERVER["REQUEST_URI"])) - $url .= substr ($_SERVER["REQUEST_URI"], 1+strlen (dirname ($_SERVER["SCRIPT_NAME"]))); + { + // If there is a directory before the index.php file, must remove the + // directory structure + if (dirname ($_SERVER["SCRIPT_NAME"]) !== "/") + $url .= substr ($_SERVER["REQUEST_URI"], + 1+strlen (dirname ($_SERVER["SCRIPT_NAME"]))); + else + // If there is no directory before the index.php (root of the Web server), + // just remove the / + $url = substr ($_SERVER["REQUEST_URI"], 1); + } return $url; } @@ -147,6 +177,13 @@ class route $destURL = $baseURL.substr ($destURL, 1); } + if (strpos ($requestURL, "index.php?url=") !== false) + { + // If not using the mod_rewrite, force the index.php?url= + $destURL = substr ($destURL, strlen ($baseURL)); + $destURL = "index.php?url=".$destURL; + } + // Else http : keep the complete URL if ($destURL === "") throw new Exception ("Destination URL is empty", 500); @@ -307,8 +344,7 @@ class route @param function $function Function to be executed if the route match */ public function map ($route, $function) { - $url = substr ($this->requestURL (), strlen ($this->baseURLmodule ())); - $url = $this->requestURL (); + $url = str_replace ("index.php?url=", "", $this->requestURL ()); if ($this->debug) echo "$url "; if ($url === $route)