Dom't delete linked module when deleting menu

This commit is contained in:
Kijin Sung 2023-06-25 17:55:18 +09:00
parent 912229c881
commit c9ad195740

View file

@ -298,6 +298,7 @@ class menuAdminController extends menu
function procMenuAdminDelete() function procMenuAdminDelete()
{ {
$menu_srl = Context::get('menu_srl'); $menu_srl = Context::get('menu_srl');
$delete_module = Context::get('delete_module') === 'Y';
$oMenuAdminModel = getAdminModel('menu'); $oMenuAdminModel = getAdminModel('menu');
$menuInfo = $oMenuAdminModel->getMenu($menu_srl); $menuInfo = $oMenuAdminModel->getMenu($menu_srl);
@ -338,7 +339,7 @@ class menuAdminController extends menu
throw new Rhymix\Framework\Exception('msg_cannot_delete_homemenu'); throw new Rhymix\Framework\Exception('msg_cannot_delete_homemenu');
} }
$output = $this->deleteMenu($menu_srl); $output = $this->deleteMenu($menu_srl, $delete_module);
if(!$output->toBool()) if(!$output->toBool())
{ {
throw new Rhymix\Framework\Exception($output->message); throw new Rhymix\Framework\Exception($output->message);
@ -354,7 +355,7 @@ class menuAdminController extends menu
* Delete menu_item and xml cache files * Delete menu_item and xml cache files
* @return Object * @return Object
*/ */
function deleteMenu($menu_srl) function deleteMenu($menu_srl, $delete_module = false)
{ {
$oDB = DB::getInstance(); $oDB = DB::getInstance();
$oDB->begin(); $oDB->begin();
@ -365,28 +366,30 @@ class menuAdminController extends menu
$oMenuAdminModel = getAdminModel('menu'); $oMenuAdminModel = getAdminModel('menu');
$menuInfo = $oMenuAdminModel->getMenu($args->menu_srl); $menuInfo = $oMenuAdminModel->getMenu($args->menu_srl);
// Delete modules // Delete menu
$output = executeQueryArray('menu.getMenuItems', $args); $output = executeQueryArray('menu.getMenuItems', $args);
if(!$output->toBool()) if(!$output->toBool())
{ {
return $output; return $output;
} }
$oModuleController = getController('module'); // Delete linked module
$oModuleModel = getModel('module'); if ($delete_module)
foreach($output->data as $itemInfo)
{ {
if($itemInfo->is_shortcut != 'Y' && strncasecmp('http', $itemInfo->url, 4) !== 0) $oModuleController = ModuleController::getInstance();
foreach($output->data as $itemInfo)
{ {
$moduleInfo = $oModuleModel->getModuleInfoByMid($itemInfo->url, $menuInfo->site_srl); if ($itemInfo->is_shortcut != 'Y' && strncasecmp('http', $itemInfo->url, 4) !== 0)
if($moduleInfo->module_srl)
{ {
$output = $oModuleController->onlyDeleteModule($moduleInfo->module_srl); $moduleInfo = ModuleModel::getModuleInfoByMid($itemInfo->url, $menuInfo->site_srl);
if(!$output->toBool()) if ($moduleInfo->module_srl)
{ {
$oDB->rollback(); $output = $oModuleController->onlyDeleteModule($moduleInfo->module_srl);
return $output; if (!$output->toBool())
{
$oDB->rollback();
return $output;
}
} }
} }
} }
@ -399,6 +402,7 @@ class menuAdminController extends menu
$oDB->rollback(); $oDB->rollback();
return $output; return $output;
} }
// Delete the menu // Delete the menu
$output = executeQuery("menu.deleteMenu", $args); $output = executeQuery("menu.deleteMenu", $args);
if(!$output->toBool()) if(!$output->toBool())
@ -407,6 +411,8 @@ class menuAdminController extends menu
return $output; return $output;
} }
$oDB->commit();
// Delete cache files // Delete cache files
$cache_list = FileHandler::readDir("./files/cache/menu","",false,true); $cache_list = FileHandler::readDir("./files/cache/menu","",false,true);
if(count($cache_list)) if(count($cache_list))
@ -421,8 +427,6 @@ class menuAdminController extends menu
$image_path = sprintf('./files/attach/menu_button/%d', $menu_srl); $image_path = sprintf('./files/attach/menu_button/%d', $menu_srl);
FileHandler::removeDir($image_path); FileHandler::removeDir($image_path);
$oDB->commit();
return new BaseObject(0,'success_deleted'); return new BaseObject(0,'success_deleted');
} }
@ -870,8 +874,9 @@ class menuAdminController extends menu
$args->menu_srl = Context::get('menu_srl'); $args->menu_srl = Context::get('menu_srl');
$args->menu_item_srl = Context::get('menu_item_srl'); $args->menu_item_srl = Context::get('menu_item_srl');
$args->is_force = Context::get('is_force'); $args->is_force = Context::get('is_force');
$delete_module = Context::get('delete_module') === 'Y';
$returnObj = $this->deleteItem($args); $returnObj = $this->deleteItem($args, $delete_module);
if(is_object($returnObj)) if(is_object($returnObj))
{ {
$this->setError($returnObj->error); $this->setError($returnObj->error);
@ -891,7 +896,7 @@ class menuAdminController extends menu
* @args menu_srl, menu_item_srl, is_force * @args menu_srl, menu_item_srl, is_force
* @return void|Object * @return void|Object
*/ */
public function deleteItem($args) public function deleteItem($args, $delete_module = false)
{ {
$oModuleModel = getModel('module'); $oModuleModel = getModel('module');
$oMenuAdminModel = getAdminModel('menu'); $oMenuAdminModel = getAdminModel('menu');
@ -950,7 +955,7 @@ class menuAdminController extends menu
$oDB = DB::getInstance(); $oDB = DB::getInstance();
$oDB->begin(); $oDB->begin();
$this->_recursiveDeleteMenuItem($oDB, $menuInfo, $originMenu); $this->_recursiveDeleteMenuItem($oDB, $menuInfo, $originMenu, $delete_module);
$oDB->commit(); $oDB->commit();
@ -980,11 +985,10 @@ class menuAdminController extends menu
} }
} }
private function _deleteMenuItem(&$oDB, &$menuInfo, $node) private function _deleteMenuItem(&$oDB, &$menuInfo, $node, $delete_module = false)
{ {
// Remove from the DB // Remove from the DB
$args = new stdClass(); $args = new stdClass();
$args->menu_srl = $menuSrl;
$args->menu_item_srl = $node['node_srl']; $args->menu_item_srl = $node['node_srl'];
$output = executeQuery("menu.deleteMenuItem", $args); $output = executeQuery("menu.deleteMenuItem", $args);
if(!$output->toBool()) if(!$output->toBool())
@ -1001,11 +1005,8 @@ class menuAdminController extends menu
if($node['active_btn']) FileHandler::removeFile($node['active_btn']); if($node['active_btn']) FileHandler::removeFile($node['active_btn']);
// Delete module // Delete module
if($node['is_shortcut'] != 'Y' && strncasecmp('http', $node['url'], 4) !== 0) if($delete_module && $node['is_shortcut'] != 'Y' && strncasecmp('http', $node['url'], 4) !== 0)
{ {
$oModuleController = getController('module');
$oModuleModel = getModel('module');
// reference menu's url modify // reference menu's url modify
$args->url = $node['url']; $args->url = $node['url'];
$args->site_srl = $menuInfo->site_srl; $args->site_srl = $menuInfo->site_srl;
@ -1023,7 +1024,8 @@ class menuAdminController extends menu
} }
} }
$moduleInfo = $oModuleModel->getModuleInfoByMid($node['url'], $menuInfo->site_srl); $oModuleController = ModuleController::getInstance();
$moduleInfo = ModuleModel::getModuleInfoByMid($node['url'], $menuInfo->site_srl);
if($moduleInfo->module_srl) if($moduleInfo->module_srl)
{ {
$output = $oModuleController->onlyDeleteModule($moduleInfo->module_srl); $output = $oModuleController->onlyDeleteModule($moduleInfo->module_srl);
@ -1037,9 +1039,9 @@ class menuAdminController extends menu
return new BaseObject(0, 'success'); return new BaseObject(0, 'success');
} }
private function _recursiveDeleteMenuItem(&$oDB, &$menuInfo, $node) private function _recursiveDeleteMenuItem(&$oDB, &$menuInfo, $node, $delete_module = false)
{ {
$output = $this->_deleteMenuItem($oDB, $menuInfo, $node); $output = $this->_deleteMenuItem($oDB, $menuInfo, $node, $delete_module);
if(!$output->toBool()) if(!$output->toBool())
{ {
throw new Rhymix\Framework\Exception($output->message); throw new Rhymix\Framework\Exception($output->message);
@ -1049,7 +1051,7 @@ class menuAdminController extends menu
{ {
foreach($node['list'] AS $key=>$value) foreach($node['list'] AS $key=>$value)
{ {
$this->_recursiveDeleteMenuItem($oDB, $menuInfo, $value); $this->_recursiveDeleteMenuItem($oDB, $menuInfo, $value, $delete_module);
} }
} }
} }
@ -1136,6 +1138,7 @@ class menuAdminController extends menu
{ {
if(is_array($node)) if(is_array($node))
{ {
$oModuleController = ModuleController::getInstance();
foreach($node AS $key=>$node) foreach($node AS $key=>$node)
{ {
$args = new stdClass(); $args = new stdClass();
@ -1146,12 +1149,10 @@ class menuAdminController extends menu
//module's menu_srl move also //module's menu_srl move also
if($node['is_shortcut'] == 'N' && !empty($node['url'])) if($node['is_shortcut'] == 'N' && !empty($node['url']))
{ {
$oModuleModel = getModel('module'); $moduleInfo = ModuleModel::getModuleInfoByMid($node['url']);
$moduleInfo = $oModuleModel->getModuleInfoByMid($node['url']);
if($menu_srl != $moduleInfo->menu_srl) if($menu_srl != $moduleInfo->menu_srl)
{ {
$moduleInfo->menu_srl = $menu_srl; $moduleInfo->menu_srl = $menu_srl;
$oModuleController = getController('module');
$output = $oModuleController->updateModule($moduleInfo); $output = $oModuleController->updateModule($moduleInfo);
} }
} }
@ -1493,12 +1494,11 @@ class menuAdminController extends menu
//module's menu_srl move also //module's menu_srl move also
if($isShortcut == 'N' && !empty($url)) if($isShortcut == 'N' && !empty($url))
{ {
$oModuleModel = getModel('module'); $moduleInfo = ModuleModel::getModuleInfoByMid($url);
$moduleInfo = $oModuleModel->getModuleInfoByMid($url);
if($menu_srl != $moduleInfo->menu_srl) if($menu_srl != $moduleInfo->menu_srl)
{ {
$moduleInfo->menu_srl = $menu_srl; $moduleInfo->menu_srl = $menu_srl;
$oModuleController = getController('module'); $oModuleController = ModuleController::getInstance();
$output = $oModuleController->updateModule($moduleInfo); $output = $oModuleController->updateModule($moduleInfo);
} }