N°2013 Setup : fix crash on setting readonly mode if initial DB info were wrong

Same as 15d3201a, but this error happened before compilation, when setting read only mode.
As before this is another fix for #351.

This fix introduces the new method \WizardController::GetParamForConfigArray
I replaced existing duplicate code with a call to this new generic method.
This commit is contained in:
Pierre Goiffon
2023-01-10 10:11:24 +01:00
parent d3d89b1ee2
commit 43d86ad8e2
6 changed files with 52 additions and 56 deletions

View File

@@ -1547,8 +1547,7 @@ JS
}
/**
*
* @param $oWizard
* @param \WizardController $oWizard
* @param bool $bAbortOnMissingDependency ...
* @param array $aModulesToLoad List of modules to search for, defaults to all if ommitted
*
@@ -1561,39 +1560,23 @@ JS
$oConfig = new Config();
$sSourceDir = $oWizard->GetParameter('source_dir', '');
if (strpos($sSourceDir, APPROOT) !== false)
{
if (strpos($sSourceDir, APPROOT) !== false) {
$sRelativeSourceDir = str_replace(APPROOT, '', $sSourceDir);
}
else if (strpos($sSourceDir, $oWizard->GetParameter('previous_version_dir')) !== false)
{
} else if (strpos($sSourceDir, $oWizard->GetParameter('previous_version_dir')) !== false) {
$sRelativeSourceDir = str_replace($oWizard->GetParameter('previous_version_dir'), '', $sSourceDir);
}
else
{
} else {
throw(new Exception('Internal error: AnalyzeInstallation: source_dir is neither under APPROOT nor under previous_installation_dir ???'));
}
$aParamValues = array(
'db_server' => $oWizard->GetParameter('db_server', ''),
'db_user' => $oWizard->GetParameter('db_user', ''),
'db_pwd' => $oWizard->GetParameter('db_pwd', ''),
'db_name' => $oWizard->GetParameter('db_name', ''),
'db_prefix' => $oWizard->GetParameter('db_prefix', ''),
'db_tls_enabled' => $oWizard->GetParameter('db_tls_enabled', false),
'db_tls_ca' => $oWizard->GetParameter('db_tls_ca', ''),
'source_dir' => $sRelativeSourceDir,
);
$aParamValues = $oWizard->GetParamForConfigArray();
$aParamValues['source_dir'] = $sRelativeSourceDir;
$oConfig->UpdateFromParams($aParamValues, null);
$aDirsToScan = array($sSourceDir);
if (is_dir(APPROOT.'extensions'))
{
if (is_dir(APPROOT.'extensions')) {
$aDirsToScan[] = APPROOT.'extensions';
}
if (is_dir($oWizard->GetParameter('copy_extensions_from')))
{
if (is_dir($oWizard->GetParameter('copy_extensions_from'))) {
$aDirsToScan[] = $oWizard->GetParameter('copy_extensions_from');
}
$sExtraDir = APPROOT.'data/production-modules/';
@@ -1627,16 +1610,8 @@ JS
require_once(APPROOT.'/setup/moduleinstaller.class.inc.php');
$oConfig = new Config();
$aParamValues = array(
'db_server' => $oWizard->GetParameter('db_server', ''),
'db_user' => $oWizard->GetParameter('db_user', ''),
'db_pwd' => $oWizard->GetParameter('db_pwd', ''),
'db_name' => $oWizard->GetParameter('db_name', ''),
'db_prefix' => $oWizard->GetParameter('db_prefix', ''),
'db_tls_enabled' => $oWizard->GetParameter('db_tls_enabled', false),
'db_tls_ca' => $oWizard->GetParameter('db_tls_ca', ''),
'source_dir' => '',
);
$aParamValues = $oWizard->GetParamForConfigArray();
$aParamValues['source_dir'] = '';
$oConfig->UpdateFromParams($aParamValues, null);
$oProductionEnv = new RunTimeEnvironment();