/** * Prepare the parameters to execute the installation asynchronously * @return Hash A big hash array that can be converted to XML or JSON with all the needed parameters */ protected function BuildConfig() { $sMode = $this->oWizard->GetParameter('install_mode', 'install'); $aSelectedModules = json_decode($this->oWizard->GetParameter('selected_modules'), true); $sBackupDestination = ''; $sPreviousConfigurationFile = ''; $sDBName = $this->oWizard->GetParameter('db_name'); if ($sMode == 'upgrade') { $sPreviousVersionDir = $this->oWizard->GetParameter('previous_version_dir', ''); if (!empty($sPreviousVersionDir)) { $aPreviousInstance = SetupUtils::GetPreviousInstance($sPreviousVersionDir); if ($aPreviousInstance['found']) { $sPreviousConfigurationFile = $aPreviousInstance['configuration_file']; } } if ($this->oWizard->GetParameter('db_backup', false)) { $sBackupDestination = $this->oWizard->GetParameter('db_backup_path', ''); } } else { $sDBNewName = $this->oWizard->GetParameter('db_new_name', ''); if ($sDBNewName != '') { $sDBName = $sDBNewName; // Database will be created } } $sSourceDir = $this->oWizard->GetParameter('source_dir'); $aCopies = array(); if ($sMode == 'upgrade' && $this->oWizard->GetParameter('upgrade_type') == 'keep-previous') { $sPreviousVersionDir = $this->oWizard->GetParameter('previous_version_dir'); $aCopies[] = array('source' => $sSourceDir, 'destination' => 'modules'); // Source is an absolute path, destination is relative to APPROOT $aCopies[] = array('source' => $sPreviousVersionDir . '/portal', 'destination' => 'portal'); // Source is an absolute path, destination is relative to APPROOT $sSourceDir = APPROOT . 'modules'; } if ($sMode == 'upgrade') { // Copy the previous extensions, if any $sPreviousExtensionsDir = $this->oWizard->GetParameter('copy_extensions_from'); if (is_dir($sPreviousExtensionsDir)) { // Copy the extensions one by one to merge them with the existing extensions in /extensions $aExtensions = glob($sPreviousExtensionsDir . '/*', GLOB_ONLYDIR); foreach ($aExtensions as $sDirPath) { $sExtName = basename($sDirPath); $aCopies[] = array('source' => $sDirPath, 'destination' => 'extensions/' . $sExtName); // Source is an absolute path, destination is relative to APPROOT } } } $aInstallParams = array('mode' => $sMode, 'preinstall' => array('copies' => $aCopies), 'source_dir' => str_replace(APPROOT, '', $sSourceDir), 'datamodel_version' => $this->oWizard->GetParameter('datamodel_version'), 'previous_configuration_file' => $sPreviousConfigurationFile, 'extensions_dir' => 'extensions', 'target_env' => 'production', 'workspace_dir' => '', 'database' => array('server' => $this->oWizard->GetParameter('db_server'), 'user' => $this->oWizard->GetParameter('db_user'), 'pwd' => $this->oWizard->GetParameter('db_pwd'), 'name' => $sDBName, 'prefix' => $this->oWizard->GetParameter('db_prefix')), 'url' => $this->oWizard->GetParameter('application_url'), 'admin_account' => array('user' => $this->oWizard->GetParameter('admin_user'), 'pwd' => $this->oWizard->GetParameter('admin_pwd'), 'language' => $this->oWizard->GetParameter('admin_language')), 'language' => $this->oWizard->GetParameter('default_language'), 'selected_modules' => $aSelectedModules, 'sample_data' => $this->oWizard->GetParameter('sample_data', '') == 'yes' ? true : false, 'old_addon' => $this->oWizard->GetParameter('old_addon', false), 'options' => json_decode($this->oWizard->GetParameter('misc_options', '[]'), true)); if ($sBackupDestination != '') { $aInstallParams['preinstall']['backup'] = array('destination' => $sBackupDestination, 'configuration_file' => $sPreviousConfigurationFile); } return $aInstallParams; }