Refactor some URL related functions to use Rhymix constants

This commit is contained in:
Kijin Sung 2016-01-20 15:45:18 +09:00
parent 9ddf2f54f3
commit a8094fe766
3 changed files with 16 additions and 55 deletions

View file

@ -1600,15 +1600,7 @@ class Context
static $url = null; static $url = null;
if(is_null($url)) if(is_null($url))
{ {
$url = self::getRequestUri(); $url = self::getRequestUri() . '?' . http_build_query($_GET);
if(count($_GET) > 0)
{
foreach($_GET as $key => $val)
{
$vars[] = $key . '=' . ($val ? urlencode(self::convertEncodingStr($val)) : '');
}
$url .= '?' . join('&', $vars);
}
} }
return $url; return $url;
} }
@ -1746,7 +1738,7 @@ class Context
'dispDocumentAdminManageDocument' => 'dispDocumentManageDocument', 'dispDocumentAdminManageDocument' => 'dispDocumentManageDocument',
'dispModuleAdminSelectList' => 'dispModuleSelectList' 'dispModuleAdminSelectList' => 'dispModuleSelectList'
); );
if($act_alias[$act]) if(isset($act_alias[$act]))
{ {
$get_vars['act'] = $act_alias[$act]; $get_vars['act'] = $act_alias[$act];
} }
@ -1794,27 +1786,9 @@ class Context
$query = $target_map[$target]; $query = $target_map[$target];
} }
if(!$query) if(!$query && count($get_vars) > 0)
{ {
$queries = array(); $query = 'index.php?' . http_build_query($get_vars);
foreach($get_vars as $key => $val)
{
if(is_array($val) && count($val) > 0)
{
foreach($val as $k => $v)
{
$queries[] = $key . '[' . $k . ']=' . urlencode($v);
}
}
elseif(!is_array($val))
{
$queries[] = $key . '=' . urlencode($val);
}
}
if(count($queries) > 0)
{
$query = 'index.php?' . join('&', $queries);
}
} }
} }
@ -1823,14 +1797,14 @@ class Context
if($_use_ssl == 'always') if($_use_ssl == 'always')
{ {
$query = self::getRequestUri(ENFORCE_SSL, $domain) . $query; $query = self::getRequestUri(ENFORCE_SSL, $domain) . $query;
// optional SSL use
} }
// optional SSL use
elseif($_use_ssl == 'optional') elseif($_use_ssl == 'optional')
{ {
$ssl_mode = ((self::get('module') === 'admin') || ($get_vars['module'] === 'admin') || (isset($get_vars['act']) && self::isExistsSSLAction($get_vars['act']))) ? ENFORCE_SSL : RELEASE_SSL; $ssl_mode = ((self::get('module') === 'admin') || ($get_vars['module'] === 'admin') || (isset($get_vars['act']) && self::isExistsSSLAction($get_vars['act']))) ? ENFORCE_SSL : RELEASE_SSL;
$query = self::getRequestUri($ssl_mode, $domain) . $query; $query = self::getRequestUri($ssl_mode, $domain) . $query;
// no SSL
} }
// no SSL
else else
{ {
// currently on SSL but target is not based on SSL // currently on SSL but target is not based on SSL
@ -1844,7 +1818,7 @@ class Context
} }
else else
{ {
$query = getScriptPath() . $query; $query = RX_BASEURL . $query;
} }
} }
@ -1910,11 +1884,9 @@ class Context
return $url[$ssl_mode][$domain_key]; return $url[$ssl_mode][$domain_key];
} }
$current_use_ssl = ($_SERVER['HTTPS'] == 'on');
switch($ssl_mode) switch($ssl_mode)
{ {
case FOLLOW_REQUEST_SSL: $use_ssl = $current_use_ssl; case FOLLOW_REQUEST_SSL: $use_ssl = RX_SSL;
break; break;
case ENFORCE_SSL: $use_ssl = TRUE; case ENFORCE_SSL: $use_ssl = TRUE;
break; break;
@ -1924,20 +1896,16 @@ class Context
if($domain) if($domain)
{ {
$target_url = trim($domain); $target_url = rtrim(trim($domain), '/') . '/';
if(substr_compare($target_url, '/', -1) !== 0)
{
$target_url.= '/';
}
} }
else else
{ {
$target_url = $_SERVER['HTTP_HOST'] . getScriptPath(); $target_url = $_SERVER['HTTP_HOST'] . RX_BASEURL;
} }
$url_info = parse_url('http://' . $target_url); $url_info = parse_url('http://' . $target_url);
if($current_use_ssl != $use_ssl) if($use_ssl != RX_SSL)
{ {
unset($url_info['port']); unset($url_info['port']);
} }

View file

@ -18,18 +18,18 @@ define('RX_TIME', intval(RX_MICROTIME));
/** /**
* RX_BASEDIR is the SERVER-SIDE absolute path of Rhymix (with trailing slash). * RX_BASEDIR is the SERVER-SIDE absolute path of Rhymix (with trailing slash).
*/ */
define('RX_BASEDIR', dirname(__DIR__) . '/'); define('RX_BASEDIR', str_replace('\\', '/', dirname(__DIR__)) . '/');
/** /**
* RX_BASEURL is the CLIENT-SIDE absolute path of Rhymix (with trailing slash, relative to the document root). * RX_BASEURL is the CLIENT-SIDE absolute path of Rhymix (with trailing slash, relative to the document root).
*/ */
if (isset($_SERVER['DOCUMENT_ROOT']) && !strncmp(RX_BASEDIR, $_SERVER['DOCUMENT_ROOT'], strlen($_SERVER['DOCUMENT_ROOT']))) if (isset($_SERVER['DOCUMENT_ROOT']) && !strncmp(RX_BASEDIR, str_replace('\\', '/', $_SERVER['DOCUMENT_ROOT']), strlen($_SERVER['DOCUMENT_ROOT'])))
{ {
define('RX_BASEURL', rtrim(substr(RX_BASEDIR, strlen($_SERVER['DOCUMENT_ROOT'])), '/') . '/'); define('RX_BASEURL', rtrim(substr(RX_BASEDIR, strlen($_SERVER['DOCUMENT_ROOT'])), '/') . '/');
} }
elseif (isset($_SERVER['PHP_SELF']) && ($len = strlen($_SERVER['PHP_SELF'])) && $len >= 10 && substr($_SERVER['PHP_SELF'], $len - 10) === '/index.php') elseif (isset($_SERVER['PHP_SELF']) && ($len = strlen($_SERVER['PHP_SELF'])) && $len >= 10 && substr($_SERVER['PHP_SELF'], $len - 10) === '/index.php')
{ {
define('RX_BASEURL', rtrim(substr($_SERVER['PHP_SELF'], 0, $len - 10), '/') . '/'); define('RX_BASEURL', rtrim(str_replace('\\', '/', substr($_SERVER['PHP_SELF'], 0, $len - 10)), '/') . '/');
} }
else else
{ {

View file

@ -457,9 +457,7 @@ function getFullSiteUrl()
*/ */
function getCurrentPageUrl() function getCurrentPageUrl()
{ {
$protocol = $_SERVER['HTTPS'] == 'on' ? 'https://' : 'http://'; return escape((RX_SSL ? 'https://' : 'http://') . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']);
$url = $protocol . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
return htmlspecialchars($url, ENT_COMPAT, 'UTF-8', FALSE);
} }
/** /**
@ -1213,12 +1211,7 @@ function mysql_pre4_hash_password($password)
*/ */
function getScriptPath() function getScriptPath()
{ {
static $url = NULL; return RX_BASEURL;
if($url == NULL)
{
$url = str_ireplace('/tools/', '/', preg_replace('/index.php$/i', '', str_replace('\\', '/', $_SERVER['SCRIPT_NAME'])));
}
return $url;
} }
/** /**