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;