Add ModuleModel::getMidByModuleSrl()

This commit is contained in:
Kijin Sung 2020-10-01 16:29:34 +09:00
parent a02bd88a66
commit 7d6e30f936
2 changed files with 65 additions and 12 deletions

View file

@ -7,6 +7,12 @@
*/ */
class moduleModel extends module class moduleModel extends module
{ {
/**
* Internal cache
*/
public static $_mid_map = [];
public static $_module_srl_map = [];
/** /**
* @brief Initialization * @brief Initialization
*/ */
@ -219,7 +225,7 @@ class moduleModel extends module
$args = new stdClass(); $args = new stdClass();
$args->mid = $mid; $args->mid = $mid;
$module_srl = Rhymix\Framework\Cache::get('site_and_module:module_srl:' . $mid); $module_srl = isset(self::$_mid_map[$mid]) ? self::$_mid_map[$mid] : Rhymix\Framework\Cache::get('site_and_module:module_srl:' . $mid);
if($module_srl) if($module_srl)
{ {
$module_info = Rhymix\Framework\Cache::get('site_and_module:mid_info:' . $module_srl); $module_info = Rhymix\Framework\Cache::get('site_and_module:mid_info:' . $module_srl);
@ -544,26 +550,72 @@ class moduleModel extends module
*/ */
public static function getModuleSrlByMid($mid) public static function getModuleSrlByMid($mid)
{ {
if($mid && !is_array($mid)) $mid = explode(',',$mid); if ($mid && !is_array($mid))
if(is_array($mid)) $mid = "'".implode("','",$mid)."'"; {
$mid = explode(',', $mid);
}
if (count($mid) == 1 && ($first_mid = array_first($mid)) && isset(self::$_mid_map[$first_mid]))
{
return array($first_mid => self::$_mid_map[$first_mid]);
}
$args = new stdClass; $args = new stdClass;
$args->mid = $mid; $args->mid = $mid;
$output = executeQuery('module.getModuleSrlByMid', $args); $output = executeQueryArray('module.getModuleSrlByMid', $args);
if(!$output->toBool()) return $output;
$module_srl_list = [];
$list = $output->data; foreach($output->data as $row)
if(!$list) return;
if(!is_array($list)) $list = array($list);
foreach($list as $key => $val)
{ {
$module_srl_list[] = $val->module_srl; $module_srl_list[$row->mid] = $row->module_srl;
self::$_mid_map[$row->mid] = $row->module_srl;
} }
return $module_srl_list; return $module_srl_list;
} }
/**
* @brief Return mid corresponding to a module_srl list
*/
public static function getMidByModuleSrl($module_srl)
{
if (is_array($module_srl))
{
$result = array();
foreach ($module_srl as $item)
{
$result[intval($item)] = self::getMidByModuleSrl($item);
}
return $result;
}
$module_srl = intval($module_srl);
if (isset(self::$_module_srl_map[$module_srl]))
{
return self::$_module_srl_map[$module_srl];
}
$mid = Rhymix\Framework\Cache::get('site_and_module:module_srl_mid:' . $module_srl);
if (isset($mid))
{
return $mid;
}
$args = new stdClass;
$args->module_srls = $module_srl;
$output = executeQuery('module.getModuleInfoByModuleSrl', $args, ['mid']);
if ($output->data)
{
$mid = self::$_module_srl_map[$module_srl] = $output->data->mid;
Rhymix\Framework\Cache::set('site_and_module:module_srl_mid:' . $module_srl, $mid, 0, true);
return $mid;
}
else
{
return null;
}
}
/** /**
* @brief Get forward value by the value of act * @brief Get forward value by the value of act
*/ */

View file

@ -4,6 +4,7 @@
</tables> </tables>
<columns> <columns>
<column name="module_srl" /> <column name="module_srl" />
<column name="mid" />
</columns> </columns>
<conditions> <conditions>
<condition operation="equal" column="site_srl" var="site_srl" /> <condition operation="equal" column="site_srl" var="site_srl" />