Remove releasenotes from build.xml
[phorkie.git] / src / stub-phar.php
index 72e367d17e2a0ceb897e6ab2e1dd8a65563b38a3..859152bf8c6d6e3993ec3ef00ab64efb83bc0f5d 100644 (file)
@@ -9,7 +9,7 @@
  * @author    Christian Weiske <cweiske@cweiske.de>
  * @copyright 2014 Christian Weiske
  * @license   http://www.gnu.org/licenses/agpl.html GNU AGPL v3
- * @link      http://phorkie.sf.net/
+ * @link      https://cweiske.de/phorkie.htm
  */
 if (!in_array('phar', stream_get_wrappers()) || !class_exists('Phar', false)) {
     echo "Phar extension not avaiable\n";
@@ -45,10 +45,41 @@ function rewritePath($path)
         return 'www/index.php';
     }
 
-    if (substr($path, -4) == '.css') {
+    $path = rewriteWithHtaccess($path);
+
+    if (substr($path, -4) == '.css'
+        || substr($path, -3) == '.js'
+        || substr($path, 0, 9) == '/phorkie/'
+    ) {
         header('Expires: ' . date('r', time() + 86400 * 7));
     }
-    return $path;
+    return 'www' . $path;
+}
+
+function rewriteWithHtaccess($path)
+{
+    //remove the leading slash /
+    $cpath = substr($path, 1);
+    $bFoundMatch = false;
+    $map = include('phar://' . __FILE__ . '/src/gen-rewritemap.php');
+    foreach ($map as $pattern => $replace) {
+        if (preg_match($pattern, $cpath, $matches)) {
+            $bFoundMatch = true;
+            break;
+        }
+    }
+    if (!$bFoundMatch) {
+        return $path;
+    }
+    $newcpath = preg_replace($pattern, $replace, $cpath);
+    if (strpos($newcpath, '?') === false) {
+        return '/' . $newcpath;
+    }
+    list($cfile, $getParams) = explode('?', $newcpath, 2);
+    if ($getParams != '') {
+        parse_str($getParams, $_GET);
+    }
+    return '/' . $cfile;
 }
 
 //Phar::interceptFileFuncs();