virtual site + homepage package 추가. 아직 미완성 버전이므로 서비스 반영하지 말아주세요. 테스트중

git-svn-id: http://xe-core.googlecode.com/svn/sandbox@4871 201d5d3c-b55e-5fd7-737f-ddc643e51545
This commit is contained in:
zero 2008-11-17 10:45:57 +00:00
parent c5dbc3405c
commit e745b70268
171 changed files with 5243 additions and 274 deletions

View file

@ -24,23 +24,47 @@
return $this->arrangeModuleInfo($output->data);
}
/**
* @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', $hostname, $path);
$output = executeQuery('module.getSiteDefaultInfo', $sites_args);
if(!$output->toBool() || !$output->data) $output = executeQuery('module.getDefaultMidInfo');
$module_info = $output->data;
if(!$module_info->module_srl && $module_info->data[0]) $module_info = $module_info->data[0];
return $this->arrangeModuleInfo($module_info);
}
/**
* @brief site 정보를 구함
**/
function getSiteInfo($site_srl) {
$args->site_srl = $site_srl;
$output = executeQuery('module.getSiteInfo', $args);
return $output->data;
}
function getSiteInfoByDomain($domain) {
$args->domain= $domain;
$output = executeQuery('module.getSiteInfoByDomain', $args);
return $output->data;
}
/**
* @brief mid로 모듈의 정보를 구함
**/
function getModuleInfoByMid($mid='') {
// $mid값이 인자로 주어질 경우 $mid로 모듈의 정보를 구함
if($mid) {
$args->mid = $mid;
$output = executeQuery('module.getMidInfo', $args);
}
// 모듈의 정보가 없다면($mid가 잘못이거나 없었을 경우) 기본 모듈을 가져옴
if(!$output->data) $output = executeQuery('module.getDefaultMidInfo');
// 기본 모듈이 한 개 이상 지정되어 있을 때의 예외 처리
if(!$output->data->module_srl && $output->data[0]) $output->data = $output->data[0];
return $this->arrangeModuleInfo($output->data);
function getModuleInfoByMid($mid, $site_srl = 0) {
$args->mid = $mid;
$args->site_srl = $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];
return $this->arrangeModuleInfo($module_info);
}
/**
@ -107,7 +131,10 @@
function getModuleSrlByMid($mid) {
if(is_array($mid)) $mid = "'".implode("','",$mid)."'";
$site_module_info = Context::get('site_module_info');
$args->mid = $mid;
if($site_module_info) $args->site_srl = $site_module_info->site_srl;
$output = executeQuery('module.getModuleSrlByMid', $args);
if(!$output->toBool()) return $output;
@ -144,7 +171,7 @@
// extra_vars의 정리
if($extra_vars) {
$extra_vars = unserialize($extra_vars);
foreach($extra_vars as $key => $val) if(!$module_info->{$key}) $module_info->{$key} = $val;
if(is_array($extra_vars) || is_object($extra_vars)) foreach($extra_vars as $key => $val) if(!$module_info->{$key}) $module_info->{$key} = $val;
}
// skin_vars의 정리
@ -840,6 +867,39 @@
return $list;
}
/**
* @brief 특정 module srls를 sites의 domain과 결합
* 아직 XE DBHandler에서 left outer join이 안되어서..
* $output->data[]->module_srl 같은 구조여야
**/
function syncModuleToSite(&$data) {
if(!$data) return;
if(is_array($data)) {
foreach($data as $key => $val) {
$module_srls[] = $val->module_srl;
}
if(!count($module_srls)) return;
} else {
$module_srls[] = $data->module_srl;
}
$args->module_srls = implode(',',$module_srls);
$output = executeQueryArray('module.getModuleSites', $args);
if(!$output->data) return array();
foreach($output->data as $key => $val) {
$modules[$val->module_srl] = $val;
}
if(is_array($data)) {
foreach($data as $key => $val) {
$data[$key]->domain = $modules[$val->module_srl]->domain;
}
} else {
$data->domain = $modules[$data->module_srl]->domain;
}
}
/**
* @brief 특정 모듈의 정보와 회원의 정보를 받아서 관리 권한 유무를 판단
* 회원의 아이디가 해당 모듈의 admin_id에 있으면 true
@ -859,5 +919,32 @@
return count(array_intersect(array_keys($group_list), $manager_group));
}
/**
* @brief site_module_info의 관리자 인지 체크
**/
function isSiteAdmin() {
if(!Context::get('is_logged')) return false;
$logged_info = Context::get('logged_info');
if($logged_info->is_admin == 'Y') return true;
$site_module_info = Context::get('site_module_info');
if(!$site_module_info) return;
$args->site_srl = $site_module_info->site_srl;
$args->member_srl = $logged_info->member_srl;
$output = executeQuery('module.isSiteAdmin', $args);
if($output->data->member_srl == $args->member_srl) return true;
return false;
}
/**
* @brief site의 관리자 정보를 구함
**/
function getSiteAdmin($site_srl) {
$args->site_srl = $site_srl;
$output = executeQueryArray('module.getSiteAdmin', $args);
return $output->data;
}
}
?>