diff --git a/core/config.class.inc.php b/core/config.class.inc.php index 77ecb7bdb..77575a612 100644 --- a/core/config.class.inc.php +++ b/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); + } } /**