From e586ba8d6ef8b98e19c52b96dc2d99608f3b1ee3 Mon Sep 17 00:00:00 2001 From: Romain Quetiez Date: Thu, 17 Nov 2016 15:45:34 +0000 Subject: [PATCH] N.520 Setup: conflicts when a module in "extensions" is an upgrade of a module that already exists in datamodels/2.x. The most recent module must be installed and the older one must be ignored. SVN:trunk[4477] --- setup/modulediscovery.class.inc.php | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/setup/modulediscovery.class.inc.php b/setup/modulediscovery.class.inc.php index 1c890ae64..490b14e6a 100644 --- a/setup/modulediscovery.class.inc.php +++ b/setup/modulediscovery.class.inc.php @@ -86,10 +86,14 @@ class ModuleDiscovery if (array_key_exists($sModuleName, self::$m_aModuleVersionByName)) { - if (version_compare($sModuleVersion, self::$m_aModuleVersionByName[$sModuleName], '>')) + if (version_compare($sModuleVersion, self::$m_aModuleVersionByName[$sModuleName]['version'], '>')) { // Newer version, let's upgrade - self::$m_aModuleVersionByName[$sModuleName] = $sModuleVersion; + $sIdToRemove = self::$m_aModuleVersionByName[$sModuleName]['id']; + unset(self::$m_aModules[$sIdToRemove]); + + self::$m_aModuleVersionByName[$sModuleName]['version'] = $sModuleVersion; + self::$m_aModuleVersionByName[$sModuleName]['id'] = $sId; } else { @@ -100,7 +104,8 @@ class ModuleDiscovery else { // First version to be loaded for this module, remember it - self::$m_aModuleVersionByName[$sModuleName] = $sModuleVersion; + self::$m_aModuleVersionByName[$sModuleName]['version'] = $sModuleVersion; + self::$m_aModuleVersionByName[$sModuleName]['id'] = $sId; } self::$m_aModules[$sId] = $aArgs;