[+] CORE : Module properly upgraded with message even if no file upgrade file exist, add 'upgrade' button
git-svn-id: http://dev.prestashop.com/svn/v1/branches/1.5.x@13551 b9a71923-0436-4b27-9f14-aed3839534dd
This commit is contained in:
+45
-8
@@ -307,7 +307,8 @@ abstract class ModuleCore
|
||||
);
|
||||
|
||||
// Need Upgrade will check and load upgrade file to the moduleCache upgrade case detail
|
||||
return Module::isInstalled($module_name) && Module::needUpgrade($module_name, $module_version);
|
||||
$ret = Module::isInstalled($module_name) && Module::needUpgrade($module_name, $module_version);
|
||||
return $ret;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -350,17 +351,29 @@ abstract class ModuleCore
|
||||
}
|
||||
|
||||
$upgrade['number_upgrade_left'] = count($upgrade['upgrade_file_left']);
|
||||
|
||||
// Update module version in DB with the last succeed upgrade
|
||||
if ($upgrade['upgraded_to'])
|
||||
Db::getInstance()->execute('
|
||||
UPDATE `'._DB_PREFIX_.'module` m
|
||||
SET m.version = \''.bqSQL($upgrade['upgraded_to']).'\'
|
||||
WHERE m.name = \''.bqSQL($this->name).'\'');
|
||||
Module::upgradeModuleVersion($this->name, $upgrade['upgraded_to']);
|
||||
$this->setUpgradeMessage($upgrade);
|
||||
return $upgrade;
|
||||
}
|
||||
|
||||
/**
|
||||
* Upgrade the registered version to a new one
|
||||
*
|
||||
* @static
|
||||
* @param $name
|
||||
* @param $version
|
||||
* @return bool
|
||||
*/
|
||||
public static function upgradeModuleVersion($name, $version)
|
||||
{
|
||||
return Db::getInstance()->execute('
|
||||
UPDATE `'._DB_PREFIX_.'module` m
|
||||
SET m.version = \''.bqSQL($version).'\'
|
||||
WHERE m.name = \''.bqSQL($name).'\'');
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if a module need to be upgraded.
|
||||
* This method modify the module_cache adding an upgrade list file
|
||||
@@ -377,6 +390,7 @@ abstract class ModuleCore
|
||||
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
|
||||
return version_compare($module_version, $registered_version, '>')
|
||||
&& Module::loadUpgradeVersionList($module_name, $module_version, $registered_version);
|
||||
@@ -388,6 +402,7 @@ abstract class ModuleCore
|
||||
*
|
||||
* @static
|
||||
* @param $module_name
|
||||
* @param $module_version
|
||||
* @param $registered_version
|
||||
* @return bool to know directly if any files have been found
|
||||
*/
|
||||
@@ -402,10 +417,12 @@ abstract class ModuleCore
|
||||
{
|
||||
// Read each file name
|
||||
foreach ($files as $file)
|
||||
if (!in_array($file, array('.', '..', '.svn')))
|
||||
if (!in_array($file, array('.', '..', '.svn', 'index.php')))
|
||||
{
|
||||
$tab = explode('-', $file);
|
||||
$file_version = basename($tab[1], '.php');
|
||||
Tools::alignVersionNumber($file_version, $module_version);
|
||||
Tools::alignVersionNumber($file_version, $registered_version);
|
||||
// Compare version, if minor than actual, we need to upgrade the module
|
||||
if (count($tab) == 2 &&
|
||||
(version_compare($file_version, $module_version, '<=') &&
|
||||
@@ -417,7 +434,14 @@ abstract class ModuleCore
|
||||
'upgrade_function' => 'upgrade_module_'.str_replace('.', '_', $file_version));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// No files upgrade, then upgrade succeed
|
||||
if (count($list) == 0)
|
||||
{
|
||||
self::$modules_cache[$module_name]['upgrade']['success'] = true;
|
||||
Module::upgradeModuleVersion($module_name, $module_version);
|
||||
}
|
||||
|
||||
// Set the list to module cache
|
||||
self::$modules_cache[$module_name]['upgrade']['upgrade_file_left'] = $list;
|
||||
@@ -425,6 +449,19 @@ abstract class ModuleCore
|
||||
return (bool)count($list);
|
||||
}
|
||||
|
||||
/**
|
||||
* Return the status of the upgraded module
|
||||
*
|
||||
* @static
|
||||
* @param $module_name
|
||||
* @return bool
|
||||
*/
|
||||
public static function getUpgradeStatus($module_name)
|
||||
{
|
||||
return (isset(self::$modules_cache[$module_name]) &&
|
||||
self::$modules_cache[$module_name]['upgrade']['success']);
|
||||
}
|
||||
|
||||
/**
|
||||
* Delete module from datable
|
||||
*
|
||||
|
||||
+31
-1
@@ -2191,6 +2191,36 @@ FileETag INode MTime Size
|
||||
$filtered_files[] = $dir.'/'.$file;
|
||||
return $filtered_files;
|
||||
}
|
||||
|
||||
/**
|
||||
* Align 2 version with the same number of sub version
|
||||
* version_compare will work better for its comparison :)
|
||||
* (Means: '1.8' to '1.9.3' will change '1.8' to '1.8.0')
|
||||
* @static
|
||||
* @param $v1
|
||||
* @param $v2
|
||||
*/
|
||||
public static function alignVersionNumber(&$v1, &$v2)
|
||||
{
|
||||
$len1 = count(explode('.', trim($v1, '.')));
|
||||
$len2 = count(explode('.', trim($v2, '.')));
|
||||
$len = 0;
|
||||
$str = '';
|
||||
|
||||
if ($len1 > $len2)
|
||||
{
|
||||
$len = $len1 - $len2;
|
||||
$str = &$v2;
|
||||
}
|
||||
else if ($len2 > $len1)
|
||||
{
|
||||
$len = $len2 - $len1;
|
||||
$str = &$v1;
|
||||
}
|
||||
|
||||
for ($len; $len > 0; $len--)
|
||||
$str .= '.0';
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -2217,4 +2247,4 @@ function cmpPriceDesc($a, $b)
|
||||
elseif ((float)($a['price_tmp']) > (float)($b['price_tmp']))
|
||||
return (-1);
|
||||
return (0);
|
||||
}
|
||||
}
|
||||
@@ -290,6 +290,7 @@ class AdminControllerCore extends Controller
|
||||
26 => $this->l('Cover selection saved'),
|
||||
27 => $this->l('Image shop association modified'),
|
||||
28 => $this->l('Zone affected to the selection successfully'),
|
||||
29 => $this->l('Upgrade succeed')
|
||||
);
|
||||
if (!$this->identifier) $this->identifier = 'id_'.$this->table;
|
||||
if (!$this->_defaultOrderBy) $this->_defaultOrderBy = $this->identifier;
|
||||
|
||||
Reference in New Issue
Block a user