From f7a884daee2825652e3a9ff092558385adb37d37 Mon Sep 17 00:00:00 2001 From: Jan Schneider Date: Tue, 21 Dec 2010 20:06:43 +0100 Subject: [PATCH] Fix detecting PATH_INFO if using URL rewriting. --- framework/Util/lib/Horde/Util.php | 15 +++++++++------ framework/Util/test/Horde/Util/UtilTest.php | 8 +++++++- 2 files changed, 16 insertions(+), 7 deletions(-) diff --git a/framework/Util/lib/Horde/Util.php b/framework/Util/lib/Horde/Util.php index 38c6b985b..1094ea8c8 100644 --- a/framework/Util/lib/Horde/Util.php +++ b/framework/Util/lib/Horde/Util.php @@ -720,16 +720,19 @@ class Horde_Util return $_SERVER['PATH_INFO']; } elseif (isset($_SERVER['REQUEST_URI']) && isset($_SERVER['SCRIPT_NAME'])) { - if (basename($_SERVER['SCRIPT_NAME']) == 'index.php') { - $search = array(dirname($_SERVER['SCRIPT_NAME']) . '/', - 'index.php'); - } else { - $search = array($_SERVER['SCRIPT_NAME']); + $search = Horde_String::common($_SERVER['SCRIPT_NAME'], $_SERVER['REQUEST_URI']); + if (substr($search, -1) == '/') { + $search = substr($search, 0, -1); } + $search = array($search); if (!empty($_SERVER['QUERY_STRING'])) { $search[] = '?' . $_SERVER['QUERY_STRING']; } - return str_replace($search, '', $_SERVER['REQUEST_URI']); + $path = str_replace($search, '', $_SERVER['REQUEST_URI']); + if ($path == '/') { + $path = ''; + } + return $path; } return ''; diff --git a/framework/Util/test/Horde/Util/UtilTest.php b/framework/Util/test/Horde/Util/UtilTest.php index 84881e1b3..675b950c4 100644 --- a/framework/Util/test/Horde/Util/UtilTest.php +++ b/framework/Util/test/Horde/Util/UtilTest.php @@ -1,12 +1,16 @@ * @license http://www.fsf.org/copyleft/lgpl.html LGPL * @category Horde * @package Util * @subpackage UnitTests */ - class Horde_Util_UtilTest extends PHPUnit_Framework_TestCase { public function testAddParameter() @@ -112,6 +116,8 @@ class Horde_Util_UtilTest extends PHPUnit_Framework_TestCase $_SERVER['REQUEST_URI'] = '/horde/path.php/foo/bar?baz'; $_SERVER['QUERY_STRING'] = 'baz'; $this->assertEquals('/foo/bar', Horde_Util::getPathInfo()); + $_SERVER['REQUEST_URI'] = '/horde/foo/bar?baz'; + $this->assertEquals('/foo/bar', Horde_Util::getPathInfo()); $_SERVER['REQUEST_URI'] = '/horde/'; $_SERVER['SCRIPT_NAME'] = '/horde/index.php'; -- 2.11.0