moduleModel 및 moduleController에서 제공하던 각 모듈별 설정을 이용시 너무 많은 설정값들이 생길 경우 이를 serialize/ unserialize하는데 드는 부하가 커짐을 방지하기 위해서 module_config외에 module_part_config 테이블을 주고 module_srl 별 설정을 분산하도록 하여 쓸데없는 부하가 생기지 않도록 수정.

files/cache/module_info내에 있던 module_config 캐시 파일도 사용하지 않도록 변경


git-svn-id: http://xe-core.googlecode.com/svn/sandbox@4696 201d5d3c-b55e-5fd7-737f-ddc643e51545
This commit is contained in:
zero 2008-10-27 07:27:47 +00:00
parent cc7dd67ed2
commit 5934906056
41 changed files with 372 additions and 445 deletions

View file

@ -47,15 +47,9 @@
* @brief RSS 모듈별 설정 함수
**/
function setRssModuleConfig($module_srl, $open_rss) {
$oModuleModel = &getModel('module');
$oModuleController = &getController('module');
$rss_config = $oModuleModel->getModuleConfig('rss');
$rss_config->module_config[$module_srl]->module_srl = $module_srl;
$rss_config->module_config[$module_srl]->open_rss = $open_rss;
$oModuleController->insertModuleConfig('rss', $rss_config);
$config->open_rss = $open_rss;
$oModuleController->insertModulePartConfig('rss',$module_srl,$config);
return new Object();
}
}

View file

@ -23,7 +23,6 @@
$current_module_srl = Context::get('module_srl');
if(!$current_module_srl) {
// 선택된 모듈의 정보를 가져옴
$current_module_info = Context::get('current_module_info');
$current_module_srl = $current_module_info->module_srl;
}

View file

