Merge pull request #67 from lpirl/master
Fixes issue with determination of PROJECT_URI in an Apache userdir (#66) Thanks to @lpirl
This commit is contained in:
commit
9e61d3e129
1 changed files with 35 additions and 6 deletions
|
@ -60,7 +60,31 @@ class Framework extends \Flake\Core\Framework {
|
|||
|
||||
return $sString;
|
||||
}
|
||||
|
||||
|
||||
public static function rmQuery($sString) {
|
||||
$iStart = strpos($sString, "?");
|
||||
return ($iStart === FALSE) ? $sString : substr($sString, 0, $iStart);
|
||||
}
|
||||
|
||||
public static function rmScriptName($sString, $sScriptName) {
|
||||
$sScriptBaseName = basename($sScriptName);
|
||||
if( self::endswith($sString, $sScriptBaseName) )
|
||||
return substr($sString, 0, -strlen($sScriptBaseName));
|
||||
return $sString;
|
||||
}
|
||||
|
||||
public static function rmProjectContext($sString) {
|
||||
return self::appendSlash(
|
||||
substr($sString, 0, -1 * strlen(PROJECT_CONTEXT_BASEURI))
|
||||
);
|
||||
}
|
||||
|
||||
public static function endsWith($sString, $sTest) {
|
||||
$iTestLen = strlen($sTest);
|
||||
if ($iTestLen > strlen($sString)) return false;
|
||||
return substr_compare($sString, $sTest, -$iTestLen) === 0;
|
||||
}
|
||||
|
||||
public static function bootstrap() {
|
||||
|
||||
# Asserting PHP 5.3.0+
|
||||
|
@ -126,7 +150,7 @@ class Framework extends \Flake\Core\Framework {
|
|||
throw new \Exception("Unrecognized PROJECT_PACKAGE value.");
|
||||
}
|
||||
|
||||
# Determine PROJECT_URI
|
||||
# Determine PROJECT_BASEURI
|
||||
$sScript = substr($_SERVER["SCRIPT_FILENAME"], strlen($_SERVER["DOCUMENT_ROOT"]));
|
||||
$sDirName = str_replace("\\", "/", dirname($sScript)); # fix windows backslashes
|
||||
|
||||
|
@ -136,12 +160,17 @@ class Framework extends \Flake\Core\Framework {
|
|||
$sDirName = "/";
|
||||
}
|
||||
|
||||
$sBaseUrl = self::rmBeginSlash(self::appendSlash(substr($sDirName, 0, -1 * strlen(PROJECT_CONTEXT_BASEURI))));
|
||||
$sBaseUrl = self::rmBeginSlash(self::rmProjectContext($sDirName));
|
||||
define("PROJECT_BASEURI", self::prependSlash($sBaseUrl)); # SabreDAV needs a "/" at the beginning of BASEURL
|
||||
|
||||
# Determine PROJECT_URI
|
||||
$sProtocol = \Flake\Util\Tools::getCurrentProtocol();
|
||||
define("PROJECT_URI", $sProtocol . "://" . self::appendSlash($_SERVER["HTTP_HOST"]) . $sBaseUrl);
|
||||
unset($sScript); unset($sDirName); unset($sBaseUrl); unset($sProtocol);
|
||||
$sHttpBaseUrl = strtolower($_SERVER["REQUEST_URI"]);
|
||||
$sHttpBaseUrl = self::rmQuery($sHttpBaseUrl);
|
||||
$sHttpBaseUrl = self::rmScriptName($sHttpBaseUrl, $sScript);
|
||||
$sHttpBaseUrl = self::rmProjectContext($sHttpBaseUrl);
|
||||
define("PROJECT_URI", $sProtocol . "://" . $_SERVER["HTTP_HOST"] . $sHttpBaseUrl);
|
||||
unset($sScript); unset($sDirName); unset($sBaseUrl); unset($sProtocol); unset($sHttpBaseUrl);
|
||||
|
||||
#################################################################################################
|
||||
|
||||
|
@ -272,4 +301,4 @@ class Framework extends \Flake\Core\Framework {
|
|||
public static function isDBInitialized() {
|
||||
return isset($GLOBALS["DB"]) && \Flake\Util\Tools::is_a($GLOBALS["DB"], "\Flake\Core\Database");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue