/** * @brief insert borad module **/ function procBoardAdminInsertBoard($args = null) { // igenerate module model/controller object $oModuleController = getController('module'); $oModuleModel = getModel('module'); // setup the board module infortmation $args = Context::getRequestVars(); $args->module = 'board'; $args->mid = $args->board_name; if (is_array($args->use_status)) { $args->use_status = implode('|@|', $args->use_status); } unset($args->board_name); // setup extra_order_target $extra_order_target = array(); if ($args->module_srl) { $oDocumentModel = getModel('document'); $module_extra_vars = $oDocumentModel->getExtraKeys($args->module_srl); foreach ($module_extra_vars as $oExtraItem) { $extra_order_target[$oExtraItem->eid] = $oExtraItem->name; } } // setup other variables if ($args->except_notice != 'Y') { $args->except_notice = 'N'; } if ($args->use_anonymous != 'Y') { $args->use_anonymous = 'N'; } if ($args->consultation != 'Y') { $args->consultation = 'N'; } if ($args->protect_content != 'Y') { $args->protect_content = 'N'; } if (!in_array($args->order_target, $this->order_target) && !in_array($args->order_target, $extra_order_target)) { $args->order_target = 'list_order'; } if (!in_array($args->order_type, array('asc', 'desc'))) { $args->order_type = 'asc'; } // if there is an existed module if ($args->module_srl) { $module_info = $oModuleModel->getModuleInfoByModuleSrl($args->module_srl); if ($module_info->module_srl != $args->module_srl) { unset($args->module_srl); } } // insert/update the board module based on module_srl if (!$args->module_srl) { $args->hide_category = 'N'; $output = $oModuleController->insertModule($args); $msg_code = 'success_registed'; } else { $args->hide_category = $module_info->hide_category; $output = $oModuleController->updateModule($args); $msg_code = 'success_updated'; } if (!$output->toBool()) { return $output; } // setup list config $list = explode(',', Context::get('list')); if (count($list)) { $list_arr = array(); foreach ($list as $val) { $val = trim($val); if (!$val) { continue; } if (substr($val, 0, 10) == 'extra_vars') { $val = substr($val, 10); } $list_arr[] = $val; } $oModuleController = getController('module'); $oModuleController->insertModulePartConfig('board', $output->get('module_srl'), $list_arr); } $this->setMessage($msg_code); if (Context::get('success_return_url')) { changeValueInUrl('mid', $args->mid, $module_info->mid); $this->setRedirectUrl(Context::get('success_return_url')); } else { $this->setRedirectUrl(getNotEncodedUrl('', 'module', 'admin', 'act', 'dispBoardAdminBoardInfo', 'module_srl', $output->get('module_srl'))); } }
/** * @brief Modify module information */ function updateModule($args) { if (isset($args->isMenuCreate)) { $isMenuCreate = $args->isMenuCreate; } else { $isMenuCreate = TRUE; } $output = $this->arrangeModuleInfo($args, $extra_vars); if (!$output->toBool()) { return $output; } // begin transaction $oDB =& DB::getInstance(); $oDB->begin(); $oModuleModel = getModel('module'); $columnList = array('module_srl', 'site_srl', 'browser_title', 'mid'); $module_info = $oModuleModel->getModuleInfoByModuleSrl($args->module_srl); if (!$args->site_srl || !$args->browser_title) { if (!$args->site_srl) { $args->site_srl = (int) $module_info->site_srl; } if (!$args->browser_title) { $args->browser_title = $module_info->browser_title; } } $args->browser_title = strip_tags($args->browser_title); $output = executeQuery('module.isExistsModuleName', $args); if (!$output->toBool() || $output->data->count) { $oDB->rollback(); return new Object(-1, 'msg_module_name_exists'); } // default value if ($args->skin == '/USE_DEFAULT/') { $args->is_skin_fix = 'N'; } else { if (isset($args->is_skin_fix)) { $args->is_skin_fix = $args->is_skin_fix != 'Y' ? 'N' : 'Y'; } else { $args->is_skin_fix = 'Y'; } } if ($args->mskin == '/USE_DEFAULT/') { $args->is_mskin_fix = 'N'; } else { if (isset($args->is_mskin_fix)) { $args->is_mskin_fix = $args->is_mskin_fix != 'Y' ? 'N' : 'Y'; } else { $args->is_mskin_fix = 'Y'; } } $output = executeQuery('module.updateModule', $args); if (!$output->toBool()) { $oDB->rollback(); return $output; } if ($isMenuCreate === TRUE) { $menuArgs = new stdClass(); $menuArgs->url = $module_info->mid; $menuArgs->site_srl = $module_info->site_srl; $menuOutput = executeQueryArray('menu.getMenuItemByUrl', $menuArgs); if ($menuOutput->data && count($menuOutput->data)) { $oMenuAdminController = getAdminController('menu'); foreach ($menuOutput->data as $itemInfo) { $itemInfo->url = $args->mid; $updateMenuItemOutput = $oMenuAdminController->updateMenuItem($itemInfo); if (!$updateMenuItemOutput->toBool()) { $oDB->rollback(); return $updateMenuItemOutput; } } } } // if mid changed, change mid of success_return_url to new mid if ($module_info->mid != $args->mid && Context::get('success_return_url')) { changeValueInUrl('mid', $args->mid, $module_info->mid); } // Insert module extra vars $this->insertModuleExtraVars($args->module_srl, $extra_vars); $oDB->commit(); $output->add('module_srl', $args->module_srl); //remove from cache Rhymix\Framework\Cache::clearGroup('site_and_module'); return $output; }