글 보기 및 수정/쓰기시 확장변수 누락 문제

git-svn-id: http://xe-core.googlecode.com/svn/sandbox@5939 201d5d3c-b55e-5fd7-737f-ddc643e51545
This commit is contained in:
ngleader 2009-03-23 10:22:31 +00:00
parent 40d7d24f39
commit 801cc6c811
2 changed files with 32 additions and 26 deletions

View file

@ -21,7 +21,7 @@
} }
/** /**
* @brief 확장변수를 문서마다 처리하지 않기 위해 매크로성으로 일괄 select 적용 * @brief 확장변수를 문서마다 처리하지 않기 위해 매크로성으로 일괄 select 적용
**/ **/
function setToAllDocumentExtraVars() { function setToAllDocumentExtraVars() {
// XE에서 모든 문서 객체는 XE_DOCUMENT_LIST라는 전역 변수에 세팅을 함 // XE에서 모든 문서 객체는 XE_DOCUMENT_LIST라는 전역 변수에 세팅을 함
@ -42,6 +42,7 @@
// 확장변수 미지정된 문서에 대해서 일단 현재 접속자의 언어코드로 확장변수를 검색 // 확장변수 미지정된 문서에 대해서 일단 현재 접속자의 언어코드로 확장변수를 검색
$obj->document_srl = implode(',',$document_srls); $obj->document_srl = implode(',',$document_srls);
$output = executeQueryArray('document.getDocumentsExtraVars', $obj); $output = executeQueryArray('document.getDocumentsExtraVars', $obj);
if($output->toBool() && $output->data) { if($output->toBool() && $output->data) {
$setted = array(); $setted = array();
@ -52,13 +53,20 @@
if($val->idx == -1) $GLOBALS['XE_DOCUMENT_LIST'][$val->document_srl]->add('title', $val->value); if($val->idx == -1) $GLOBALS['XE_DOCUMENT_LIST'][$val->document_srl]->add('title', $val->value);
else if($val->idx == -2) $GLOBALS['XE_DOCUMENT_LIST'][$val->document_srl]->add('content', $val->value); else if($val->idx == -2) $GLOBALS['XE_DOCUMENT_LIST'][$val->document_srl]->add('content', $val->value);
} elseif($val->idx>0) { } elseif($val->idx>0) {
if(!isset($GLOBALS['XE_EXTRA_VARS'][$val->document_srl])){
$module_srl = $GLOBALS['XE_DOCUMENT_LIST'][$val->document_srl]->get('module_srl');
$oExtraItem = $GLOBALS['XE_EXTRAVARS'][$module_srl];
$GLOBALS['XE_EXTRA_VARS'][$val->document_srl] = $oExtraItem;
}
if($lang_code == $val->lang_code) { if($lang_code == $val->lang_code) {
$obj = new ExtraItem($val->module_srl, $val->idx, $val->name, $val->type, $val->default, $val->desc, $val->is_required, $val->search, $val->value, $val->eid); $obj = new ExtraItem($val->module_srl, $val->idx, $val->name, $val->type, $val->default, $val->desc, $val->is_required, $val->search, $val->value, $val->eid);
$GLOBALS['XE_EXTRA_VARS'][$val->document_srl][$val->idx] = $obj; $GLOBALS['XE_EXTRA_VARS'][$val->document_srl][$val->idx] = $obj;
} else if($lang_code == $GLOBALS['XE_DOCUMENT_LIST'][$val->document_srl]->lang_code && !isset($GLOBALS['XE_EXTRA_VARS'][$val->document_srl][$val->idx])) { } else if($lang_code == $GLOBALS['XE_DOCUMENT_LIST'][$val->document_srl]->lang_code && !$GLOBALS['XE_EXTRA_VARS'][$val->document_srl][$val->idx]->value) {
$obj = new ExtraItem($val->module_srl, $val->idx, $val->name, $val->type, $val->default, $val->desc, $val->is_required, $val->search, $val->value, $val->eid); $obj = new ExtraItem($val->module_srl, $val->idx, $val->name, $val->type, $val->default, $val->desc, $val->is_required, $val->search, $val->value, $val->eid);
$GLOBALS['XE_EXTRA_VARS'][$val->document_srl][$val->idx] = $obj; $GLOBALS['XE_EXTRA_VARS'][$val->document_srl][$val->idx] = $obj;
} else if(!isset($GLOBALS['XE_EXTRA_VARS'][$val->document_srl][$val->idx])) { } else if(!$GLOBALS['XE_EXTRA_VARS'][$val->document_srl][$val->idx]->value) {
$obj = new ExtraItem($val->module_srl, $val->idx, $val->name, $val->type, $val->default, $val->desc, $val->is_required, $val->search, $val->value, $val->eid); $obj = new ExtraItem($val->module_srl, $val->idx, $val->name, $val->type, $val->default, $val->desc, $val->is_required, $val->search, $val->value, $val->eid);
$GLOBALS['XE_EXTRA_VARS'][$val->document_srl][$val->idx] = $obj; $GLOBALS['XE_EXTRA_VARS'][$val->document_srl][$val->idx] = $obj;
} }
@ -87,7 +95,7 @@
$oDocument = new documentItem($document_srl, true); $oDocument = new documentItem($document_srl, true);
$GLOBALS['XE_DOCUMENT_LIST'][$document_srl] = $oDocument; $GLOBALS['XE_DOCUMENT_LIST'][$document_srl] = $oDocument;
$this->setToAllDocumentExtraVars(); $this->setToAllDocumentExtraVars();
} }
if($is_admin) $GLOBALS['XE_DOCUMENT_LIST'][$document_srl]->setGrant(); if($is_admin) $GLOBALS['XE_DOCUMENT_LIST'][$document_srl]->setGrant();
return $GLOBALS['XE_DOCUMENT_LIST'][$document_srl]; return $GLOBALS['XE_DOCUMENT_LIST'][$document_srl];
@ -132,9 +140,9 @@
* @brief module_srl값을 가지는 문서의 목록을 가져옴 * @brief module_srl값을 가지는 문서의 목록을 가져옴
**/ **/
function getDocumentList($obj, $except_notice = false) { function getDocumentList($obj, $except_notice = false) {
// 정렬 대상과 순서 체크 // 정렬 대상과 순서 체크
if(!in_array($obj->sort_index, array('list_order','regdate','last_update','update_order','readed_count','voted_count','comment_count','trackback_count','uploaded_count','title'))) $obj->sort_index = 'list_order'; if(!in_array($obj->sort_index, array('list_order','regdate','last_update','update_order','readed_count','voted_count','comment_count','trackback_count','uploaded_count','title'))) $obj->sort_index = 'list_order';
if(!in_array($obj->order_type, array('desc','asc'))) $obj->order_type = 'asc'; if(!in_array($obj->order_type, array('desc','asc'))) $obj->order_type = 'asc';
// module_srl 대신 mid가 넘어왔을 경우는 직접 module_srl을 구해줌 // module_srl 대신 mid가 넘어왔을 경우는 직접 module_srl을 구해줌
if($obj->mid) { if($obj->mid) {
@ -143,7 +151,7 @@
unset($obj->mid); unset($obj->mid);
} }
// 넘어온 module_srl은 array일 수도 있기에 array인지를 체크 // 넘어온 module_srl은 array일 수도 있기에 array인지를 체크
if(is_array($obj->module_srl)) $args->module_srl = implode(',', $obj->module_srl); if(is_array($obj->module_srl)) $args->module_srl = implode(',', $obj->module_srl);
else $args->module_srl = $obj->module_srl; else $args->module_srl = $obj->module_srl;
@ -249,10 +257,10 @@
* 만약 use_division이 true일 경우 document division을 이용하도록 변경 * 만약 use_division이 true일 경우 document division을 이용하도록 변경
**/ **/
if($use_division) { if($use_division) {
// 시작 division // 시작 division
$division = (int)Context::get('division'); $division = (int)Context::get('division');
// division값이 없다면 제일 상위 // division값이 없다면 제일 상위
if(!$division) { if(!$division) {
$division_args->module_srl = $args->module_srl; $division_args->module_srl = $args->module_srl;
$division_args->list_count = 1; $division_args->list_count = 1;
@ -266,7 +274,7 @@
$division_args = null; $division_args = null;
} }
// 마지막 division // 마지막 division
$last_division = (int)Context::get('last_division'); $last_division = (int)Context::get('last_division');
// 지정된 division에서부터 5000개 후의 division값을 구함 // 지정된 division에서부터 5000개 후의 division값을 구함
@ -336,7 +344,7 @@
$idx = 0; $idx = 0;
$data = $output->data; $data = $output->data;
unset($output->data); unset($output->data);
if(!isset($virtual_number)) if(!isset($virtual_number))
{ {
$keys = array_keys($data); $keys = array_keys($data);
@ -361,7 +369,7 @@
$output->data[$virtual_number] = $oDocument; $output->data[$virtual_number] = $oDocument;
$virtual_number --; $virtual_number --;
} }
$this->setToAllDocumentExtraVars(); $this->setToAllDocumentExtraVars();
return $output; return $output;
@ -439,7 +447,7 @@
$mid = Context::get('cur_mid'); $mid = Context::get('cur_mid');
$logged_info = Context::get('logged_info'); $logged_info = Context::get('logged_info');
$act = Context::get('cur_act'); $act = Context::get('cur_act');
// menu_list 에 "표시할글,target,url" 을 배열로 넣는다 // menu_list 에 "표시할글,target,url" 을 배열로 넣는다
$menu_list = array(); $menu_list = array();
@ -685,7 +693,7 @@
$oDocumentController->makeCategoryFile($module_srl); $oDocumentController->makeCategoryFile($module_srl);
} }
return $xml_file; return $xml_file;
} }
/** /**
* @brief 문서 category정보의 php 캐시 파일을 return * @brief 문서 category정보의 php 캐시 파일을 return
@ -697,7 +705,7 @@
$oDocumentController->makeCategoryFile($module_srl); $oDocumentController->makeCategoryFile($module_srl);
} }
return $php_file; return $php_file;
} }
/** /**
* @brief 월별 보관현황을 가져옴 * @brief 월별 보관현황을 가져옴
@ -709,7 +717,7 @@
unset($obj->mid); unset($obj->mid);
} }
// 넘어온 module_srl은 array일 수도 있기에 array인지를 체크 // 넘어온 module_srl은 array일 수도 있기에 array인지를 체크
if(is_array($obj->module_srl)) $args->module_srl = implode(',', $obj->module_srl); if(is_array($obj->module_srl)) $args->module_srl = implode(',', $obj->module_srl);
else $args->module_srl = $obj->module_srl; else $args->module_srl = $obj->module_srl;
@ -731,7 +739,7 @@
unset($obj->mid); unset($obj->mid);
} }
// 넘어온 module_srl은 array일 수도 있기에 array인지를 체크 // 넘어온 module_srl은 array일 수도 있기에 array인지를 체크
if(is_array($obj->module_srl)) $args->module_srl = implode(',', $obj->module_srl); if(is_array($obj->module_srl)) $args->module_srl = implode(',', $obj->module_srl);
else $args->module_srl = $obj->module_srl; else $args->module_srl = $obj->module_srl;
$args->regdate = $obj->regdate; $args->regdate = $obj->regdate;

View file

@ -1,10 +1,11 @@
<query id="getDocumentsExtraVars" action="select"> <query id="getDocumentsExtraVars" action="select">
<tables> <tables>
<table name="document_extra_vars" alias="extra_vars" /> <table name="document_extra_keys" alias="extra_keys" />
<table name="document_extra_keys" alias="extra_keys" type="left join"> <table name="document_extra_vars" alias="extra_vars" type="left join">
<conditions> <conditions>
<condition operation="equal" column="extra_keys.module_srl" default="extra_vars.module_srl" /> <condition operation="equal" column="extra_keys.module_srl" default="extra_vars.module_srl" />
<condition operation="equal" column="extra_keys.var_idx" default="extra_vars.var_idx" pipe="and" /> <condition operation="in" column="extra_vars.document_srl" var="document_srl" pipe="and" />
<condition operation="equal" column="extra_keys.eid" default="extra_vars.eid" pipe="and" />
</conditions> </conditions>
</table> </table>
</tables> </tables>
@ -16,15 +17,12 @@
<column name="extra_keys.var_search" alias="search" /> <column name="extra_keys.var_search" alias="search" />
<column name="extra_keys.var_default" alias="default" /> <column name="extra_keys.var_default" alias="default" />
<column name="extra_keys.var_desc" alias="desc" /> <column name="extra_keys.var_desc" alias="desc" />
<column name="extra_vars.var_idx" alias="idx" /> <column name="extra_keys.var_idx" alias="idx" />
<column name="extra_vars.document_srl" alias="document_srl" /> <column name="extra_vars.document_srl" alias="document_srl" />
<column name="extra_vars.lang_code" alias="lang_code" /> <column name="extra_vars.lang_code" alias="lang_code" />
<column name="extra_vars.value" alias="value" /> <column name="extra_vars.value" alias="value" />
<column name="extra_vars.eid" alias="eid" /> <column name="extra_keys.eid" alias="eid" />
</columns> </columns>
<conditions>
<condition operation="in" column="extra_vars.document_srl" var="document_srl" pipe="and" />
</conditions>
<navigation> <navigation>
<index var="sort_index" default="extra_keys.var_idx" order="asc" /> <index var="sort_index" default="extra_keys.var_idx" order="asc" />
</navigation> </navigation>