mirror of
https://github.com/Lastorder-DC/rhymix.git
synced 2026-01-07 02:31:40 +09:00
getUrl, getFullUrl, getSiteUrl에 대해서 getNoEncodedUrl, getNoEncodedFullUrl, getNoEncodedSiteUrl 대응 함수를 추가 (url query에 대해 htmlspecialchars를 하지 않는 함수) 하고 XE 내부적으로 redirect하는 경우 getNoEncoded*Url 함수를 이용하도록 수정
git-svn-id: http://xe-core.googlecode.com/svn/sandbox@6734 201d5d3c-b55e-5fd7-737f-ddc643e51545
This commit is contained in:
parent
10c609b22c
commit
91ac64ba08
3 changed files with 44 additions and 6 deletions
|
|
@ -761,7 +761,7 @@
|
|||
/**
|
||||
* @brief 요청받은 url에 args_list를 적용하여 return
|
||||
**/
|
||||
function getUrl($num_args=0, $args_list=array(), $domain = null) {
|
||||
function getUrl($num_args=0, $args_list=array(), $domain = null, $encode = true) {
|
||||
$oContext = &Context::getInstance();
|
||||
return $oContext->_getUrl($num_args, $args_list, $domain);
|
||||
}
|
||||
|
|
@ -769,7 +769,7 @@
|
|||
/**
|
||||
* @brief 요청받은 url에 args_list를 적용하여 return
|
||||
**/
|
||||
function _getUrl($num_args=0, $args_list=array(), $domain = null) {
|
||||
function _getUrl($num_args=0, $args_list=array(), $domain = null, $encode = true) {
|
||||
static $site_module_info = null;
|
||||
|
||||
// 가상 사이트 정보를 구함
|
||||
|
|
@ -892,7 +892,9 @@
|
|||
else if($domain) $query = $this->getRequestUri(FOLLOW_REQUEST_SSL, $domain).$query;
|
||||
else $query = getScriptPath().$query;
|
||||
}
|
||||
return htmlspecialchars($query);
|
||||
|
||||
if($encode) return htmlspecialchars($query);
|
||||
return $query;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -113,7 +113,7 @@
|
|||
// module_site_srl과 site_srl 값이 다르면 redirect 시도
|
||||
if(!$this->module && !$module_info && $site_module_info->site_srl == 0 && $site_module_info->module_site_srl > 0) {
|
||||
$site_info = $oModuleModel->getSiteInfo($site_module_info->module_site_srl);
|
||||
header("location:".getSiteUrl($site_info->domain,'mid',$site_module_info->mid));
|
||||
header("location:".getNoEncodedSiteUrl($site_info->domain,'mid',$site_module_info->mid));
|
||||
return false;
|
||||
}
|
||||
|
||||
|
|
@ -127,12 +127,12 @@
|
|||
// 현재 요청된 모듈이 가상 사이트 모듈일 경우
|
||||
if($module_info->site_srl) {
|
||||
$site_info = $oModuleModel->getSiteInfo($module_info->site_srl);
|
||||
$redirect_url = getSiteUrl($site_info->domain, 'mid',Context::get('mid'),'document_srl',Context::get('document_srl'),'module_srl',Context::get('module_srl'),'entry',Context::get('entry'));
|
||||
$redirect_url = getNoEncodedSiteUrl($site_info->domain, 'mid',Context::get('mid'),'document_srl',Context::get('document_srl'),'module_srl',Context::get('module_srl'),'entry',Context::get('entry'));
|
||||
// 가상 사이트 모듈이 아닌데 가상 사이트에서 호출되었을 경우
|
||||
} else {
|
||||
$db_info = Context::getDBInfo();
|
||||
if(!$db_info->default_url) return die("기본 URL이 정해지지 않아서 동작을 중지합니다");
|
||||
else $redirect_url = getSiteUrl($db_info->default_url, 'mid',Context::get('mid'),'document_srl',Context::get('document_srl'),'module_srl',Context::get('module_srl'),'entry',Context::get('entry'));
|
||||
else $redirect_url = getNoEncodedSiteUrl($db_info->default_url, 'mid',Context::get('mid'),'document_srl',Context::get('document_srl'),'module_srl',Context::get('module_srl'),'entry',Context::get('entry'));
|
||||
}
|
||||
header("location:".$redirect_url);
|
||||
return false;
|
||||
|
|
|
|||
|
|
@ -219,6 +219,15 @@
|
|||
return Context::getUrl($num_args, $args_list);
|
||||
}
|
||||
|
||||
function getNoEncodeUrl() {
|
||||
$num_args = func_num_args();
|
||||
$args_list = func_get_args();
|
||||
|
||||
if(!$num_args) return Context::getRequestUri();
|
||||
|
||||
return Context::getUrl($num_args, $args_list, null, false);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief getUrl()의 값에 request uri를 추가하여 reutrn
|
||||
* full url을 얻기 위함
|
||||
|
|
@ -238,6 +247,21 @@
|
|||
return $url;
|
||||
}
|
||||
|
||||
function getNoEncodeFullUrl() {
|
||||
$num_args = func_num_args();
|
||||
$args_list = func_get_args();
|
||||
$request_uri = Context::getRequestUri();
|
||||
if(!$num_args) return $request_uri;
|
||||
|
||||
$url = Context::getUrl($num_args, $args_list);
|
||||
if(!preg_match('/^http/i',$url)){
|
||||
preg_match('/^(http|https):\/\/([^\/]+)\//',$request_uri,$match);
|
||||
$url = Context::getUrl($num_args, $args_list, null, false);
|
||||
return substr($match[0],0,-1).$url;
|
||||
}
|
||||
return $url;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Context::getUrl()를 쓰기 쉽게 함수로 선언
|
||||
* @return string
|
||||
|
|
@ -257,6 +281,18 @@
|
|||
return Context::getUrl($num_args, $args_list, $domain);
|
||||
}
|
||||
|
||||
function getNoEncodedSiteUrl() {
|
||||
$num_args = func_num_args();
|
||||
$args_list = func_get_args();
|
||||
|
||||
if(!$num_args) return Context::getRequestUri();
|
||||
|
||||
$domain = array_shift($args_list);
|
||||
$num_args = count($args_list);
|
||||
|
||||
return Context::getUrl($num_args, $args_list, $domain, false);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief getSiteUrl()의 값에 request uri를 추가하여 reutrn
|
||||
* full url을 얻기 위함
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue