소스 검색

File names are now purely reltive to the module's root directory.

git-svn-id: http://svn.code.sf.net/p/itop/code/trunk@4821 a333f486-631f-4898-b8df-5754b55c2be0
dflaven 8 년 전
부모
커밋
1abda8b6b6
1개의 변경된 파일25개의 추가작업 그리고 19개의 파일을 삭제
  1. 25 19
      setup/applicationinstaller.class.inc.php

+ 25 - 19
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(