From 4f9c80e424f9558a671af4c0e7ba950b936677da Mon Sep 17 00:00:00 2001 From: Kijin Sung Date: Tue, 18 Dec 2018 17:36:12 +0900 Subject: [PATCH] Always use object cache for editor components --- modules/editor/editor.controller.php | 103 ++++++++------------------- modules/editor/editor.model.php | 49 +++---------- 2 files changed, 40 insertions(+), 112 deletions(-) diff --git a/modules/editor/editor.controller.php b/modules/editor/editor.controller.php index 9d3f5af5d..eb61ad157 100644 --- a/modules/editor/editor.controller.php +++ b/modules/editor/editor.controller.php @@ -418,19 +418,12 @@ class editorController extends editor * @brief Caching a list of editor component (editorModel::getComponentList) * For the editor component list, use a caching file because of DB query and Xml parsing */ - function makeCache($filter_enabled = true, $site_srl) + function makeCache($filter_enabled = true) { $oEditorModel = getModel('editor'); $args = new stdClass; - if($filter_enabled) $args->enabled = "Y"; - - if($site_srl) - { - $args->site_srl = $site_srl; - $output = executeQuery('editor.getSiteComponentList', $args); - } - else $output = executeQuery('editor.getComponentList', $args); + $output = executeQuery('editor.getComponentList', $args); $db_list = $output->data; // Get a list of editor component folders @@ -439,18 +432,6 @@ class editorController extends editor return is_dir(RX_BASEDIR . 'modules/editor/components/' . $component_name); }); - // Get information about log-in status and its group - $is_logged = Context::get('is_logged'); - if($is_logged) - { - $logged_info = Context::get('logged_info'); - if($logged_info->group_list && is_array($logged_info->group_list)) - { - $group_list = array_keys($logged_info->group_list); - } - else $group_list = array(); - } - // Get xml information for looping DB list if(!is_array($db_list)) $db_list = array($db_list); $component_list = new stdClass(); @@ -479,28 +460,7 @@ class editorController extends editor { $xml_info->mid_list = $extra_vars->mid_list; } - /* - // Permisshin check if you are granted - if($extra_vars->target_group) { - // Stop using if not logged-in - if(!$is_logged) continue; - // Compare a target group with the current logged-in user group - $target_group = $extra_vars->target_group; - unset($extra_vars->target_group); - - $is_granted = false; - foreach($group_list as $group_srl) { - if(in_array($group_srl, $target_group)) { - $is_granted = true; - break; - } - } - if(!$is_granted) continue; - } - // Check if the target module exists - if($extra_vars->mid_list && count($extra_vars->mid_list) && Context::get('mid')) { - if(!in_array(Context::get('mid'), $extra_vars->mid_list)) continue; - }*/ + // Check the configuration of the editor component if($xml_info->extra_vars) { @@ -512,6 +472,7 @@ class editorController extends editor } $component_list->{$component_name} = $xml_info; + // Get buttons, icons, images $icon_file = RX_BASEDIR . 'modules/editor/components/'.$component_name.'/icon.gif'; $component_icon_file = RX_BASEDIR . 'modules/editor/components/'.$component_name.'/component_icon.gif'; @@ -519,47 +480,41 @@ class editorController extends editor if(file_exists($component_icon_file)) $component_list->{$component_name}->component_icon = true; } - // Return if it checks enabled only - if($filter_enabled) - { - $cache_file = $oEditorModel->getCacheFile($filter_enabled, $site_srl); - $buff = sprintf('', var_export(serialize($component_list), true)); - FileHandler::writeFile($cache_file, $buff); - return $component_list; - } - // Get xml_info of downloaded list - foreach($downloaded_list as $component_name) + if(!$filter_enabled) { - if(in_array($component_name, array('colorpicker_text','colorpicker_bg'))) continue; - // Pass if configured - if($component_list->{$component_name}) continue; - // Insert data into the DB - $oEditorController = getAdminController('editor'); - $oEditorController->insertComponent($component_name, false, $site_srl); - // Add to component_list - unset($xml_info); - $xml_info = $oEditorModel->getComponentXmlInfo($component_name); - $xml_info->enabled = 'N'; - - $component_list->{$component_name} = $xml_info; + foreach($downloaded_list as $component_name) + { + if(in_array($component_name, array('colorpicker_text','colorpicker_bg'))) continue; + if(!is_dir(\RX_BASEDIR.'modules/editor/components/'.$component_name)) continue; + // Pass if configured + if($component_list->{$component_name}) continue; + // Insert data into the DB + $oEditorController = getAdminController('editor'); + $oEditorController->insertComponent($component_name, false, 0); + // Add to component_list + $xml_info = $oEditorModel->getComponentXmlInfo($component_name); + $xml_info->enabled = 'N'; + $component_list->{$component_name} = $xml_info; + } + Rhymix\Framework\Cache::set('editor:components:enabled', $component_list, 0, true); } - - $cache_file = $oEditorModel->getCacheFile($filter_enabled, $site_srl); - $buff = sprintf('', var_export(serialize($component_list), true)); - FileHandler::writeFile($cache_file, $buff); - + else + { + Rhymix\Framework\Cache::set('editor:components:all', $component_list, 0, true); + } + return $component_list; } /** * @brief Delete cache files */ - function removeCache($site_srl = 0) + function removeCache() { - $oEditorModel = getModel('editor'); - FileHandler::removeFile($oEditorModel->getCacheFile(true, $site_srl)); - FileHandler::removeFile($oEditorModel->getCacheFile(false, $site_srl)); + Rhymix\Framework\Storage::deleteDirectory(\RX_BASEDIR . 'files/cache/editor/cache'); + Rhymix\Framework\Cache::delete('editor:components:enabled'); + Rhymix\Framework\Cache::delete('editor:components:all'); } function triggerCopyModule(&$obj) diff --git a/modules/editor/editor.model.php b/modules/editor/editor.model.php index dd312b933..b788a2309 100644 --- a/modules/editor/editor.model.php +++ b/modules/editor/editor.model.php @@ -178,12 +178,11 @@ class editorModel extends editor Context::set('editor_focus', toBool($option->editor_focus)); // Load editor components. - $site_srl = Context::get('site_module_info')->site_srl ?: 0; if($option->enable_component) { if(!Context::get('component_list')) { - $component_list = $this->getComponentList(true, $site_srl); + $component_list = $this->getComponentList(true); Context::set('component_list', $component_list); } } @@ -518,35 +517,19 @@ class editorModel extends editor return FileHandler::readDir('./modules/editor/skins'); } - /** - * @brief Return the cache file name of editor component list - */ - function getCacheFile($filter_enabled= true, $site_srl = 0) - { - $lang = Context::getLangType(); - $cache_path = _XE_PATH_.'files/cache/editor/cache/'; - FileHandler::makeDir($cache_path); - $cache_file = $cache_path . 'component_list.' . $lang .'.'; - if($filter_enabled) $cache_file .= 'filter.'; - if($site_srl) $cache_file .= $site_srl.'.'; - $cache_file .= 'php'; - return $cache_file; - } - /** * @brief Return a component list (DB Information included) */ - function getComponentList($filter_enabled = true, $site_srl=0, $from_db=false) + function getComponentList($filter_enabled = true, $site_srl = 0, $from_db = false) { - $cache_file = $this->getCacheFile(false, $site_srl); - if($from_db || !file_exists($cache_file)) + $cache_key = 'editor:components:' . ($filter_enabled ? 'enabled' : 'all'); + $component_list = $from_db ? null : Rhymix\Framework\Cache::get($cache_key); + if (!$component_list) { $oEditorController = getController('editor'); - $oEditorController->makeCache(false, $site_srl); + $component_list = $oEditorController->makeCache(false); } - if(!file_exists($cache_file)) return; - include($cache_file); $logged_info = Context::get('logged_info'); if($logged_info && is_array($logged_info->group_list)) { @@ -562,10 +545,9 @@ class editorModel extends editor foreach($component_list as $key => $val) { if(!trim($key)) continue; - if(!is_dir(_XE_PATH_.'modules/editor/components/'.$key)) + if(!is_dir(\RX_BASEDIR.'modules/editor/components/'.$key)) { - FileHandler::removeFile($cache_file); - return $this->getComponentList($filter_enabled, $site_srl); + return $this->getComponentList($filter_enabled, 0, true); } if(!$filter_enabled) continue; if($val->enabled == "N") @@ -573,7 +555,7 @@ class editorModel extends editor unset($component_list->{$key}); continue; } - if($logged_info->is_admin == "Y" || $logged_info->is_site_admin == "Y") continue; + if($logged_info->is_admin == "Y") continue; if($val->target_group) { if(!Context::get('is_logged')) @@ -608,20 +590,11 @@ class editorModel extends editor /** * @brief Get xml and db information of the component */ - function getComponent($component_name, $site_srl = 0) + function getComponent($component_name) { $args = new stdClass(); $args->component_name = $component_name; - - if($site_srl) - { - $args->site_srl = $site_srl; - $output = executeQuery('editor.getSiteComponent', $args); - } - else - { - $output = executeQuery('editor.getComponent', $args); - } + $output = executeQuery('editor.getComponent', $args); $component = $output->data; if(!$output->data) return false;