[*] BO : from 300 to 40 queries in Modules tab, does not really speed up the page, but eases my mind

This commit is contained in:
dMetzger
2012-06-12 08:21:58 +00:00
parent b79a020ee9
commit a58837e601
2 changed files with 36 additions and 18 deletions
+32 -13
View File
@@ -287,10 +287,10 @@ abstract class ModuleCore
* @param $module_version * @param $module_version
* @return bool * @return bool
*/ */
public static function initUpgradeModule($module_name, $module_version) public static function initUpgradeModule($module)
{ {
// Init cache upgrade details // Init cache upgrade details
self::$modules_cache[$module_name]['upgrade'] = array( self::$modules_cache[$module->name]['upgrade'] = array(
'success' => false, // bool to know if upgrade succeed or not 'success' => false, // bool to know if upgrade succeed or not
'available_upgrade' => 0, // Number of available module before any upgrade 'available_upgrade' => 0, // Number of available module before any upgrade
'number_upgraded' => 0, // Number of upgrade done 'number_upgraded' => 0, // Number of upgrade done
@@ -302,7 +302,7 @@ abstract class ModuleCore
); );
// Need Upgrade will check and load upgrade file to the moduleCache upgrade case detail // Need Upgrade will check and load upgrade file to the moduleCache upgrade case detail
$ret = Module::isInstalled($module_name) && Module::needUpgrade($module_name, $module_version); $ret = $module->installed && Module::needUpgrade($module);
return $ret; return $ret;
} }
@@ -378,17 +378,13 @@ abstract class ModuleCore
* @param $module_version * @param $module_version
* @return bool * @return bool
*/ */
public static function needUpgrade($module_name, $module_version) public static function needUpgrade($module)
{ {
$registered_version = Db::getInstance()->getValue(' self::$modules_cache[$module->name]['upgrade']['upgraded_from'] = $module->database_version;
SELECT m.`version` FROM `'._DB_PREFIX_.'module` m Tools::alignVersionNumber($module->version, $module->database_version);
WHERE m.`name` = \''.bqSQL($module_name).'\'');
self::$modules_cache[$module_name]['upgrade']['upgraded_from'] = $registered_version;
Tools::alignVersionNumber($module_version, $registered_version);
// Check the version of the module with the registered one and look if any upgrade file exist // Check the version of the module with the registered one and look if any upgrade file exist
return version_compare($module_version, $registered_version, '>') return version_compare($module->version, $module->database_version, '>')
&& Module::loadUpgradeVersionList($module_name, $module_version, $registered_version); && Module::loadUpgradeVersionList($module->name, $module->version, $module->database_version);
} }
/** /**
@@ -918,7 +914,7 @@ abstract class ModuleCore
* @param boolean $useConfig in order to use config.xml file in module dir * @param boolean $useConfig in order to use config.xml file in module dir
* @return array Modules * @return array Modules
*/ */
public static function getModulesOnDisk($useConfig = false, $loggedOnAddons = false) public static function getModulesOnDisk($useConfig = false, $loggedOnAddons = false, $id_employee = false)
{ {
global $_MODULES; global $_MODULES;
@@ -932,6 +928,14 @@ abstract class ModuleCore
$modules_dir = Module::getModulesDirOnDisk(); $modules_dir = Module::getModulesDirOnDisk();
$memory_limit = Tools::getMemoryLimit(); $memory_limit = Tools::getMemoryLimit();
$modules_installed = array();
$result = Db::getInstance()->executeS('
SELECT name, version, interest
FROM `'._DB_PREFIX_.'module`
LEFT JOIN `'._DB_PREFIX_.'module_preference` ON (`module` = `name` AND `id_employee` = '.(int)$id_employee.')');
foreach ($result as $row)
$modules_installed[$row['name']] = $row;
foreach ($modules_dir as $module) foreach ($modules_dir as $module)
{ {
// Memory usage checking // Memory usage checking
@@ -986,6 +990,7 @@ abstract class ModuleCore
$item->confirmUninstall = Translate::getModuleTranslation($xml_module->name, Module::configXmlStringFormat($xml_module->confirmUninstall), (string)$xml_module->name); $item->confirmUninstall = Translate::getModuleTranslation($xml_module->name, Module::configXmlStringFormat($xml_module->confirmUninstall), (string)$xml_module->name);
$item->active = 0; $item->active = 0;
$module_list[] = $item; $module_list[] = $item;
$module_name_list[] = '\''.pSQL($item->name).'\''; $module_name_list[] = '\''.pSQL($item->name).'\'';
$modulesNameToCursor[strval($item->name)] = $item; $modulesNameToCursor[strval($item->name)] = $item;
@@ -1122,6 +1127,20 @@ abstract class ModuleCore
} }
} }
foreach ($module_list as &$module)
if (isset($modules_installed[$module->name]))
{
$module->installed = true;
$module->database_version = $modules_installed[$module->name]['version'];
$module->interest = $modules_installed[$module->name]['interest'];
}
else
{
$module->installed = false;
$module->database_version = 0;
$module->interest = 0;
}
usort($module_list, create_function('$a,$b', ' usort($module_list, create_function('$a,$b', '
if ($a->displayName == $b->displayName) if ($a->displayName == $b->displayName)
return 0; return 0;
+2 -3
View File
@@ -1028,7 +1028,6 @@ class AdminModulesControllerCore extends AdminController
foreach ($this->list_modules_categories as $k => $v) foreach ($this->list_modules_categories as $k => $v)
$this->list_modules_categories[$k]['nb'] = 0; $this->list_modules_categories[$k]['nb'] = 0;
// Retrieve Modules Preferences // Retrieve Modules Preferences
$modules_preferences = ''; $modules_preferences = '';
$modules_preferences_tmp = Db::getInstance()->executeS('SELECT * FROM `'._DB_PREFIX_.'module_preference` WHERE `id_employee` = '.(int)$this->id_employee); $modules_preferences_tmp = Db::getInstance()->executeS('SELECT * FROM `'._DB_PREFIX_.'module_preference` WHERE `id_employee` = '.(int)$this->id_employee);
@@ -1042,7 +1041,7 @@ class AdminModulesControllerCore extends AdminController
} }
// Retrieve Modules List // Retrieve Modules List
$modules = Module::getModulesOnDisk(true, $this->logged_on_addons); $modules = Module::getModulesOnDisk(true, $this->logged_on_addons, $this->id_employee);
$this->initModulesList($modules); $this->initModulesList($modules);
$this->nb_modules_total = count($modules); $this->nb_modules_total = count($modules);
@@ -1053,7 +1052,7 @@ class AdminModulesControllerCore extends AdminController
foreach ($modules as $km => $module) foreach ($modules as $km => $module)
{ {
// Upgrade Module process, init check if a module could be upgraded // Upgrade Module process, init check if a module could be upgraded
if (Module::initUpgradeModule($module->name, $module->version)) if (Module::initUpgradeModule($module))
{ {
// When the XML cache file is up-to-date, the module may not be loaded yet // When the XML cache file is up-to-date, the module may not be loaded yet
if (!class_exists($module->name)) if (!class_exists($module->name))