|
|
@@ -545,13 +545,13 @@ class Zend_Controller_Request_Http extends Zend_Controller_Request_Abstract
|
|
|
*
|
|
|
* @return string
|
|
|
*/
|
|
|
- public function getBaseUrl()
|
|
|
+ public function getBaseUrl($raw = false)
|
|
|
{
|
|
|
if (null === $this->_baseUrl) {
|
|
|
$this->setBaseUrl();
|
|
|
}
|
|
|
|
|
|
- return urldecode($this->_baseUrl);
|
|
|
+ return (($raw == false) ? urldecode($this->_baseUrl) : $this->_baseUrl);
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
@@ -612,31 +612,37 @@ class Zend_Controller_Request_Http extends Zend_Controller_Request_Abstract
|
|
|
public function setPathInfo($pathInfo = null)
|
|
|
{
|
|
|
if ($pathInfo === null) {
|
|
|
- $baseUrl = $this->getBaseUrl();
|
|
|
-
|
|
|
+ $baseUrl = $this->getBaseUrl(); // this actually calls setBaseUrl() & setRequestUri()
|
|
|
+ $baseUrlRaw = $this->getBaseUrl(false);
|
|
|
+ $baseUrlEncoded = urlencode($baseUrlRaw);
|
|
|
+
|
|
|
if (null === ($requestUri = $this->getRequestUri())) {
|
|
|
return $this;
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
// Remove the query string from REQUEST_URI
|
|
|
if ($pos = strpos($requestUri, '?')) {
|
|
|
$requestUri = substr($requestUri, 0, $pos);
|
|
|
}
|
|
|
-
|
|
|
- $requestUri = urldecode($requestUri);
|
|
|
-
|
|
|
- if (null !== $baseUrl
|
|
|
- && ((!empty($baseUrl) && 0 === strpos($requestUri, $baseUrl))
|
|
|
- || empty($baseUrl))
|
|
|
- && false === ($pathInfo = substr($requestUri, strlen($baseUrl)))
|
|
|
- ){
|
|
|
- // If substr() returns false then PATH_INFO is set to an empty string
|
|
|
- $pathInfo = '';
|
|
|
- } elseif (null === $baseUrl
|
|
|
- || (!empty($baseUrl) && false === strpos($requestUri, $baseUrl))
|
|
|
- ) {
|
|
|
+
|
|
|
+ $requestUriDecoded = urldecode($requestUri);
|
|
|
+
|
|
|
+ $pathInfo = '';
|
|
|
+
|
|
|
+ if (!empty($baseUrl) || !empty($baseUrlRaw)) {
|
|
|
+ if (strpos($requestUri, $baseUrl) === 0) {
|
|
|
+ $pathInfo = substr($requestUri, strlen($baseUrl));
|
|
|
+ } elseif (strpos($requestUri, $baseUrlRaw) === 0) {
|
|
|
+ $pathInfo = substr($requestUri, strlen($baseUrlRaw));
|
|
|
+ } elseif (strpos($requestUri, $baseUrlEncoded) === 0) {
|
|
|
+ $pathInfo = substr($requestUri, strlen($baseUrlEncoded));
|
|
|
+ } else {
|
|
|
+ $pathInfo = $requestUri;
|
|
|
+ }
|
|
|
+ } else {
|
|
|
$pathInfo = $requestUri;
|
|
|
}
|
|
|
+
|
|
|
}
|
|
|
|
|
|
$this->_pathInfo = (string) $pathInfo;
|