@ -16,11 +16,8 @@
function getRssModuleConfig($module_srl) {
// rss 모듈의 config를 가져옴
$oModuleModel = &getModel('module');
$rss_config = $oModuleModel->getModuleConfig('rss');
$module_rss_config = $rss_config->module_config[$module_srl];
if(!$module_rss_config->module_srl) {
$module_rss_config = $oModuleModel->getModuleConfig('rss', $module_srl);
if(!$module_rss_config) {
$module_rss_config->module_srl = $module_srl;
$module_rss_config->open_rss = 'N';
}

View file

@ -25,72 +25,38 @@
**/
$mid = Context::get('mid'); ///< 대상 모듈 id, 없으면 전체로
// rss module config를 가져옴
$oModuleModel = &getModel('module');
$rss_config = $oModuleModel->getModuleConfig('rss');
/**
* 요청된 모듈 혹은 전체 모듈의 정보를 구하고 open_rss의 값을 체크
**/
$mid_list = array();
$module_srls = array();
$rss_config = array();
// mid값이 없으면 전체 mid중 open_rss == 'Y|H'인 걸 고름
if(!$mid) {
// 하나의 mid가 지정되어 있으면 그 mid에 대한 것만 추출
if($mid) {
$module_srl = $this->module_info->module_srl;
$config = $oModuleModel->getModulePartConfig('rss', $module_srl);
if($config->open_rss && $config->open_rss != 'N') {
$module_srls[] = $module_srl;
$rss_config[$module_srl] = $config->open_rss;
}
$module_srl_list = null;
// rss config에 등록된 모듈중 rss 공개하는 것들의 module_srl을 고름
if($rss_config->module_config && count($rss_config->module_config)) {
foreach($rss_config->module_config as $key => $val) {
if($val->open_rss == 'N' || !$val->open_rss) continue;
$module_srl_list[] = $val->module_srl;
// mid 가 선택되어 있지 않으면 전체
} else {
$rss_config = $oModuleModel->getModulePartConfigs('rss');
if($rss_config) {
foreach($rss_config as $module_srl => $config) {
if($config && $config->open_rss != 'N') {
$module_srls[] = $module_srl;
$rss_config[$module_srl] = $config->open_rss;
}
}
}
// 선택된 모듈이 없으면 패스
if(!$module_srl_list || !count($module_srl_list)) return $this->dispError();
// 선택된 모듈들을 정리
$args->module_srls = implode(',',$module_srl_list);
$module_list = $oModuleModel->getMidList($args);
if(!$module_list) return $this->dispError();
// 대상 모듈을 정리함
$module_srl_list = array();
foreach($module_list as $mid => $val) {
$val->open_rss = $rss_config->module_config[$val->module_srl]->open_rss;
$module_srl_list[] = $val->module_srl;
$mid_list[$val->module_srl] = $val;
}
if(!count($module_srl_list)) return $this->dispError();
unset($output);
unset($args);
$module_srl = implode(',',$module_srl_list);
// 있으면 해당 모듈의 정보를 구함
} else {
// 모듈의 설정 정보를 받아옴 (module model 객체를 이용)
$module_info = $oModuleModel->getModuleInfoByMid($mid);
if($module_info->mid != $mid) return $this->dispError();
// 해당 모듈이 rss를 사용하는지 확인
$rss_module_config = $rss_config->module_config[$module_info->module_srl];
if(!$rss_module_config->open_rss) $rss_module_config->open_rss = 'N';
// RSS 비활성화 되었는지 체크하여 비활성화시 에러 출력
if($rss_module_config->open_rss == 'N') return $this->dispError();
$module_srl = $module_info->module_srl;
$module_info->open_rss = $rss_module_config->open_rss;
$mid_list[$module_info->module_srl] = $module_info;
unset($args);
}
/**
* 출력할 컨텐츠 추출을 위한 인자 정리
**/
$args->module_srl = $module_srl;
if(!count($module_srls)) return $this->dispError();
$args->module_srls = implode(',',$module_srls);
$module_list = $oModuleModel->getMidList($args);
$args->search_target = 'is_secret';
$args->search_keyword = 'N';
$args->page = 1;
@ -107,7 +73,7 @@
$document_list = $output->data;
// rss 제목 및 정보등을 추출
if($this->mid) {
if($mid) {
$info->title = Context::getBrowserTitle();
$info->description = $this->module_info->description;
$info->link = getUrl('','mid',Context::get('mid'));
@ -121,7 +87,7 @@
// RSS 출력물에서 사용될 변수 세팅
Context::set('info', $info);
Context::set('mid_list', $mid_list);
Context::set('rss_config', $rss_config);
Context::set('document_list', $document_list);
// 결과 출력을 XMLRPC로 강제 지정

View file

@ -13,7 +13,7 @@
<title><![CDATA[{$oDocument->getTitleText()}]]></title>
<author><![CDATA[{$oDocument->getNickName()}]]></author>
<link><![CDATA[{$oDocument->getPermanentUrl()}]]></link>
<!--@if($mid_list[$oDocument->get('module_srl')]->open_rss=='Y')-->
<!--@if($rss_config[$oDocument->get('module_srl')]->open_rss=='Y')-->
<description><![CDATA[{$oDocument->getContent(false,false,true)}]]></description>
<!--@else-->
<description><![CDATA[{$oDocument->getContentText(100)}]]></description>

View file

@ -10,7 +10,7 @@
<td class="wide">
<select name="open_rss" class="w400">
<!--@foreach($lang->open_rss_types as $key=>$val)-->
<option value="{$key}" <!--@if($rss_config->open_rss==$key)-->selected="selected"<!--@end-->>{$val}</option>
<option value="{$key}" <!--@if(!$rss_config->open_rss && $key=='N')-->selected="selected"<!--@elseif($rss_config->open_rss==$key)-->selected="selected"<!--@end-->>{$val}</option>
<!--@end-->
</select>
<p>{$lang->about_open_rss}</p>

View file

@ -14,7 +14,7 @@
<title><![CDATA[{$oDocument->getTitleText()}]]></title>
<author><![CDATA[{$oDocument->getNickName()}]]></author>
<link><![CDATA[{$oDocument->getPermanentUrl()}]]></link>
<!--@if($mid_list[$oDocument->get('module_srl')]->open_rss=='Y')-->
<!--@if($rss_config[$oDocument->get('module_srl')]->open_rss=='Y')-->
<description><![CDATA[{$oDocument->getContent(false)}]]></description>
<!--@else-->
<description><![CDATA[{$oDocument->getContentText(100)}]]></description>