From a8094fe766397465870c7ee2a730b2c8e021bdb6 Mon Sep 17 00:00:00 2001 From: Kijin Sung Date: Wed, 20 Jan 2016 15:45:18 +0900 Subject: [PATCH] Refactor some URL related functions to use Rhymix constants --- classes/context/Context.class.php | 54 +++++++------------------------ common/constants.php | 6 ++-- common/legacy.php | 11 ++----- 3 files changed, 16 insertions(+), 55 deletions(-) diff --git a/classes/context/Context.class.php b/classes/context/Context.class.php index efe140a22..e8dd16218 100644 --- a/classes/context/Context.class.php +++ b/classes/context/Context.class.php @@ -1600,15 +1600,7 @@ class Context static $url = null; if(is_null($url)) { - $url = self::getRequestUri(); - if(count($_GET) > 0) - { - foreach($_GET as $key => $val) - { - $vars[] = $key . '=' . ($val ? urlencode(self::convertEncodingStr($val)) : ''); - } - $url .= '?' . join('&', $vars); - } + $url = self::getRequestUri() . '?' . http_build_query($_GET); } return $url; } @@ -1746,7 +1738,7 @@ class Context 'dispDocumentAdminManageDocument' => 'dispDocumentManageDocument', 'dispModuleAdminSelectList' => 'dispModuleSelectList' ); - if($act_alias[$act]) + if(isset($act_alias[$act])) { $get_vars['act'] = $act_alias[$act]; } @@ -1794,27 +1786,9 @@ class Context $query = $target_map[$target]; } - if(!$query) + if(!$query && count($get_vars) > 0) { - $queries = array(); - 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); - } + $query = 'index.php?' . http_build_query($get_vars); } } @@ -1823,14 +1797,14 @@ class Context if($_use_ssl == 'always') { $query = self::getRequestUri(ENFORCE_SSL, $domain) . $query; - // optional SSL use } + // optional SSL use 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; $query = self::getRequestUri($ssl_mode, $domain) . $query; - // no SSL } + // no SSL else { // currently on SSL but target is not based on SSL @@ -1844,7 +1818,7 @@ class Context } else { - $query = getScriptPath() . $query; + $query = RX_BASEURL . $query; } } @@ -1910,11 +1884,9 @@ class Context return $url[$ssl_mode][$domain_key]; } - $current_use_ssl = ($_SERVER['HTTPS'] == 'on'); - switch($ssl_mode) { - case FOLLOW_REQUEST_SSL: $use_ssl = $current_use_ssl; + case FOLLOW_REQUEST_SSL: $use_ssl = RX_SSL; break; case ENFORCE_SSL: $use_ssl = TRUE; break; @@ -1924,20 +1896,16 @@ class Context if($domain) { - $target_url = trim($domain); - if(substr_compare($target_url, '/', -1) !== 0) - { - $target_url.= '/'; - } + $target_url = rtrim(trim($domain), '/') . '/'; } else { - $target_url = $_SERVER['HTTP_HOST'] . getScriptPath(); + $target_url = $_SERVER['HTTP_HOST'] . RX_BASEURL; } $url_info = parse_url('http://' . $target_url); - if($current_use_ssl != $use_ssl) + if($use_ssl != RX_SSL) { unset($url_info['port']); } diff --git a/common/constants.php b/common/constants.php index c8234bc51..57d28ea3d 100644 --- a/common/constants.php +++ b/common/constants.php @@ -18,18 +18,18 @@ define('RX_TIME', intval(RX_MICROTIME)); /** * 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). */ -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'])), '/') . '/'); } 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 { diff --git a/common/legacy.php b/common/legacy.php index 221f7a50d..9f95b773b 100644 --- a/common/legacy.php +++ b/common/legacy.php @@ -457,9 +457,7 @@ function getFullSiteUrl() */ function getCurrentPageUrl() { - $protocol = $_SERVER['HTTPS'] == 'on' ? 'https://' : 'http://'; - $url = $protocol . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']; - return htmlspecialchars($url, ENT_COMPAT, 'UTF-8', FALSE); + return escape((RX_SSL ? 'https://' : 'http://') . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']); } /** @@ -1213,12 +1211,7 @@ function mysql_pre4_hash_password($password) */ function getScriptPath() { - static $url = NULL; - if($url == NULL) - { - $url = str_ireplace('/tools/', '/', preg_replace('/index.php$/i', '', str_replace('\\', '/', $_SERVER['SCRIPT_NAME']))); - } - return $url; + return RX_BASEURL; } /**