Bläddra i källkod

Fixed a regression introduced in [3518] (module parameters in XML)

git-svn-id: http://svn.code.sf.net/p/itop/code/trunk@3562 a333f486-631f-4898-b8df-5754b55c2be0
romainq 10 år sedan
förälder
incheckning
086ec649a0
1 ändrade filer med 87 tillägg och 83 borttagningar
  1. 87 83
      core/config.class.inc.php

+ 87 - 83
core/config.class.inc.php

@@ -1156,12 +1156,16 @@ class Config
 
 	public function GetModuleParameter($sModule, $sProperty, $defaultvalue = null)
 	{
-		$aAllParams = ModulesXMLParameters::GetData($sModule);
-		if(array_key_exists($sProperty, $aAllParams))
+		$ret = $defaultvalue;
+		if (class_exists('ModulesXMLParameters'))
 		{
-			return $aAllParams[$sProperty];
+			$aAllParams = ModulesXMLParameters::GetData($sModule);
+			if(array_key_exists($sProperty, $aAllParams))
+			{
+				$ret = $aAllParams[$sProperty];
+			}
 		}
-		return $defaultvalue;
+		return $ret;
 	}
 	
 	public function SetModuleSetting($sModule, $sProperty, $value)
@@ -1751,91 +1755,91 @@ class Config
 			$aSelectedModules = null;
 		}		
 		$this->UpdateIncludes($sModulesDir, $aSelectedModules);
