Example #1
0
 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');
 }