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:
zero 2009-04-08 10:10:17 +00:00
parent 40e1740839
commit bb97446dfc
40 changed files with 313 additions and 189 deletions

View file

@ -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];