config file setup instructions
[phorkie.git] / src / phorkie / Tools.php
index 9435dc047d560624036e464ccf76851c5b49ad2c..7819cda77efb956bf6cf35ae58a20c9398c12a23 100644 (file)
@@ -13,6 +13,9 @@ class Tools
      */
     public static function recursiveDelete($path)
     {
+        if (!file_exists($path)) {
+            return true;
+        }
         if (!is_dir($path) || is_link($path)) {
             return unlink($path);
         }
@@ -35,14 +38,14 @@ class Tools
      *
      * @return string Full URL
      */
-    public static function fullUrl($path)
+    public static function fullUrl($path = '')
     {
         if (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS']) {
             $prot = 'https';
         } else {
             $prot = 'http';
         }
-        return $prot . '://' . $_SERVER['HTTP_HOST'] . $path;
+        return $prot . '://' . $_SERVER['HTTP_HOST'] . $GLOBALS['phorkie']['cfg']['baseurl'] . $path;
     }
 
     /**
@@ -67,6 +70,43 @@ class Tools
         return $file;
     }
 
-}
 
+    public static function detectBaseUrl()
+    {
+        if (!isset($_SERVER['REQUEST_URI'])
+            || !isset($_SERVER['SCRIPT_NAME'])
+        ) {
+            return '/';
+        }
+
+        $scriptName = $_SERVER['SCRIPT_NAME'];
+        $requestUri = $_SERVER['REQUEST_URI'];
+        if (substr($scriptName, -4) != '.php') {
+            //a phar
+            return $scriptName . '/';
+        }
+
+        if (substr($requestUri, -4) != '.php') {
+            $requestUri .= '.php';
+        }
+        $snl = strlen($scriptName);
+        if (substr($requestUri, -$snl) == $scriptName) {
+            return substr($requestUri, 0, -$snl) . '/';
+        }
+
+        return '/';
+    }
+
+    /**
+     * Resolves "/../" and "/./" in file paths without validating them.
+     */
+    public static function foldPath($path)
+    {
+        $path = str_replace('/./', '/', $path);
+        $path = str_replace('/./', '/', $path);
+        $path = preg_replace('#/[^/]+/\.\./#', '/', $path);
+        $path = preg_replace('#/[^/]+/\.\./#', '/', $path);
+        return $path;
+    }
+}
 ?>