-	}
+	}
 
 	/**
 	 * Helper function to rebuild the default configuration and the list of includes from a directory and a list of selected modules
 	 * @param string $sModulesDir The relative path to the directory to scan for modules (typically the 'env-xxx' directory resulting from the compilation)
 	 * @param array $aSelectedModules An array of selected modules' identifiers. If null all modules found will be considered as installed
 	 * @throws Exception
-	 */
-	public function UpdateIncludes($sModulesDir, $aSelectedModules = null)
-	{
-		if (!is_null($sModulesDir))
-		{	
-			// Initialize the arrays below with default values for the application...
-			$oEmptyConfig = new Config('dummy_file', false); // Do NOT load any config file, just set the default values
-			$aAddOns = $oEmptyConfig->GetAddOns();
-			$aAppModules = $oEmptyConfig->GetAppModules();
-			if (file_exists(APPROOT.$sModulesDir.'/core/main.php'))
-			{
-				$aAppModules[] = $sModulesDir.'/core/main.php';
-			}
-			$aDataModels = $oEmptyConfig->GetDataModels();
-			$aWebServiceCategories = $oEmptyConfig->GetWebServiceCategories();
-			$aDictionaries = $oEmptyConfig->GetDictionaries();
-			// Merge the values with the ones provided by the modules
-			// Make sure when don't load the same file twice...
-			
-			$aModules = ModuleDiscovery::GetAvailableModules(array(APPROOT.$sModulesDir));
-			foreach ($aModules as $sModuleId => $aModuleInfo)
-			{
-				list ($sModuleName, $sModuleVersion) = ModuleDiscovery::GetModuleName($sModuleId);
-				if (is_null($aSelectedModules) || in_array($sModuleName, $aSelectedModules))
-				{
-					if (isset($aModuleInfo['datamodel']))
-					{
-						$aDataModels = array_unique(array_merge($aDataModels, $aModuleInfo['datamodel']));
-					}
-					if (isset($aModuleInfo['webservice']))
-					{
-						$aWebServiceCategories = array_unique(array_merge($aWebServiceCategories, $aModuleInfo['webservice']));
-					}
-					if (isset($aModuleInfo['settings']))
-					{
-						list ($sName, $sVersion) = ModuleDiscovery::GetModuleName($sModuleId);
-						foreach ($aModuleInfo['settings'] as $sProperty => $value)
-						{
-							if (isset($this->m_aModuleSettings[$sName][$sProperty]))
-							{
-								// Do nothing keep the original value
-							}
-							else
-							{
-								$this->SetModuleSetting($sName, $sProperty, $value);
-							}
-						}
-					}
-					if (isset($aModuleInfo['installer']))
-					{
-						$sModuleInstallerClass = $aModuleInfo['installer'];
-						if (!class_exists($sModuleInstallerClass))
-						{
-							throw new Exception("Wrong installer class: '$sModuleInstallerClass' is not a PHP class - Module: ".$aModuleInfo['label']);
-						}
-						if (!is_subclass_of($sModuleInstallerClass, 'ModuleInstallerAPI'))
-						{
-							throw new Exception("Wrong installer class: '$sModuleInstallerClass' is not derived from 'ModuleInstallerAPI' - Module: ".$aModuleInfo['label']);
-						}
-						$aCallSpec = array($sModuleInstallerClass,'BeforeWritingConfig');
-						call_user_func_array($aCallSpec, array($this));
-					}
-				}
-			}
-			$this->SetAddOns($aAddOns);
-			$this->SetAppModules($aAppModules);
-			$this->SetDataModels($aDataModels);
-			$this->SetWebServiceCategories($aWebServiceCategories);
-			
-			// Scan dictionaries
-			//
-			foreach (glob(APPROOT.$sModulesDir.'/dictionaries/*.dict.php') as $sFilePath)
-			{
-				$sFile = basename($sFilePath);
-				$aDictionaries[] = $sModulesDir.'/dictionaries/'.$sFile;
-			}
-			$this->SetDictionaries($aDictionaries);
-		}
+	 */
+	public function UpdateIncludes($sModulesDir, $aSelectedModules = null)
+	{
+		if (!is_null($sModulesDir))
+		{	
+			// Initialize the arrays below with default values for the application...
+			$oEmptyConfig = new Config('dummy_file', false); // Do NOT load any config file, just set the default values
+			$aAddOns = $oEmptyConfig->GetAddOns();
+			$aAppModules = $oEmptyConfig->GetAppModules();
+			if (file_exists(APPROOT.$sModulesDir.'/core/main.php'))
+			{
+				$aAppModules[] = $sModulesDir.'/core/main.php';
+			}
+			$aDataModels = $oEmptyConfig->GetDataModels();
+			$aWebServiceCategories = $oEmptyConfig->GetWebServiceCategories();
+			$aDictionaries = $oEmptyConfig->GetDictionaries();
+			// Merge the values with the ones provided by the modules
+			// Make sure when don't load the same file twice...
+			
+			$aModules = ModuleDiscovery::GetAvailableModules(array(APPROOT.$sModulesDir));
+			foreach ($aModules as $sModuleId => $aModuleInfo)
+			{
+				list ($sModuleName, $sModuleVersion) = ModuleDiscovery::GetModuleName($sModuleId);
+				if (is_null($aSelectedModules) || in_array($sModuleName, $aSelectedModules))
+				{
+					if (isset($aModuleInfo['datamodel']))
+					{
+						$aDataModels = array_unique(array_merge($aDataModels, $aModuleInfo['datamodel']));
+					}
+					if (isset($aModuleInfo['webservice']))
+					{
+						$aWebServiceCategories = array_unique(array_merge($aWebServiceCategories, $aModuleInfo['webservice']));
+					}
+					if (isset($aModuleInfo['settings']))
+					{
+						list ($sName, $sVersion) = ModuleDiscovery::GetModuleName($sModuleId);
+						foreach ($aModuleInfo['settings'] as $sProperty => $value)
+						{
+							if (isset($this->m_aModuleSettings[$sName][$sProperty]))
+							{
+								// Do nothing keep the original value
+							}
+							else
+							{
+								$this->SetModuleSetting($sName, $sProperty, $value);
+							}
+						}
+					}
+					if (isset($aModuleInfo['installer']))
+					{
+						$sModuleInstallerClass = $aModuleInfo['installer'];
+						if (!class_exists($sModuleInstallerClass))
+						{
+							throw new Exception("Wrong installer class: '$sModuleInstallerClass' is not a PHP class - Module: ".$aModuleInfo['label']);
+						}
+						if (!is_subclass_of($sModuleInstallerClass, 'ModuleInstallerAPI'))
+						{
+							throw new Exception("Wrong installer class: '$sModuleInstallerClass' is not derived from 'ModuleInstallerAPI' - Module: ".$aModuleInfo['label']);
+						}
+						$aCallSpec = array($sModuleInstallerClass,'BeforeWritingConfig');
+						call_user_func_array($aCallSpec, array($this));
+					}
+				}
+			}
+			$this->SetAddOns($aAddOns);
+			$this->SetAppModules($aAppModules);
+			$this->SetDataModels($aDataModels);
+			$this->SetWebServiceCategories($aWebServiceCategories);
+			
+			// Scan dictionaries
+			//
+			foreach (glob(APPROOT.$sModulesDir.'/dictionaries/*.dict.php') as $sFilePath)
+			{
+				$sFile = basename($sFilePath);
+				$aDictionaries[] = $sModulesDir.'/dictionaries/'.$sFile;
+			}
+			$this->SetDictionaries($aDictionaries);
+		}
 	}
 
 	/**