From f40a91b0a300377d7c74e764bbf83b27a3dfae5f Mon Sep 17 00:00:00 2001 From: Christian Weiske Date: Sun, 6 Jul 2014 14:20:56 +0200 Subject: [PATCH] fix basedir detection for rewritten paths --- src/phorkie/Tools.php | 7 +++++++ tests/phorkie/ToolsTest.php | 21 +++++++++++++++++++++ 2 files changed, 28 insertions(+) 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( -- 2.30.2