mirror of
https://github.com/Lastorder-DC/rhymix.git
synced 2026-01-09 03:32:00 +09:00
Various changes to URL handling routines
This commit is contained in:
parent
726220d3eb
commit
c82c2f307a
4 changed files with 44 additions and 98 deletions
|
|
@ -238,7 +238,6 @@ class Context
|
|||
|
||||
// Set global variables for backward compatibility.
|
||||
$GLOBALS['__Context__'] = $this;
|
||||
$this->_COOKIE = $_COOKIE;
|
||||
|
||||
// Set information about the current request.
|
||||
$this->setRequestMethod();
|
||||
|
|
@ -263,6 +262,7 @@ class Context
|
|||
$oModuleModel = getModel('module');
|
||||
$site_module_info = $oModuleModel->getDefaultMid() ?: new stdClass;
|
||||
self::set('site_module_info', $site_module_info);
|
||||
self::set('_default_url', self::$_instance->db_info->default_url = self::getDefaultUrl($site_module_info));
|
||||
self::set('_http_port', self::$_instance->db_info->http_port = $site_module_info->http_port ?: null);
|
||||
self::set('_https_port', self::$_instance->db_info->https_port = $site_module_info->https_port ?: null);
|
||||
self::set('_use_ssl', self::$_instance->db_info->use_ssl = $site_module_info->security ?: 'none');
|
||||
|
|
@ -338,6 +338,7 @@ class Context
|
|||
// start session
|
||||
$relax_key_checks = ($this->act === 'procFileUpload' && preg_match('/shockwave\s?flash/i', $_SERVER['HTTP_USER_AGENT']));
|
||||
Rhymix\Framework\Session::start(false, $relax_key_checks);
|
||||
$this->_COOKIE = $_COOKIE;
|
||||
|
||||
// start output buffer
|
||||
ob_start();
|
||||
|
|
@ -517,14 +518,6 @@ class Context
|
|||
$db_info->ftp_info->ftp_pasv = $config['ftp']['pasv'] ? 'Y' : 'N';
|
||||
$db_info->ftp_info->ftp_root_path = $config['ftp']['path'];
|
||||
$db_info->ftp_info->sftp = $config['ftp']['sftp'] ? 'Y' : 'N';
|
||||
$db_info->default_url = $config['url']['default'];
|
||||
if (!$db_info->default_url)
|
||||
{
|
||||
$db_info->default_url = (RX_SSL ? 'https://' : 'http://') . $_SERVER['HTTP_HOST'] . RX_BASEURL;
|
||||
}
|
||||
$db_info->http_port = $config['url']['http_port'];
|
||||
$db_info->https_port = $config['url']['https_port'];
|
||||
$db_info->use_ssl = $config['url']['ssl'];
|
||||
$db_info->lang_type = $config['locale']['default_lang'];
|
||||
$db_info->time_zone = $config['locale']['internal_timezone'];
|
||||
$db_info->time_zone = sprintf('%s%02d%02d', $db_info->time_zone >= 0 ? '+' : '-', abs($db_info->time_zone) / 3600, (abs($db_info->time_zone) % 3600 / 60));
|
||||
|
|
@ -596,11 +589,26 @@ class Context
|
|||
/**
|
||||
* Return default URL
|
||||
*
|
||||
* @param object $site_module_info (optional)
|
||||
* @return string Default URL
|
||||
*/
|
||||
public static function getDefaultUrl()
|
||||
public static function getDefaultUrl($site_module_info = null)
|
||||
{
|
||||
return self::$_instance->db_info->default_url;
|
||||
if ($site_module_info === null && ($default_url = self::get('_default_url')))
|
||||
{
|
||||
return $default_url;
|
||||
}
|
||||
|
||||
if ($site_module_info === null)
|
||||
{
|
||||
$site_module_info === self::get('site_module_info');
|
||||
}
|
||||
|
||||
$prefix = $site_module_info->security === 'always' ? 'https://' : 'http://';
|
||||
$hostname = $site_module_info->domain;
|
||||
$port = $site_module_info->security === 'always' ? $site_module_info->https_port : $site_module_info->http_port;
|
||||
$result = $prefix . $hostname . ($port ? sprintf(':%d', $port) : '') . RX_BASEURL;
|
||||
return $result;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -1539,6 +1547,10 @@ class Context
|
|||
}
|
||||
|
||||
// If $domain is set, handle it (if $domain is vid type, remove $domain and handle with $vid)
|
||||
if (strpos($domain, '/') !== false)
|
||||
{
|
||||
$domain = Rhymix\Framework\URL::getDomainFromURL($domain);
|
||||
}
|
||||
if($domain && isSiteID($domain))
|
||||
{
|
||||
$vid = $domain;
|
||||
|
|
@ -1743,7 +1755,7 @@ class Context
|
|||
*/
|
||||
public static function getRequestUri($ssl_mode = FOLLOW_REQUEST_SSL, $domain = null)
|
||||
{
|
||||
static $url = array();
|
||||
static $domain_infos = array();
|
||||
|
||||
// Check HTTP Request
|
||||
if(!isset($_SERVER['SERVER_PROTOCOL']))
|
||||
|
|
@ -1756,20 +1768,6 @@ class Context
|
|||
$ssl_mode = ENFORCE_SSL;
|
||||
}
|
||||
|
||||
if($domain)
|
||||
{
|
||||
$domain_key = md5($domain);
|
||||
}
|
||||
else
|
||||
{
|
||||
$domain_key = 'default';
|
||||
}
|
||||
|
||||
if(isset($url[$ssl_mode][$domain_key]))
|
||||
{
|
||||
return $url[$ssl_mode][$domain_key];
|
||||
}
|
||||
|
||||
switch($ssl_mode)
|
||||
{
|
||||
case FOLLOW_REQUEST_SSL: $use_ssl = RX_SSL;
|
||||
|
|
@ -1780,50 +1778,21 @@ class Context
|
|||
break;
|
||||
}
|
||||
|
||||
if($domain)
|
||||
$site_module_info = self::get('site_module_info');
|
||||
if ($domain !== null && $domain !== $site_module_info->domain)
|
||||
{
|
||||
$target_url = rtrim(trim($domain), '/') . RX_BASEURL;
|
||||
}
|
||||
else
|
||||
{
|
||||
$target_url = $_SERVER['HTTP_HOST'] . RX_BASEURL;
|
||||
}
|
||||
|
||||
$url_info = parse_url('http://' . $target_url);
|
||||
|
||||
if($use_ssl != RX_SSL)
|
||||
{
|
||||
unset($url_info['port']);
|
||||
}
|
||||
|
||||
if($use_ssl)
|
||||
{
|
||||
$port = self::get('_https_port');
|
||||
if($port && $port != 443)
|
||||
if (!isset($domain_infos[$domain]))
|
||||
{
|
||||
$url_info['port'] = $port;
|
||||
}
|
||||
elseif($url_info['port'] == 443)
|
||||
{
|
||||
unset($url_info['port']);
|
||||
$domain_infos[$domain] = getModel('module')->getSiteInfoByDomain($domain);
|
||||
}
|
||||
$site_module_info = $domain_infos[$domain] ?: $site_module_info;
|
||||
}
|
||||
else
|
||||
{
|
||||
$port = self::get('_http_port');
|
||||
if($port && $port != 80)
|
||||
{
|
||||
$url_info['port'] = $port;
|
||||
}
|
||||
elseif($url_info['port'] == 80)
|
||||
{
|
||||
unset($url_info['port']);
|
||||
}
|
||||
}
|
||||
|
||||
$url[$ssl_mode][$domain_key] = sprintf('%s://%s%s%s', $use_ssl ? 'https' : $url_info['scheme'], $url_info['host'], $url_info['port'] && $url_info['port'] != 80 ? ':' . $url_info['port'] : '', $url_info['path']);
|
||||
|
||||
return $url[$ssl_mode][$domain_key];
|
||||
|
||||
$prefix = ($use_ssl && $site_module_info->security !== 'none') ? 'https://' : 'http://';
|
||||
$hostname = $site_module_info->domain;
|
||||
$port = ($use_ssl && $site_module_info->security !== 'none') ? $site_module_info->https_port : $site_module_info->http_port;
|
||||
$result = $prefix . $hostname . ($port ? sprintf(':%d', $port) : '') . RX_BASEURL;
|
||||
return $result;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -251,26 +251,6 @@ class ModuleHandler extends Handler
|
|||
$module_info = $site_module_info;
|
||||
}
|
||||
|
||||
// redirect, if site_srl of module_info is different from one of site's module_info
|
||||
if($module_info && $module_info->site_srl != $site_module_info->site_srl && !Rhymix\Framework\UA::isRobot())
|
||||
{
|
||||
// If the module is of virtual site
|
||||
if($module_info->site_srl)
|
||||
{
|
||||
$site_info = $oModuleModel->getSiteInfo($module_info->site_srl);
|
||||
$redirect_url = getNotEncodedSiteUrl($site_info->domain, 'mid', Context::get('mid'), 'document_srl', Context::get('document_srl'), 'module_srl', Context::get('module_srl'), 'entry', Context::get('entry'));
|
||||
// If it's called from a virtual site, though it's not a module of the virtual site
|
||||
}
|
||||
else
|
||||
{
|
||||
$redirect_url = getNotEncodedSiteUrl(Context::getDefaultUrl(), 'mid', Context::get('mid'), 'document_srl', Context::get('document_srl'), 'module_srl', Context::get('module_srl'), 'entry', Context::get('entry'));
|
||||
}
|
||||
|
||||
Context::setCacheControl(0);
|
||||
header("Location: $redirect_url", true, 301);
|
||||
return false;
|
||||
}
|
||||
|
||||
// redirect, if site start module
|
||||
if(Context::getRequestMethod() === 'GET' && isset($_GET['mid']) && $_GET['mid'] === $site_module_info->mid && count($_GET) === 1)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -1087,18 +1087,11 @@ class moduleController extends module
|
|||
|
||||
if(is_null($lang))
|
||||
{
|
||||
$site_module_info = Context::get('site_module_info');
|
||||
if(!$site_module_info)
|
||||
{
|
||||
$oModuleModel = getModel('module');
|
||||
$site_module_info = $oModuleModel->getDefaultMid();
|
||||
Context::set('site_module_info', $site_module_info);
|
||||
}
|
||||
$cache_file = sprintf('%sfiles/cache/lang_defined/%d.%s.php', _XE_PATH_, $site_module_info->site_srl, Context::getLangType());
|
||||
$cache_file = sprintf('%sfiles/cache/lang_defined/%d.%s.php', _XE_PATH_, 0, Context::getLangType());
|
||||
if(!file_exists($cache_file))
|
||||
{
|
||||
$oModuleAdminController = getAdminController('module');
|
||||
$oModuleAdminController->makeCacheDefinedLangCode($site_module_info->site_srl);
|
||||
$oModuleAdminController->makeCacheDefinedLangCode(0);
|
||||
}
|
||||
|
||||
if(file_exists($cache_file))
|
||||
|
|
@ -1108,7 +1101,7 @@ class moduleController extends module
|
|||
if($cacheFileMtime < $moduleAdminControllerMtime)
|
||||
{
|
||||
$oModuleAdminController = getAdminController('module');
|
||||
$oModuleAdminController->makeCacheDefinedLangCode($site_module_info->site_srl);
|
||||
$oModuleAdminController->makeCacheDefinedLangCode(0);
|
||||
}
|
||||
|
||||
require_once($cache_file);
|
||||
|
|
|
|||
|
|
@ -60,7 +60,11 @@ class moduleModel extends module
|
|||
{
|
||||
if (strpos($domain, '/') !== false)
|
||||
{
|
||||
$domain = parse_url($domain, PHP_URL_HOST);
|
||||
$domain = Rhymix\Framework\URL::getDomainFromURL($domain);
|
||||
if ($domain === false)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
$args = new stdClass();
|
||||
|
|
@ -117,7 +121,7 @@ class moduleModel extends module
|
|||
}
|
||||
}
|
||||
|
||||
$domain_info->site_srl = $domain_info->domain_srl;
|
||||
$domain_info->site_srl = 0;
|
||||
$domain_info->settings = $domain_info->settings ? json_decode($domain_info->settings) : new stdClass;
|
||||
$domain_info->default_language = $domain_info->settings->language ?: config('locale.default_lang');
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue