public function testSetGetVars() { $this->assertSame(Context::get('var1'), null); Context::set('var1', 'val1'); $this->assertSame(Context::get('var1'), 'val1'); Context::set('var2', 'val2'); $this->assertSame(Context::get('var2'), 'val2'); Context::set('var3', 'val3'); $data = new stdClass(); $data->var1 = 'val1'; $data->var2 = 'val2'; $this->assertEquals(Context::gets('var1', 'var2'), $data); $data->var3 = 'val3'; $this->assertEquals(Context::getAll(), $data); }
/** * @brief Copy Module **/ function procModuleAdminCopyModule() { // Get information of the target module to copy $module_srl = Context::get('module_srl'); if (!$module_srl) { return; } // Get module name to create and browser title $clones = array(); $args = Context::getAll(); for ($i = 1; $i <= 10; $i++) { $mid = trim($args->{"mid_" . $i}); if (!$mid) { continue; } if (!preg_match("/^[a-zA-Z]([a-zA-Z0-9_]*)\$/i", $mid)) { return new Object(-1, 'msg_limit_mid'); } $browser_title = $args->{"browser_title_" . $i}; if (!$mid) { continue; } if ($mid && !$browser_title) { $browser_title = $mid; } $clones[$mid] = $browser_title; } if (!count($clones)) { return; } $oModuleModel =& getModel('module'); $oModuleController =& getController('module'); // Get module information $columnList = array('module', 'module_category_srl', 'layout_srl', 'use_mobile', 'mlayout_srl', 'menu_srl', 'site_srl', 'skin', 'mskin', 'description', 'mcontent', 'open_rss', 'header_text', 'footer_text', 'regdate'); $module_info = $oModuleModel->getModuleInfoByModuleSrl($module_srl, $columnList); // Get permission information $module_args->module_srl = $module_srl; $output = executeQueryArray('module.getModuleGrants', $module_args); $grant = array(); if ($output->data) { foreach ($output->data as $key => $val) { $grant[$val->name][] = $val->group_srl; } } // get Extra Vars $extra_args->module_srl = $module_srl; $extra_output = executeQueryArray('module.getModuleExtraVars', $extra_args); if ($extra_output->toBool() && is_array($extra_output->data)) { foreach ($extra_output->data as $info) { $extra_vars->{$info->name} = $info->value; } } $oDB =& DB::getInstance(); $oDB->begin(); // Copy a module $triggerObj->originModuleSrl = $module_srl; $triggerObj->moduleSrlList = array(); foreach ($clones as $mid => $browser_title) { $clone_args = null; $clone_args = clone $module_info; $clone_args->module_srl = null; $clone_args->content = null; $clone_args->mid = $mid; $clone_args->browser_title = $browser_title; $clone_args->is_default = 'N'; // Create a module $output = $oModuleController->insertModule($clone_args); $module_srl = $output->get('module_srl'); if ($module_info->module == 'page' && $extra_vars->page_type == 'ARTICLE') { // copy document $oDocumentAdminController =& getAdminController('document'); $copyOutput = $oDocumentAdminController->copyDocumentModule(array($extra_vars->document_srl), $module_srl, $module_info->category_srl); $document_srls = $copyOutput->get('copied_srls'); if ($document_srls && count($document_srls) > 0) { $extra_vars->document_srl = array_pop($document_srls); } } // Grant module permissions if (count($grant)) { $oModuleController->insertModuleGrants($module_srl, $grant); } if ($extra_vars) { $oModuleController->insertModuleExtraVars($module_srl, $extra_vars); } array_push($triggerObj->moduleSrlList, $module_srl); } $output = ModuleHandler::triggerCall('module.procModuleAdminCopyModule', 'after', $triggerObj); $oDB->commit(); $this->setMessage('success_registed'); if (!in_array(Context::getRequestMethod(), array('XMLRPC', 'JSON'))) { global $lang; htmlHeader(); alertScript($lang->success_registed); reload(true); closePopupScript(); htmlFooter(); Context::close(); exit; } }
/** * @brief 모듈 복사 **/ function procModuleAdminCopyModule() { // 복사하려는 대상 모듈의 정보를 구함 $module_srl = Context::get('module_srl'); if (!$module_srl) { return; } // 새로 생성하려는 모듈들의 이름/브라우저 제목을 구함 $clones = array(); $args = Context::getAll(); for ($i = 1; $i <= 10; $i++) { $mid = trim($args->{"mid_" . $i}); if (!$mid) { continue; } if (!preg_match("/^[a-zA-Z]([a-zA-Z0-9_]*)\$/i", $mid)) { return new Object(-1, 'msg_limit_mid'); } $browser_title = $args->{"browser_title_" . $i}; if (!$mid) { continue; } if ($mid && !$browser_title) { $browser_title = $mid; } $clones[$mid] = $browser_title; } if (!count($clones)) { return; } $oModuleModel =& getModel('module'); $oModuleController =& getController('module'); // 모듈 정보 가져옴 $module_info = $oModuleModel->getModuleInfoByModuleSrl($module_srl); // 권한 정보 가져옴 $module_args->module_srl = $module_srl; $output = executeQueryArray('module.getModuleGrants', $module_args); $grant = array(); if ($output->data) { foreach ($output->data as $key => $val) { $grant[$val->name][] = $val->group_srl; } } $oDB =& DB::getInstance(); $oDB->begin(); // 모듈 복사 foreach ($clones as $mid => $browser_title) { $clone_args = null; $clone_args = clone $module_info; $clone_args->module_srl = null; $clone_args->content = null; $clone_args->mid = $mid; $clone_args->browser_title = $browser_title; $clone_args->is_default = 'N'; // 모듈 생성 $output = $oModuleController->insertModule($clone_args); $module_srl = $output->get('module_srl'); // 권한 정보 등록 if (count($grant)) { $oModuleController->insertModuleGrants($module_srl, $grant); } } $oDB->commit(); $this->setMessage('success_registed'); }