瀏覽代碼

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.

git-svn-id: http://svn.code.sf.net/p/itop/code/trunk@4477 a333f486-631f-4898-b8df-5754b55c2be0
romainq 8 年之前
父節點
當前提交
a9f30549bf
共有 1 個文件被更改,包括 8 次插入3 次删除
  1. 8 3
      setup/modulediscovery.class.inc.php

+ 8 - 3
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;