Sfoglia il codice sorgente

New verb "AfterDatabaseSetup" for performing installation tasks after the completion of the DB creation (+predefined objects & admin account)

git-svn-id: http://svn.code.sf.net/p/itop/code/trunk@2820 a333f486-631f-4898-b8df-5754b55c2be0
dflaven 11 anni fa
parent
commit
3e177c57fd

+ 15 - 0
setup/applicationinstaller.class.inc.php

@@ -697,6 +697,21 @@ class ApplicationInstaller
 				SetupPage::log_info("Administrator account '$sAdminUser' created.");
 			}
 		}
+		
+		// Perform final setup tasks here
+		//
+		foreach($aAvailableModules as $sModuleId => $aModule)
+		{
+			if (($sModuleId != ROOT_MODULE) && in_array($sModuleId, $aSelectedModules) &&
+				isset($aAvailableModules[$sModuleId]['installer']) )
+			{
+				$sModuleInstallerClass = $aAvailableModules[$sModuleId]['installer'];
+				SetupPage::log_info("Calling Module Handler: $sModuleInstallerClass::AfterDatabaseSetup(oConfig, {$aModule['version_db']}, {$aModule['version_code']})");
+				// The validity of the sModuleInstallerClass has been established in BuildConfig() 
+				$aCallSpec = array($sModuleInstallerClass, 'AfterDatabaseSetup');
+				call_user_func_array($aCallSpec, array(MetaModel::GetConfig(), $aModule['version_db'], $aModule['version_code']));								
+			}
+		}
 	}
 	
 	/**

+ 10 - 0
setup/moduleinstaller.class.inc.php

@@ -55,6 +55,16 @@ abstract class ModuleInstallerAPI
 	}
 
 	/**
+	 * Handler called at the end of the setup of the database (profiles and admin accounts created), but before the data load
+	 * @param $oConfiguration Config The new configuration of the application
+	 * @param $sPreviousVersion string PRevious version number of the module (empty string in case of first install)
+	 * @param $sCurrentVersion string Current version number of the module
+	 */
+	public static function AfterDatabaseSetup(Config $oConfiguration, $sPreviousVersion, $sCurrentVersion)
+	{	
+	}
+	
+	/**
 	 * Helper to complete the renaming of a class
 	 * The renaming is made in the datamodel definition, but the name has to be changed in the DB as well	 	 
 	 * Must be called after DB update, i.e within an implementation of AfterDatabaseCreation()