mirror of
https://github.com/Lastorder-DC/rhymix.git
synced 2026-04-02 01:52:10 +09:00
Virtual Site 생성시 도메인 단위(서브도메인 또는 독립 도메인)이 아닌 ID 형식으로 생성 가능하도록 기능 개선.
SID 로 불리는 이 사이트ID는 MID와 중복이 불가능함. git-svn-id: http://xe-core.googlecode.com/svn/sandbox@6051 201d5d3c-b55e-5fd7-737f-ddc643e51545
This commit is contained in:
parent
40e1740839
commit
bb97446dfc
40 changed files with 313 additions and 189 deletions
|
|
@ -13,6 +13,33 @@
|
|||
function init() {
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief mid, sid 사용할 수 있는지 검사
|
||||
**/
|
||||
function isIDExists($id, $site_srl = 0) {
|
||||
// directory 및 rss/atom/api 등 예약어 검사
|
||||
$dirs = FileHandler::readDir(_XE_PATH_);
|
||||
$dirs[] = 'rss';
|
||||
$dirs[] = 'atom';
|
||||
$dirs[] = 'api';
|
||||
if(in_array($id, $dirs)) return true;
|
||||
|
||||
// mid 검사
|
||||
$args->mid = $id;
|
||||
$args->site_srl = $site_srl;
|
||||
$output = executeQuery('module.isExistsModuleName', $args);
|
||||
if($output->data->count) return true;
|
||||
|
||||
// sid 검사 (site_srl이 0일때 즉 가상사이트가 아닌 경우 mid != sid임을 체크)
|
||||
if(!$site_srl) {
|
||||
$site_args->domain = $id;
|
||||
$output = executeQuery('module.isExistsSiteDomain', $site_args);
|
||||
if($output->data->count) return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief site 정보를 구함
|
||||
**/
|
||||
|
|
@ -42,19 +69,35 @@
|
|||
* @brief domain에 따른 기본 mid를 구함
|
||||
**/
|
||||
function getDefaultMid() {
|
||||
// domain 으로 등록된 virtual site가 있는지 확인
|
||||
$url_info = parse_url(Context::getRequestUri());
|
||||
$hostname = $url_info['host'];
|
||||
$path = preg_replace('/\/$/','',$url_info['path']);
|
||||
$sites_args->domain = sprintf('%s%s%s', $hostname, $url_info['port']&&$url_info['port']!=80?':'.$url_info['port']:'',$path);
|
||||
$default_url = preg_replace('/\/$/','',Context::getDefaultUrl());
|
||||
$request_url = preg_replace('/\/$/','',Context::getRequestUri());
|
||||
$sid = Context::get('sid');
|
||||
$mid = Context::get('mid');
|
||||
|
||||
$output = executeQuery('module.getSiteDefaultInfo', $sites_args);
|
||||
// 기본 URL이 설정되어 있고 이 기본 URL과 요청 URL이 다르면 가상 사이트 확인
|
||||
if($default_url && $default_url != $request_url) {
|
||||
$url_info = parse_url($request_url);
|
||||
$hostname = $url_info['host'];
|
||||
$path = preg_replace('/\/$/','',$url_info['path']);
|
||||
$sites_args->domain = sprintf('%s%s%s', $hostname, $url_info['port']&&$url_info['port']!=80?':'.$url_info['port']:'',$path);
|
||||
$output = executeQuery('module.getSiteDefaultInfo', $sites_args);
|
||||
} else {
|
||||
if(!$sid) $sid = $mid;
|
||||
if($sid) {
|
||||
$sid_args->domain = $sid;
|
||||
$output = executeQuery('module.getSiteInfoByDomain', $sid_args);
|
||||
if($output->toBool() && $output->data) {
|
||||
Context::set('sid', $output->data->domain, true);
|
||||
if($mid==$output->data->domain) Context::set('mid',$output->data->mid,true);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// virtual site를 못 찾으면 가장 기본 모듈 추출
|
||||
if(!$output->toBool() || !$output->data) {
|
||||
if(!$output->data) {
|
||||
$args->site_srl = 0;
|
||||
$output = executeQuery('module.getDefaultMidInfo', $args);
|
||||
}
|
||||
|
||||
$module_info = $output->data;
|
||||
if(!$module_info->module_srl) return;
|
||||
if(is_array($module_info) && $module_info->data[0]) $module_info = $module_info[0];
|
||||
|
|
@ -66,7 +109,7 @@
|
|||
**/
|
||||
function getModuleInfoByMid($mid, $site_srl = 0) {
|
||||
$args->mid = $mid;
|
||||
$args->site_srl = $site_srl;
|
||||
$args->site_srl = (int)$site_srl;
|
||||
$output = executeQuery('module.getMidInfo', $args);
|
||||
$module_info = $output->data;
|
||||
if(!$module_info->module_srl && $module_info->data[0]) $module_info = $module_info->data[0];
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue