mirror of
https://github.com/Lastorder-DC/rhymix.git
synced 2026-01-03 08:41:39 +09:00
631 lines
17 KiB
PHP
631 lines
17 KiB
PHP
<?php
|
|
/* Copyright (C) NAVER <http://www.navercorp.com> */
|
|
/**
|
|
* @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 */
|