*/ /** * @class moduleAdminModel * @author NAVER (developers@xpressengine.com) * @version 0.1 * @brief AdminModel class of the "module" module */ class ModuleAdminModel extends Module { /** * @brief Initialization */ function init() { } /** * @brief Return a list of target modules by using module_srls separated by comma(,) * Used in the ModuleSelector */ function getModuleAdminModuleList() { $oModuleModel = getModel('module'); $args = new stdClass; $args->module_srls = Context::get('module_srls'); $output = executeQueryArray('module.getModulesInfo', $args); if(!$output->toBool() || !$output->data) return new BaseObject(); foreach($output->data as $key => $val) { $info_xml = $oModuleModel->getModuleInfoXml($val->module); $list[$val->module_srl] = array( 'module_srl' => $val->module_srl, 'mid' => $val->mid, 'browser_title' => Context::replaceUserLang($val->browser_title), 'module_name' => $info_xml->title, ); } $modules = explode(',',$args->module_srls); $module_list = []; foreach ($modules as $module_srl) { $module_list[$module_srl] = $list[$module_srl]; } $this->add('id', Context::get('id')); $this->add('module_list', $module_list); } function getModuleMidList($args) { $args->list_count = 20; $args->page_count = 10; $output = executeQueryArray('module.getModuleMidList', $args); if(!$output->toBool()) return $output; ModuleModel::syncModuleToSite($output->data); return $output; } function getSelectedManageHTML($grantList, $tabChoice = array(), $modulePath = NULL) { if($modulePath) { // get the skins path $oModuleModel = getModel('module'); $skin_list = $oModuleModel->getSkins($modulePath); Context::set('skin_list',$skin_list); $mskin_list = $oModuleModel->getSkins($modulePath, "m.skins"); Context::set('mskin_list', $mskin_list); } // get the layouts path $oLayoutModel = getModel('layout'); $layout_list = $oLayoutModel->getLayoutList(); Context::set('layout_list', $layout_list); $mobile_layout_list = $oLayoutModel->getLayoutList(0,"M"); Context::set('mlayout_list', $mobile_layout_list); $security = new Security(); $security->encodeHTML('layout_list..layout', 'layout_list..title'); $security->encodeHTML('mlayout_list..layout', 'mlayout_list..title'); $security->encodeHTML('skin_list..title'); $security->encodeHTML('mskin_list..title'); $grant_list =new stdClass(); // Grant virtual permission for access and manager if(!$grantList) { $grantList =new stdClass(); } $grantList->access = new stdClass(); $grantList->access->title = lang('grant_access'); $grantList->access->default = 'guest'; if(countobj($grantList)) { foreach($grantList as $key => $val) { if(!$val->default) $val->default = 'guest'; if($val->default == 'root') $val->default = 'manager'; $grant_list->{$key} = $val; } } $grant_list->manager = new stdClass(); $grant_list->manager->title = lang('grant_manager'); $grant_list->manager->default = 'manager'; Context::set('grant_list', $grant_list); // Get a list of groups $oMemberModel = getModel('member'); $group_list = $oMemberModel->getGroups(0); Context::set('group_list', $group_list); Context::set('module_srls', 'dummy'); $content = ''; // Call a trigger for additional settings // Considering uses in the other modules, trigger name cen be publicly used ModuleHandler::triggerCall('module.dispAdditionSetup', 'before', $content); ModuleHandler::triggerCall('module.dispAdditionSetup', 'after', $content); Context::set('setup_content', $content); if(count($tabChoice) == 0) { $tabChoice = array('tab1'=>1, 'tab2'=>1, 'tab3'=>1); } Context::set('tabChoice', $tabChoice); // Get information of module_grants $oTemplate = TemplateHandler::getInstance(); return $oTemplate->compile($this->module_path.'tpl', 'include.manage_selected.html'); } /** * @brief Common:: module's permission displaying page in the module * Available when using module instance in all the modules */ function getModuleGrantHTML($module_srl, $source_grant_list) { if(!$module_srl) { return; } // get member module's config $oMemberModel = getModel('member'); $member_config = $oMemberModel->getMemberConfig(); Context::set('member_config', $member_config); $oModuleModel = getModel('module'); $columnList = array('module_srl'); $module_info = $oModuleModel->getModuleInfoByModuleSrl($module_srl, $columnList); // Grant virtual permission for access and manager $grant_list = new stdClass(); $grant_list->access = new stdClass(); $grant_list->access->title = lang('grant_access'); $grant_list->access->default = 'guest'; if($source_grant_list) { foreach($source_grant_list as $key => $val) { if(!$val->default) $val->default = 'guest'; if($val->default == 'root') $val->default = 'manager'; $grant_list->{$key} = $val; } } $grant_list->manager = new stdClass(); $grant_list->manager->title = lang('grant_manager'); $grant_list->manager->default = 'manager'; Context::set('grant_list', $grant_list); // Get a permission group granted to the current module $selected_group = array(); $default_grant = array(); $args = new stdClass(); $args->module_srl = $module_srl; $output = executeQueryArray('module.getModuleGrants', $args); if($output->data) { foreach($output->data as $val) { if($val->group_srl == 0) $default_grant[$val->name] = 'all'; else if($val->group_srl == -1) $default_grant[$val->name] = 'member'; else if($val->group_srl == -2) $default_grant[$val->name] = 'member'; else if($val->group_srl == -4) $default_grant[$val->name] = 'not_member'; else if($val->group_srl == -3) $default_grant[$val->name] = 'manager'; else { $selected_group[$val->name][] = $val->group_srl; $default_grant[$val->name] = 'group'; } } } Context::set('selected_group', $selected_group); Context::set('default_grant', $default_grant); Context::set('module_srl', $module_srl); // Extract admin ID set in the current module $admin_member = ModuleModel::getAdminId($module_srl) ?: []; Context::set('admin_member', $admin_member); // Get defined scopes Context::set('manager_scopes', $this->getModuleAdminScopes()); // Get a list of groups $group_list = MemberModel::getGroups(); Context::set('group_list', $group_list); //Security $security = new Security(); $security->encodeHTML('group_list..title'); $security->encodeHTML('group_list..description'); $security->encodeHTML('admin_member..nick_name'); // Get information of module_grants $oTemplate = TemplateHandler::getInstance(); return $oTemplate->compile($this->module_path.'tpl', 'module_grants'); } public function getModuleAdminGrant() { $targetModule = Context::get('target_module'); $moduleSrl = Context::get('module_srl'); if(!$targetModule || !$moduleSrl) { return new BaseObject(-1, 'msg_invalid_request'); } if($targetModule == '_SHORTCUT') { return new BaseObject(); } $xmlInfo = ModuleModel::getModuleActionXml($targetModule); // Grant virtual permission for access and manager $grantList = new stdClass(); $grantList->access = new stdClass(); $grantList->access->title = lang('grant_access'); $grantList->access->default = 'guest'; if($xmlInfo->grant) { foreach($xmlInfo->grant as $key => $val) { if(!$val->default) $val->default = 'guest'; if($val->default == 'root') $val->default = 'manager'; $grantList->{$key} = $val; } } $grantList->manager = new stdClass(); $grantList->manager->title = lang('grant_manager'); $grantList->manager->default = 'manager'; // Get a permission group granted to the current module $selectedGroup = new stdClass(); $defaultGrant = new stdClass(); $args = new stdClass(); $args->module_srl = $moduleSrl; $output = executeQueryArray('module.getModuleGrants', $args); if($output->data) { foreach($output->data as $val) { if($val->group_srl == 0) $defaultGrant->{$val->name} = 'all'; else if($val->group_srl == -1) $defaultGrant->{$val->name} = 'member'; else if($val->group_srl == -2) $defaultGrant->{$val->name} = 'member'; else if($val->group_srl == -4) $defaultGrant->{$val->name} = 'not_member'; else if($val->group_srl == -3) $defaultGrant->{$val->name} = 'manager'; else { $selectedGroup->{$val->name}[] = $val->group_srl; $defaultGrant->{$val->name} = 'group'; } } } if(is_object($grantList)) { foreach($grantList AS $key=>$value) { if(isset($defaultGrant->{$key})) { $grantList->{$key}->grant = $defaultGrant->{$key}; } if(isset($selectedGroup->{$key})) { $grantList->{$key}->group_srls = $selectedGroup->{$key}; } } } $this->add('grantList', $grantList); } /** * Get defined scopes of module admin. * * @return array */ public function getModuleAdminScopes(): array { $obj = new \stdClass; $obj->scopes = lang('module.admin_scopes')->getArrayCopy(); ModuleHandler::triggerCall('module.getModuleAdminScopes', 'after', $obj); return $obj->scopes; } /** * @brief Common:: skin setting page for the module */ function getModuleSkinHTML($module_srl) { return $this->_getModuleSkinHTML($module_srl, 'P'); } /** * Common:: skin setting page for the module (mobile) * * @param $module_srl sequence of module * @return string The html code */ function getModuleMobileSkinHTML($module_srl) { return $this->_getModuleSkinHtml($module_srl, 'M'); } /** * Skin setting page for the module * * @param $module_srl sequence of module * @param $mode P or M * @return string The HTML code */ function _getModuleSkinHTML($module_srl, $mode) { $mode = $mode === 'P' ? 'P' : 'M'; $oModuleModel = getModel('module'); $module_info = ModuleModel::getModuleInfoByModuleSrl($module_srl); if(!$module_info) return; if($mode === 'P') { if($module_info->is_skin_fix == 'N') { $skin = ModuleModel::getModuleDefaultSkin($module_info->module, 'P'); } else { $skin = $module_info->skin; } } else { if($module_info->is_mskin_fix == 'N') { $skin_type = $module_info->mskin === '/USE_RESPONSIVE/' ? 'P' : 'M'; $skin = ModuleModel::getModuleDefaultSkin($module_info->module, $skin_type); } else { $skin = $module_info->mskin; } } $module_path = './modules/'.$module_info->module; // Get XML information of the skin and skin sinformation set in DB if($mode === 'P') { $skin_info = $oModuleModel->loadSkinInfo($module_path, $skin); $skin_vars = $oModuleModel->getModuleSkinVars($module_srl); } else { $skin_info = $oModuleModel->loadSkinInfo($module_path, $skin, 'm.skins'); $skin_vars = $oModuleModel->getModuleMobileSkinVars($module_srl); } if($skin_info && $skin_info->extra_vars) { foreach($skin_info->extra_vars as $key => $val) { $group = $val->group; $name = $val->name; $type = $val->type; if (isset($skin_vars[$name]) && $skin_vars[$name]) { $value = $skin_vars[$name]->value; } else { $value = ''; } if ($type === 'checkbox') { $value = $value ? unserialize($value) : []; } $value = empty($value) ? $val->default : $value; $skin_info->extra_vars[$key]->value= $value; } } Context::set('module_info', $module_info); Context::set('mid', $module_info->mid); Context::set('skin_info', $skin_info); Context::set('skin_vars', $skin_vars); Context::set('mode', $mode); //Security $security = new Security(); $security->encodeHTML('mid'); $security->encodeHTML('module_info.browser_title'); $security->encodeHTML('skin_info...'); $oTemplate = TemplateHandler::getInstance(); return $oTemplate->compile($this->module_path.'tpl', 'skin_config'); } /** * @brief Get values for a particular language code * Return its corresponding value if lang_code is specified. Otherwise return $name. */ function getLangCode($site_srl, $name, $isFullLanguage = FALSE) { if($isFullLanguage) { $lang_supported = Context::loadLangSupported(); } else { $lang_supported = Context::get('lang_supported'); } if(substr($name,0,12)=='$user_lang->') { $args = new stdClass(); $args->name = substr($name,12); $output = executeQueryArray('module.getLang', $args); if($output->data) { foreach($output->data as $key => $val) { $selected_lang[$val->lang_code] = $val->value; } } } /* else { $tmp = unserialize($name); if($tmp) { $selected_lang = array(); $rand_name = $tmp[Context::getLangType()]; if(!$rand_name) $rand_name = array_shift($tmp); if(is_array($lang_supported)) { foreach($lang_supported as $key => $val) $selected_lang[$key] = $tmp[$key]?$tmp[$key]:$rand_name; } } } */ $output = array(); if(is_array($lang_supported)) { foreach($lang_supported as $key => $val) { $output[$key] = (isset($selected_lang[$key]) && $selected_lang[$key]) ? $selected_lang[$key] : $name; } } return $output; } /** * @brief Return if the module language in ajax is requested */ function getModuleAdminLangCode() { $name = Context::get('name'); if(!$name) return $this->setError('msg_invalid_request'); $this->add('name', $name); $output = $this->getLangCode(0, '$user_lang->'.$name); $this->add('langs', $output); } /** * @brief Returns lang list by lang name */ function getModuleAdminLangListByName() { $args = Context::getRequestVars(); $columnList = array('lang_code', 'name', 'value'); $langList = array(); $args->langName = preg_replace('/^\$user_lang->/', '', $args->lang_name); $output = executeQueryArray('module.getLangListByName', $args, $columnList); if($output->toBool()) $langList = $output->data; $this->add('lang_list', $langList); $this->add('lang_name', $args->langName); } /** * @brief Return lang list */ function getModuleAdminLangListByValue() { $args = Context::getRequestVars(); $langList = array(); // search value $output = executeQueryArray('module.getLangNameByValue', $args); if($output->toBool() && is_array($output->data)) { unset($args->value); foreach($output->data as $data) { $args->langName = $data->name; $columnList = array('lang_code', 'name', 'value'); $outputByName = executeQueryArray('module.getLangListByName', $args, $columnList); if($outputByName->toBool()) { $langList = array_merge($langList, $outputByName->data); } } } $this->add('lang_list', $langList); } /** * @brief Return current lang list */ function getLangListByLangcode($args) { $output = executeQueryArray('module.getLangListByLangcode', $args); if(!$output->toBool()) return array(); return $output; } /** * return multilingual html */ function getModuleAdminMultilingualHtml() { $oTemplate = TemplateHandler::getInstance(); Context::set('use_in_page', false); $tpl = $oTemplate->compile(RX_BASEDIR . 'modules/module/tpl', 'multilingual_v17.html'); $this->add('html', $tpl); } /** * return multilingual list html */ function getModuleAdminLangListHtml() { $site_module_info = Context::get('site_module_info'); $args = new stdClass(); $args->langCode = Context::get('lang_code'); $args->page = Context::get('page'); $args->sort_index = 'name'; $args->order_type = 'asc'; $args->search_keyword = Context::get('search_keyword'); $args->name = Context::get('name'); $args->list_count = Context::get('list_count'); $args->page_count = 5; if(!$args->langCode) { $args->langCode = Context::get('lang_type'); } $output = $this->getLangListByLangcode($args); Context::set('total_count', $output->total_count); Context::set('total_page', $output->total_page); Context::set('page', $output->page); Context::set('lang_code_list', $output->data); Context::set('page_navigation', $output->page_navigation); $oSecurity = new Security(); $oSecurity->encodeHTML('lang_code_list..'); $oTemplate = TemplateHandler::getInstance(); $tpl = $oTemplate->compile(RX_BASEDIR . 'modules/module/tpl', 'multilingual_v17_list.html'); $this->add('html', $tpl); } /** * return module searcher html */ function getModuleAdminModuleSearcherHtml() { Context::loadLang(RX_BASEDIR . 'modules/admin/lang'); $oTemplate = TemplateHandler::getInstance(); $tpl = $oTemplate->compile(RX_BASEDIR . 'modules/module/tpl', 'module_searcher_v17.html'); $this->add('html', $tpl); } /** * return module info. */ function getModuleAdminModuleInfo() { if(Context::get('search_module_srl')) { $module_srl = Context::get('search_module_srl'); } else { $module_srl = Context::get('module_srl'); } $model = getModel('module'); $module_info = $model->getModuleInfoByModuleSrl($module_srl); $this->add('module_info', $module_info); } } /* End of file module.admin.model.php */ /* Location: ./modules/module/module.admin.model.php */