From 855f243fab926d7e9feac64262d13fca9a8773f5 Mon Sep 17 00:00:00 2001 From: zero Date: Tue, 15 Jan 2008 01:16:43 +0000 Subject: [PATCH] =?UTF-8?q?ModuleHandler=20=EB=B6=80=EB=B6=84=EC=9D=98=20?= =?UTF-8?q?=EC=A3=BC=EC=84=9D=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@3524 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- classes/module/ModuleHandler.class.php | 11 +-- modules/module/module.model.php | 92 +++++++++++++------------- 2 files changed, 47 insertions(+), 56 deletions(-) diff --git a/classes/module/ModuleHandler.class.php b/classes/module/ModuleHandler.class.php index 33a8076ae..7147b05bb 100644 --- a/classes/module/ModuleHandler.class.php +++ b/classes/module/ModuleHandler.class.php @@ -73,7 +73,7 @@ // ModuleModel 객체 생성 $oModuleModel = &getModel('module'); - // document_srl이 있으면 document_srl로 모듈과 모듈 정보를 구함 + // document_srl만 있을 경우 document_srl로 모듈과 모듈 정보를 구함 if($this->document_srl && !$this->mid && !$this->module_srl) { $module_info = $oModuleModel->getModuleInfoByDocumentSrl($this->document_srl); if($this->module && $module_info->module != $this->module) unset($module_info); @@ -147,14 +147,6 @@ return; } - // 설정된 mid가 없을 경우 요청된 act의 standalone 여부 체크 - /* - if(!$this->mid && !$xml_info->action->{$this->act}->standalone) { - $this->error = 'msg_module_is_not_standalone'; - return; - } - */ - // type, grant 값 구함 $type = $xml_info->action->{$this->act}->type; $grant = $xml_info->action->{$this->act}->grant; @@ -210,6 +202,7 @@ // 해당 모듈에 layout_srl이 있는지 확인 if($oModule->module_info->layout_srl && !$oModule->getLayoutFile()) { + // layout_srl이 있으면 해당 레이아웃 정보를 가져와 layout_path/ layout_file 위치 변경 $oLayoutModel = &getModel('layout'); $layout_info = $oLayoutModel->getLayout($oModule->module_info->layout_srl); diff --git a/modules/module/module.model.php b/modules/module/module.model.php index efffba32d..45fde4e0a 100644 --- a/modules/module/module.model.php +++ b/modules/module/module.model.php @@ -15,11 +15,9 @@ /** * @brief document_srl로 모듈의 정보르 구함 - * * 이 경우는 캐시파일을 이용할 수가 없음 **/ function getModuleInfoByDocumentSrl($document_srl) { - // 데이터를 DB에서 가져옴 $args->document_srl = $document_srl; $output = executeQuery('module.getModuleInfoByDocument', $args); @@ -37,13 +35,9 @@ } // 모듈의 정보가 없다면($mid가 잘못이거나 없었을 경우) 기본 모듈을 가져옴 - if(!$output->data) { - $output = executeQuery('module.getDefaultMidInfo'); - } + if(!$output->data) $output = executeQuery('module.getDefaultMidInfo'); - $module_info = $this->arrangeModuleInfo($output->data); - - return $module_info; + return $this->arrangeModuleInfo($output->data); } /** @@ -55,22 +49,58 @@ $output = executeQuery('module.getMidInfo', $args); if(!$output->data) return; - $module_info = $this->arrangeModuleInfo($output->data); - - return $module_info; + return $this->arrangeModuleInfo($output->data); } /** * @brief 여러개의 module_srl에 해당하는 모듈의 정보를 구함 **/ function getModulesInfo($module_srls) { - // 데이터를 가져옴 $args->module_srls = $module_srls; $output = executeQueryArray('module.getModulesInfo', $args); if(!$output->toBool()) return; return $output->data; } + /** + * @brief DB에 생성된 mid 전체 목록을 구해옴 + **/ + function getMidList($args = null) { + $output = executeQuery('module.getMidList', $args); + if(!$output->toBool()) return $output; + + $list = $output->data; + if(!$list) return; + + if(!is_array($list)) $list = array($list); + + foreach($list as $val) { + $mid_list[$val->mid] = $val; + } + return $mid_list; + } + + /** + * @brief mid 목록에 대응하는 module_srl을 배열로 return + **/ + function getModuleSrlByMid($mid) { + if(is_array($mid)) $mid = "'".implode("','",$mid)."'"; + + $args->mid = $mid; + $output = executeQuery('module.getModuleSrlByMid', $args); + if(!$output->toBool()) return $output; + + $list = $output->data; + if(!$list) return; + if(!is_array($list)) $list = array($list); + + foreach($list as $key => $val) { + $module_srl_list[] = $val->module_srl; + } + + return $module_srl_list; + } + /** * @brief DB에서 가져온 원 모듈 정보에서 grant, extraVar등의 정리 **/ @@ -144,40 +174,6 @@ return $output->data; } - /** - * @brief DB에 생성된 mid목록을 구해옴 - **/ - function getMidList($args = null) { - $output = executeQuery('module.getMidList', $args); - if(!$output->toBool()) return $output; - - $list = $output->data; - if(!$list) return; - - if(!is_array($list)) $list = array($list); - - foreach($list as $val) { - $mid_list[$val->mid] = $val; - } - return $mid_list; - } - - /** - * @brief mid 목록에 대응하는 module_srl을 배열로 return - **/ - function getModuleSrlByMid($mid) { - if(is_array($mid)) $mid = "'".implode("','",$mid)."'"; - $args->mid = $mid; - $output = executeQuery('module.getModuleSrlByMid', $args); - if(!$output->toBool()) return $output; - - $list = $output->data; - if(!$list) return; - if(!is_array($list)) $list = array($list); - foreach($list as $key => $val) $module_srl_list[] = $val->module_srl; - return $module_srl_list; - } - /** * @brief 주어진 곳의 스킨 목록을 구함 * 스킨과 skin.xml 파일을 분석 정리한 결과를 return @@ -311,7 +307,6 @@ /** * @brief module의 conf/module.xml 을 통해 grant(권한) 및 action 데이터를 return - * * module.xml 파일의 경우 파싱하는데 시간이 걸리기에 캐싱을 한다... * 캐싱을 할때 바로 include 할 수 있도록 역시 코드까지 추가하여 캐싱을 한다. * 이게 퍼포먼스 상으로는 좋은데 어떤 부정적인 결과를 유도할지는 잘 모르겠... @@ -617,6 +612,9 @@ /** * @brief 특정 모듈의 정보와 회원의 정보를 받아서 관리 권한 유무를 판단 + * 회원의 아이디가 해당 모듈의 admin_id에 있으면 true + * 회원이 속한 그룹이 해당 모듈의 manager 그룹에 있으면 true + * 이 method는 각 모듈.class.php 에서 isAdmin method에서 사용됨 **/ function isModuleAdmin($module_info, $member_info) { $user_id = $member_info->user_id;