[core] fixes and tests for get_base_href + get_query, see #1024

This commit is contained in:
Shish
2024-02-07 22:47:12 +00:00
parent c6e65a21f9
commit 7adb7348d7
6 changed files with 95 additions and 21 deletions

View File

@ -306,21 +306,22 @@ function get_base_href(): string
if (defined("BASE_HREF") && !empty(BASE_HREF)) {
return BASE_HREF;
}
$possible_vars = ['SCRIPT_NAME', 'PHP_SELF', 'PATH_INFO', 'ORIG_PATH_INFO'];
$ok_var = null;
foreach ($possible_vars as $var) {
if (isset($_SERVER[$var]) && substr($_SERVER[$var], -4) === '.php') {
$ok_var = $_SERVER[$var];
break;
}
if(str_ends_with($_SERVER['PHP_SELF'], 'index.php')) {
$self = $_SERVER['PHP_SELF'];
}
if(empty($ok_var) && isset($_SERVER['SCRIPT_FILENAME']) && isset($_SERVER['DOCUMENT_ROOT'])) {
$ok_var = substr($_SERVER['SCRIPT_FILENAME'], strlen($_SERVER['DOCUMENT_ROOT']));
elseif(isset($_SERVER['SCRIPT_FILENAME']) && isset($_SERVER['DOCUMENT_ROOT'])) {
$self = substr($_SERVER['SCRIPT_FILENAME'], strlen(rtrim($_SERVER['DOCUMENT_ROOT'], "/")));
}
assert(!empty($ok_var));
$dir = dirname($ok_var);
/*
die(var_export([
$_SERVER['PHP_SELF'],
$_SERVER['SCRIPT_FILENAME'],
$_SERVER['DOCUMENT_ROOT'],
$self
], true));
*/
$dir = dirname($self);
$dir = str_replace("\\", "/", $dir);
$dir = str_replace("//", "/", $dir);
$dir = rtrim($dir, "/");
return $dir;
}