mirror of
https://gitlab.easter-eggs.com/ee/ldapsaisie.git
synced 2024-12-18 14:33:49 +01:00
Add LSurl::public_url() method and globally use it to retrieve a public URL
This commit is contained in:
parent
f4bdd430b2
commit
efecc67af0
2 changed files with 35 additions and 31 deletions
|
@ -198,11 +198,7 @@ class LStemplate extends LSlog_staticLoggerClass {
|
||||||
self :: registerFunction("var_dump", "LStemplate_smarty_var_dump");
|
self :: registerFunction("var_dump", "LStemplate_smarty_var_dump");
|
||||||
|
|
||||||
// Define public root URL
|
// Define public root URL
|
||||||
$public_root_url = LSconfig :: get('public_root_url', '/', 'string');
|
self :: assign('public_root_url', LSsession :: loadLSclass("LSurl") ? LSurl :: public_url() : null);
|
||||||
// Remove trailing slash
|
|
||||||
if (substr($public_root_url, -1) == '/')
|
|
||||||
$public_root_url = substr($public_root_url, 0, -1);
|
|
||||||
self :: assign('public_root_url', $public_root_url);
|
|
||||||
|
|
||||||
// Trigger started event
|
// Trigger started event
|
||||||
self :: fireEvent('started');
|
self :: fireEvent('started');
|
||||||
|
|
|
@ -181,6 +181,30 @@ class LSurl extends LSlog_staticLoggerClass {
|
||||||
return False;
|
return False;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get public URL
|
||||||
|
* @param bool $absolute Set to true to obtain an absolute URL (optional, default: false)
|
||||||
|
* @param string|null $relative_url Specify a relative URL to decline as its absolute form
|
||||||
|
* (optional, default: root URL without trailing slash)
|
||||||
|
* @return string The public URL
|
||||||
|
*/
|
||||||
|
public static function public_url($absolute=false, $relative_url=null) {
|
||||||
|
$public_root_url = LSconfig :: get('public_root_url', '/', 'string');
|
||||||
|
|
||||||
|
if ($absolute && $public_root_url[0] == '/') {
|
||||||
|
self :: log_debug("LSurl :: public_root_url(absolute=true): configured public root URL is relative ($public_root_url) => try to detect it from current request infos.");
|
||||||
|
$public_root_url = 'http'.(isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on'?'s':'').'://'.$_SERVER['HTTP_HOST'].$public_root_url;
|
||||||
|
self :: log_debug("LSurl :: public_root_url(absolute=true): detected public absolute root URL: $public_root_url");
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($relative_url) {
|
||||||
|
if ($public_root_url[0] == '/') $public_root_url .= "/";
|
||||||
|
return $public_root_url.$relative_url;
|
||||||
|
}
|
||||||
|
|
||||||
|
return self :: remove_trailing_slash($public_root_url);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the public absolute URL
|
* Get the public absolute URL
|
||||||
*
|
*
|
||||||
|
@ -189,18 +213,10 @@ class LSurl extends LSlog_staticLoggerClass {
|
||||||
* @return string The public absolute URL
|
* @return string The public absolute URL
|
||||||
**/
|
**/
|
||||||
public static function get_public_absolute_url($relative_url=null) {
|
public static function get_public_absolute_url($relative_url=null) {
|
||||||
if (!is_string($relative_url))
|
$url = self :: public_url(
|
||||||
$relative_url = self :: get_current_url();
|
true,
|
||||||
|
is_string($relative_url)?$relative_url:self :: get_current_url()
|
||||||
$public_root_url = LSconfig :: get('public_root_url', '/', 'string');
|
);
|
||||||
|
|
||||||
if ($public_root_url[0] == '/') {
|
|
||||||
self :: log_debug("LSurl :: get_public_absolute_url($relative_url): configured public root URL is relative ($public_root_url) => try to detect it from current request infos.");
|
|
||||||
$public_root_url = 'http'.(isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on'?'s':'').'://'.$_SERVER['HTTP_HOST'].$public_root_url;
|
|
||||||
self :: log_debug("LSurl :: get_public_absolute_url($relative_url): detected public_root_url: $public_root_url");
|
|
||||||
}
|
|
||||||
|
|
||||||
$url = self :: remove_trailing_slash($public_root_url)."/$relative_url";
|
|
||||||
self :: log_debug("LSurl :: get_public_absolute_url($relative_url): result = $url");
|
self :: log_debug("LSurl :: get_public_absolute_url($relative_url): result = $url");
|
||||||
return $url;
|
return $url;
|
||||||
}
|
}
|
||||||
|
@ -213,20 +229,12 @@ class LSurl extends LSlog_staticLoggerClass {
|
||||||
* @return void
|
* @return void
|
||||||
**/
|
**/
|
||||||
public static function redirect($go=false) {
|
public static function redirect($go=false) {
|
||||||
$public_root_url = LSconfig :: get('public_root_url', '/', 'string');
|
if ($go===false) $go = "";
|
||||||
if ($go===false)
|
$url = (
|
||||||
$go = "";
|
preg_match('#^(https?:)?//#', $go)?
|
||||||
|
$go:
|
||||||
if (preg_match('#^(https?:)?//#',$go)) {
|
self :: public_url(false, $go)
|
||||||
$url = $go;
|
);
|
||||||
}
|
|
||||||
else {
|
|
||||||
// Check $public_root_url end
|
|
||||||
if (substr($public_root_url, -1)=='/') {
|
|
||||||
$public_root_url=substr($public_root_url, 0, -1);
|
|
||||||
}
|
|
||||||
$url="$public_root_url/$go";
|
|
||||||
}
|
|
||||||
|
|
||||||
// Prevent loop
|
// Prevent loop
|
||||||
if (isset($_SESSION['last_redirect']) && $_SESSION['last_redirect'] == $url)
|
if (isset($_SESSION['last_redirect']) && $_SESSION['last_redirect'] == $url)
|
||||||
|
|
Loading…
Reference in a new issue