diff --git a/setup/applicationinstaller.class.inc.php b/setup/applicationinstaller.class.inc.php index 1c3484652..9115d4c88 100644 --- a/setup/applicationinstaller.class.inc.php +++ b/setup/applicationinstaller.class.inc.php @@ -839,7 +839,7 @@ class ApplicationInstaller } } - protected static function DoLoadFiles($aSelectedModules, $sModulesDir, $sDBServer, $sDBUser, $sDBPwd, $sDBName, $sDBPrefix, $sTargetEnvironment = '', $bOldAddon = false, $bSampleData = false) + protected static function DoLoadFiles($aSelectedModules, $sModulesDir, $sDBServer, $sDBUser, $sDBPwd, $sDBName, $sDBPrefix, $sTargetEnvironment = 'production', $bOldAddon = false, $bSampleData = false) { $aParamValues = array( 'db_server' => $sDBServer, @@ -885,6 +885,7 @@ class ApplicationInstaller { if (($sModuleId != ROOT_MODULE)) { + $sRelativePath = 'env-'.$sTargetEnvironment.'/'.basename($aModule['root_dir']); // Load data only for selected AND newly installed modules if (in_array($sModuleId, $aSelectedModules)) { @@ -893,38 +894,26 @@ class ApplicationInstaller // Simulate the load of the previously loaded XML files to get the mapping of the keys if ($bSampleData) { - $aPreviouslyLoadedFiles = array_merge( - $aPreviouslyLoadedFiles, - $aAvailableModules[$sModuleId]['data.struct'], - $aAvailableModules[$sModuleId]['data.sample'] - ); + $aPreviouslyLoadedFiles = static::MergeWithRelativeDir($aPreviouslyLoadedFiles, $sRelativePath, $aAvailableModules[$sModuleId]['data.struct']); + $aPreviouslyLoadedFiles = static::MergeWithRelativeDir($aPreviouslyLoadedFiles, $sRelativePath, $aAvailableModules[$sModuleId]['data.sample']); } else { // Load only structural data - $aPreviouslyLoadedFiles = array_merge( - $aPreviouslyLoadedFiles, - $aAvailableModules[$sModuleId]['data.struct'] - ); + $aPreviouslyLoadedFiles = static::MergeWithRelativeDir($aPreviouslyLoadedFiles, $sRelativePath, $aAvailableModules[$sModuleId]['data.struct']); } } else { if ($bSampleData) { - $aFiles = array_merge( - $aFiles, - $aAvailableModules[$sModuleId]['data.struct'], - $aAvailableModules[$sModuleId]['data.sample'] - ); + $aFiles = static::MergeWithRelativeDir($aFiles, $sRelativePath, $aAvailableModules[$sModuleId]['data.struct']); + $aFiles = static::MergeWithRelativeDir($aFiles, $sRelativePath, $aAvailableModules[$sModuleId]['data.sample']); } else { // Load only structural data - $aFiles = array_merge( - $aFiles, - $aAvailableModules[$sModuleId]['data.struct'] - ); + $aFiles = static::MergeWithRelativeDir($aFiles, $sRelativePath, $aAvailableModules[$sModuleId]['data.struct']); } } } @@ -966,6 +955,23 @@ class ApplicationInstaller SetupPage::log_info("ending data load session"); } + /** + * Merge two arrays of file names, adding the relative path to the files provided in the array to merge + * @param string[] $aSourceArray + * @param string $sBaseDir + * @param string[] $aFilesToMerge + * @return string[] + */ + protected static function MergeWithRelativeDir($aSourceArray, $sBaseDir, $aFilesToMerge) + { + $aToMerge = array(); + foreach($aFilesToMerge as $sFile) + { + $aToMerge[] = $sBaseDir.'/'.$sFile; + } + return array_merge($aSourceArray, $aToMerge); + } + protected static function DoCreateConfig($sMode, $sModulesDir, $sDBServer, $sDBUser, $sDBPwd, $sDBName, $sDBPrefix, $sUrl, $sLanguage, $aSelectedModuleCodes, $aSelectedExtensionCodes, $sTargetEnvironment, $bOldAddon, $sSourceDir, $sPreviousConfigFile, $sDataModelVersion, $sGraphvizPath) { $aParamValues = array(