From cf09c05f8ad0ccc6db9e3aa29f52120b0b4d7b84 Mon Sep 17 00:00:00 2001 From: khongchi Date: Wed, 29 Jan 2014 14:45:07 +0900 Subject: [PATCH] =?UTF-8?q?#225=20module=20update=EC=97=90=EC=84=9C=20?= =?UTF-8?q?=EC=B2=98=EB=A6=AC=ED=95=98=EC=A7=80=20=EC=95=8A=EA=B3=A0,=20?= =?UTF-8?q?=EB=A9=94=EB=89=B4=20=EC=82=AC=EC=9D=B4=ED=8A=B8=EB=A7=B5=20?= =?UTF-8?q?=EA=B4=80=EB=A6=AC=20=ED=8E=98=EC=9D=B4=EC=A7=80=20=EC=A0=91?= =?UTF-8?q?=EA=B7=BC=EC=8B=9C=20=EC=9E=91=EB=8F=99=EB=90=98=EB=8F=84?= =?UTF-8?q?=EB=A1=9D=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- modules/menu/menu.admin.controller.php | 143 ++++++++++++++++++++++ modules/menu/menu.admin.view.php | 8 ++ modules/module/module.class.php | 163 ------------------------- modules/module/module.controller.php | 32 +---- 4 files changed, 154 insertions(+), 192 deletions(-) diff --git a/modules/menu/menu.admin.controller.php b/modules/menu/menu.admin.controller.php index e3d47e2ea..a804655af 100644 --- a/modules/menu/menu.admin.controller.php +++ b/modules/menu/menu.admin.controller.php @@ -103,6 +103,149 @@ class menuAdminController extends menu $output->add('menuSrl', $args->menu_srl); return $output; } + + function linkAllModuleInstancesToSitemap() + { + $unlinked_modules = false; + $args = new stdClass; + $args->site_srl = 0; + $output = executeQueryArray('module.getNotLinkedModuleBySiteSrl',$args); + if($output->toBool() && $output->data && count($output->data) > 0) + { + $unlinked_modules = $output->data; + } + + if($unlinked_modules) + { + $unlinked_menu_srl = $this->getUnlinkedMenu(); + $output = $this->updateLinkModule($unlinked_modules, $unlinked_menu_srl); + } + + +/* // for 1.7.4 update, 기존에 생성된 Temporary menu 항목 정리 + $oMenuAdminModel = getAdminModel('menu'); + $args = new stdClass(); + $args->title = array("Temporary menu"); + $temp_menus = executeQueryArray('menu.getMenuByTitle', $args); + + $args = new stdClass(); + if($temp_menus->toBool()) + { + foreach($temp_menus->data as $menu) + { + $args->current_menu_srl = $menu->menu_srl; + $args->menu_srl = $moduleConfig->unlinked_menu_srl; + $output3 = executeQuery('menu.updateMenuItems', $args); + + if($output3->toBool()) + { + // delete + $oMenuAdminController = getAdminController('menu'); + $oMenuAdminController->deleteMenu($menu->menu_srl); + } + } + } +*/ + } + + function getUnlinkedMenu() + { + // 'unlinked' menu 존재여부 확인 + $oModuleModel = getModel('module'); + $moduleConfig = $oModuleModel->getModuleConfig('menu'); + + if($moduleConfig->unlinked_menu_srl) + { + $menuArgs = new stdClass; + $menuArgs->menu_srl = $moduleConfig->unlinked_menu_srl; + $menuOutput = executeQuery('menu.getMenu', $menuArgs); + if(!$menuOutput->data) + { + unset($moduleConfig->unlinked_menu_srl); + } + } + + if(!$moduleConfig->unlinked_menu_srl) + { + $output = $this->addMenu('unlinked', 0); + if($output->toBool()) + { + $moduleConfig->unlinked_menu_srl = $output->get('menuSrl'); + $oModuleController = getController('module'); + $oModuleController->updateModuleConfig('menu', $moduleConfig); + } + else + { + return false; + } + } + + return $moduleConfig->unlinked_menu_srl; + } + + /** + * insert menu when not linked module. + * + * @param array $moduleInfos + * @param int $menuSrl + * + * @return Object + */ + function updateLinkModule($moduleInfos, $menuSrl) + { + if(!$moduleInfos || !is_array($moduleInfos) || count($moduleInfos) == 0 || $menuSrl == 0) + { + return new Object(-1, 'msg_invalid_request'); + } + + foreach($moduleInfos as $moduleInfo) + { + // search menu. + $args = new stdClass; + $args->url = $moduleInfo->mid; + $args->site_srl = $moduleInfo->site_srl; + $args->is_shortcut = 'N'; + + $output = executeQuery('menu.getMenuItemByUrl', $args); + + if($output->toBool() && $output->data) + { + $moduleInfo->menu_srl = $output->data->menu_srl; + } + else + { + // create menu item. + $item_args->menu_srl = $menuSrl; + $item_args->url = $moduleInfo->mid; + $item_args->name = $moduleInfo->mid; + $item_args->menu_item_srl = getNextSequence(); + $item_args->listorder = -1*$item_args->menu_item_srl; + + $output = executeQuery('menu.insertMenuItem', $item_args); + if(!$output->toBool()) + { + return $output; + } + $moduleInfo->menu_srl = $menuSrl; + } + + $output = executeQuery('module.updateModule', $moduleInfo); + + $oCacheHandler = CacheHandler::getInstance('object', null, true); + if($oCacheHandler->isSupport()) + { + $oCacheHandler->invalidateGroupKey('site_and_module'); + } + return $output; + } + + $oMenuAdminController = getAdminController('menu'); + $oMenuAdminController->makeXmlFile($menuSrl); + + return new Object(); + } + + /** * Change the menu title diff --git a/modules/menu/menu.admin.view.php b/modules/menu/menu.admin.view.php index 32e72b8b5..4b3a2bf36 100644 --- a/modules/menu/menu.admin.view.php +++ b/modules/menu/menu.admin.view.php @@ -21,6 +21,7 @@ class menuAdminView extends menu $this->setTemplatePath($this->module_path.'tpl'); } + /** * Site map admin menu index page * @return void @@ -39,6 +40,13 @@ class menuAdminView extends menu else $site_srl = (int)$site_module_info->site_srl; } + // process for unlinked modules + if($site_srl == 0) + { + $oMenuController = getAdminController('menu'); + $oMenuController->linkAllModuleInstancesToSitemap(); + } + $oAdmin = getClass('admin'); $oMenuAdminModel = getAdminModel('menu'); diff --git a/modules/module/module.class.php b/modules/module/module.class.php index ab1d556ad..232a83205 100644 --- a/modules/module/module.class.php +++ b/modules/module/module.class.php @@ -108,26 +108,6 @@ class module extends ModuleObject $oModuleModel = getModel('module'); $moduleConfig = $oModuleModel->getModuleConfig('module'); if(!$moduleConfig->isUpdateFixedValue) return true; - - // 'unlinked' menu 존재여부 확인 - if(!$moduleConfig->unlinked_menu_srl) return true; - else - { - $menuArgs = new stdClass; - $menuArgs->menu_srl = $moduleConfig->unlinked_menu_srl; - $menuOutput = executeQuery('menu.getMenu', $menuArgs); - if(!$menuOutput->data) return true; - } - - // menu_srl이 등록되지 않은 mid가 있는지 검사(지정된 menu_srl이 있을 경우, 지정된 menu_item도 있다고 가정) - $args = new stdClass; - $args->site_srl = 0; - $output = executeQueryArray('module.getNotLinkedModuleBySiteSrl',$args); - if($output->toBool() && $output->data && count($output->data) > 0) - { - return true; - } - } /** @@ -436,152 +416,9 @@ class module extends ModuleObject $output = $oModuleController->updateModuleConfig('module', $moduleConfig); } - // menu(sitemap)에 링크되지 않은 모듈인스턴스 링크 - if(Context::isInstalled()) - { - $output1 = $this->linkAllModuleInstancesToSitemap(); - if(!$output1->toBool()) return $output1; - } - return new Object(0, 'success_updated'); } - private function linkAllModuleInstancesToSitemap() - { - // 'unlinked' menu가 지정돼 있는지 검사 - $oModuleController = getController('module'); - $oModuleModel = getModel('module'); - $moduleConfig = $oModuleModel->getModuleConfig('module'); - - // 지정돼 있지 않다면 'unlinked' menu 생성 - $created_menu_srl = 0; - if(!$moduleConfig->unlinked_menu_srl) - { - $created_menu_srl = $oModuleController->makeUnlinkedMenu(); - } - // 지정돼 있지만 실제로 없다면 생성 - else - { - $menuArgs = new stdClass; - $menuArgs->menu_srl = $moduleConfig->unlinked_menu_srl; - $menuOutput = executeQuery('menu.getMenu', $menuArgs); - if(!$menuOutput->data) - { - $created_menu_srl = $oModuleController->makeUnlinkedMenu(); - } - } - - // 'unlinked' menu가 새로 생성되었다면 module config에 저장 - if($created_menu_srl) - { - $moduleConfig->unlinked_menu_srl = $created_menu_srl; - $oModuleController->updateModuleConfig('module', $moduleConfig); - } - - // for 1.7.4 update, 기존에 생성된 Temporary menu 항목 정리 - $oMenuAdminModel = getAdminModel('menu'); - $args = new stdClass(); - $args->title = array("Temporary menu"); - $temp_menus = executeQueryArray('menu.getMenuByTitle', $args); - - $args = new stdClass(); - if($temp_menus->toBool()) - { - foreach($temp_menus->data as $menu) - { - $args->current_menu_srl = $menu->menu_srl; - $args->menu_srl = $moduleConfig->unlinked_menu_srl; - $output3 = executeQuery('menu.updateMenuItems', $args); - - if($output3->toBool()) - { - // delete - $oMenuAdminController = getAdminController('menu'); - $oMenuAdminController->deleteMenu($menu->menu_srl); - } - } - } - - // menu_srl이 지정되지 않은 mmodule instance가 있는지 검사 - $args = new stdClass; - $args->site_srl = 0; - $output1 = executeQueryArray('module.getNotLinkedModuleBySiteSrl',$args); - if($output1->toBool() && $output1->data && count($output1->data) > 0) - { - $output2 = $this->updateLinkModule($output1->data, $moduleConfig->unlinked_menu_srl); - if(!$output2->toBool()) - { - return $output2; - } - } - - return new Object(0,'success'); - } - - /** - * insert menu when not linked module. - * - * @param array $moduleInfos - * @param int $menuSrl - * - * @return Object - */ - private function updateLinkModule($moduleInfos, $menuSrl) - { - if(!$moduleInfos || !is_array($moduleInfos) || count($moduleInfos) == 0 || $menuSrl == 0) - { - return new Object(-1, 'msg_invalid_request'); - } - - foreach($moduleInfos as $moduleInfo) - { - // search menu. - $args = new stdClass; - $args->url = $moduleInfo->mid; - $args->site_srl = $moduleInfo->site_srl; - $args->is_shortcut = 'N'; - - $output = executeQuery('menu.getMenuItemByUrl', $args); - - if($output->toBool() && $output->data) - { - $moduleInfo->menu_srl = $output->data->menu_srl; - } - else - { - // create menu item. - $item_args->menu_srl = $menuSrl; - $item_args->url = $moduleInfo->mid; - $item_args->name = $moduleInfo->mid; - $item_args->menu_item_srl = getNextSequence(); - $item_args->listorder = -1*$item_args->menu_item_srl; - - $output = executeQuery('menu.insertMenuItem', $item_args); - if(!$output->toBool()) - { - return $output; - } - $moduleInfo->menu_srl = $menuSrl; - } - - $output = executeQuery('module.updateModule', $moduleInfo); - if(!$output->toBool()) - { - $oCacheHandler = CacheHandler::getInstance('object', null, true); - if($oCacheHandler->isSupport()) - { - $oCacheHandler->invalidateGroupKey('site_and_module'); - } - return $output; - } - } - - $oMenuAdminController = getAdminController('menu'); - $oMenuAdminController->makeXmlFile($menuSrl); - - return new Object(); - } - function updateForUniqueSiteDomain() { $output = executeQueryArray("module.getNonuniqueDomains"); diff --git a/modules/module/module.controller.php b/modules/module/module.controller.php index b53b20d48..3f29f532e 100644 --- a/modules/module/module.controller.php +++ b/modules/module/module.controller.php @@ -423,20 +423,11 @@ class moduleController extends module // if menu is not created, create menu also. and does not supported that in virtual site. if(!$menuOutput->data && !$args->site_srl) { + debugPrint($args->menu_srl); $oMenuAdminModel = getAdminModel('menu'); - $oModuleModel = getModel('module'); - $moduleConfig = $oModuleModel->getModuleConfig('module'); - - $menuSrl = $moduleConfig->unlinked_menu_srl; - if(!$menuSrl) - { - $menuSrl = $this->makeUnlinkedMenu(); - - // 'unlinked' menu를 module config에 저장 - $moduleConfig->unlinked_menu_srl = $menuSrl; - $this->updateModuleConfig('module', $moduleConfig); - } + $oMenuAdminController = getAdminController('menu'); + $menuSrl = $oMenuAdminController->getUnlinkedMenu(); $menuArgs->menu_srl = $menuSrl; $menuArgs->menu_item_srl = getNextSequence(); @@ -455,7 +446,6 @@ class moduleController extends module return $menuItemOutput; } - $oMenuAdminController = getAdminController('menu'); $oMenuAdminController->makeXmlFile($menuSrl); } } @@ -484,22 +474,6 @@ class moduleController extends module return $output; } - function makeUnlinkedMenu() - { - $args = new stdClass(); - $args->title = 'unlinked'; - $menuSrl = $args->menu_srl = getNextSequence(); - $args->listorder = $args->menu_srl * -1; - - $output = executeQuery('menu.insertMenu', $args); - if($output->toBool()) - { - return $menuSrl; - } - - return false; - } - /** * @brief Modify module information */