aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristian Weiske <cweiske@cweiske.de>2014-07-06 14:20:56 +0200
committerChristian Weiske <cweiske@cweiske.de>2014-07-06 14:20:56 +0200
commitf40a91b0a300377d7c74e764bbf83b27a3dfae5f (patch)
tree0b8baeba316a2c371c65a21c6311210a0f3f9dca
parent18795ac792f80849f509aaf658d860f078b03344 (diff)
downloadphorkie-f40a91b0a300377d7c74e764bbf83b27a3dfae5f.tar.gz
phorkie-f40a91b0a300377d7c74e764bbf83b27a3dfae5f.zip
fix basedir detection for rewritten paths
-rw-r--r--src/phorkie/Tools.php7
-rw-r--r--tests/phorkie/ToolsTest.php21
2 files changed, 28 insertions, 0 deletions
diff --git a/src/phorkie/Tools.php b/src/phorkie/Tools.php
index 7819cda..e97c546 100644
--- a/src/phorkie/Tools.php
+++ b/src/phorkie/Tools.php
@@ -86,6 +86,13 @@ class Tools
return $scriptName . '/';
}
+ if (isset($_GET['id'])) {
+ $idp = strpos($requestUri, '/' . $_GET['id'] . '/');
+ if ($idp !== false) {
+ return substr($requestUri, 0, $idp) . '/';
+ }
+ }
+
if (substr($requestUri, -4) != '.php') {
$requestUri .= '.php';
}
diff --git a/tests/phorkie/ToolsTest.php b/tests/phorkie/ToolsTest.php
index 021797d..d8df8f4 100644
--- a/tests/phorkie/ToolsTest.php
+++ b/tests/phorkie/ToolsTest.php
@@ -3,6 +3,11 @@ namespace phorkie;
class ToolsTest extends \PHPUnit_Framework_TestCase
{
+ public function setUp()
+ {
+ $_GET[] = array();
+ }
+
public function testDetectBaseUrlPhar()
{
$_SERVER['REQUEST_URI'] = '/phar/phorkie-0.4.0.phar/list.php';
@@ -34,6 +39,22 @@ class ToolsTest extends \PHPUnit_Framework_TestCase
$this->assertEquals('/foo/', Tools::detectBaseUrl());
}
+ public function testDetectBaseUrlEdit()
+ {
+ $_GET['id'] = 82;
+ $_SERVER['REQUEST_URI'] = '/82/edit';
+ $_SERVER['SCRIPT_NAME'] = '/edit.php';
+ $this->assertEquals('/', Tools::detectBaseUrl());
+ }
+
+ public function testDetectBaseUrlEditSubdir()
+ {
+ $_GET['id'] = 82;
+ $_SERVER['REQUEST_URI'] = '/foo/82/edit';
+ $_SERVER['SCRIPT_NAME'] = '/edit.php';
+ $this->assertEquals('/foo/', Tools::detectBaseUrl());
+ }
+
public function testFoldPathParentSingle()
{
$this->assertEquals(