모듈 설정 부분을 효율적으로 개선

서드파티에서 getModulePartConfig() 사용시 Creating default object from empty value 문제가 발생되지 않도록 수정
This commit is contained in:
conory 2017-09-02 21:52:52 +09:00
parent 2440058557
commit 22b16ecc73
2 changed files with 51 additions and 42 deletions

View file

@ -178,29 +178,20 @@ class moduleController extends module
function updateModuleConfig($module, $config, $site_srl = 0)
{
$args = new stdClass();
$args->module = $module;
$args->site_srl = $site_srl;
$oModuleModel = getModel('module');
$origin_config = $oModuleModel->getModuleConfig($module, $site_srl);
if(!$origin_config) $origin_config = new stdClass;
$origin_config = getModel('module')->getModuleConfig($module, $site_srl);
foreach($config as $key => $val)
{
$origin_config->{$key} = $val;
}
return $this->insertModuleConfig($module, $origin_config, $site_srl);
}
function updateModulePartConfig($module, $module_srl, $config)
{
$oModuleModel = getModel('module');
$origin_config = $oModuleModel->getModulePartConfig($module, $module_srl);
$origin_config = getModel('module')->getModulePartConfig($module, $module_srl);
if(!$origin_config) $origin_config = new stdClass;
foreach($config as $key => $val)
{
$origin_config->{$key} = $val;

View file

@ -1398,26 +1398,32 @@ class moduleModel extends module
*/
function getModuleConfig($module, $site_srl = 0)
{
$config = Rhymix\Framework\Cache::get('site_and_module:module_config:' . $module . '_' . $site_srl);
if($config === null)
if(!isset($GLOBALS['__ModuleConfig__'][$site_srl][$module]))
{
if(!$GLOBALS['__ModuleConfig__'][$site_srl][$module])
$config = Rhymix\Framework\Cache::get('site_and_module:module_config:' . $module . '_' . $site_srl);
if($config === null)
{
$args = new stdClass();
$args = new stdClass;
$args->module = $module;
$args->site_srl = $site_srl;
$output = executeQuery('module.getModuleConfig', $args);
if($output->data->config) $config = unserialize($output->data->config);
else $config = new stdClass;
//insert in cache
// Only object type
if($config = executeQuery('module.getModuleConfig', $args)->data->config)
{
$config = unserialize($config);
}
else
{
$config = new stdClass;
}
// Set cache
Rhymix\Framework\Cache::set('site_and_module:module_config:' . $module . '_' . $site_srl, $config, 0, true);
$GLOBALS['__ModuleConfig__'][$site_srl][$module] = $config;
}
return $GLOBALS['__ModuleConfig__'][$site_srl][$module];
$GLOBALS['__ModuleConfig__'][$site_srl][$module] = $config;
}
return $config;
return $GLOBALS['__ModuleConfig__'][$site_srl][$module];
}
/**
@ -1426,26 +1432,32 @@ class moduleModel extends module
*/
function getModulePartConfig($module, $module_srl)
{
$config = Rhymix\Framework\Cache::get('site_and_module:module_part_config:' . $module . '_' . $module_srl);
if($config === null)
if(!isset($GLOBALS['__ModulePartConfig__'][$module][$module_srl]))
{
if(!isset($GLOBALS['__ModulePartConfig__'][$module][$module_srl]))
$config = Rhymix\Framework\Cache::get('site_and_module:module_part_config:' . $module . '_' . $module_srl);
if($config === null)
{
$args = new stdClass();
$args = new stdClass;
$args->module = $module;
$args->module_srl = $module_srl;
$output = executeQuery('module.getModulePartConfig', $args);
if($output->data->config) $config = unserialize($output->data->config);
else $config = null;
//insert in cache
Rhymix\Framework\Cache::set('site_and_module:module_part_config:' . $module . '_' . $module_srl, $config === null ? 0 : $config, 0, true);
$GLOBALS['__ModulePartConfig__'][$module][$module_srl] = $config;
// Object or Array(compatibility) type
if($config = executeQuery('module.getModulePartConfig', $args)->data->config)
{
$config = unserialize($config);
}
else
{
$config = new ArrayObject;
}
// Set cache
Rhymix\Framework\Cache::set('site_and_module:module_part_config:' . $module . '_' . $module_srl, $config, 0, true);
}
return $GLOBALS['__ModulePartConfig__'][$module][$module_srl];
$GLOBALS['__ModulePartConfig__'][$module][$module_srl] = $config;
}
return $config === 0 ? null : $config;
return $GLOBALS['__ModulePartConfig__'][$module][$module_srl];
}
/**
@ -1457,12 +1469,18 @@ class moduleModel extends module
$args->module = $module;
if($site_srl) $args->site_srl = $site_srl;
$output = executeQueryArray('module.getModulePartConfigs', $args);
if(!$output->toBool() || !$output->data) return array();
if(!$output->toBool() || !$output->data)
{
return array();
}
$result = array();
foreach($output->data as $key => $val)
{
$result[$val->module_srl] = unserialize($val->config);
}
return $result;
}