From a0cd70ae71cf5df280c25529b4e260ec1601e689 Mon Sep 17 00:00:00 2001 From: Eric Date: Fri, 12 Jul 2019 16:13:13 +0200 Subject: [PATCH] =?UTF-8?q?N=C2=B02240=20-=20Supportability=20-=20Maintena?= =?UTF-8?q?nce=20mode=20(setup)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- application/startup.inc.php | 41 ++++++++++++++++-------- setup/applicationinstaller.class.inc.php | 7 ++++ 2 files changed, 35 insertions(+), 13 deletions(-) diff --git a/application/startup.inc.php b/application/startup.inc.php index 08993ca89..ba4138cd9 100644 --- a/application/startup.inc.php +++ b/application/startup.inc.php @@ -56,10 +56,8 @@ $bBypassMaintenance = !is_null(Utils::ReadParam('maintenance', null)); // Maintenance mode if (file_exists(APPROOT.'.maintenance') && !$bBypassMaintenance) { - require_once(APPROOT.'core/dict.class.inc.php'); - $sMessage = Dict::S('UI:Error:MaintenanceMode', 'Application is currently in maintenance'); - $sTitle = Dict::S('UI:Error:MaintenanceTitle', 'Maintenance'); - // throw new MaintenanceException($sMessage, $sTitle); + $sMessage = 'Application is currently in maintenance'; + $sTitle = 'Maintenance'; http_response_code(503); // Display message depending on the request @@ -135,10 +133,17 @@ MetaModel::Startup($sConfigFile, false /* $bModelOnly */, $bAllowCache, false /* function _MaintenanceSetupPageMessage($sTitle, $sMessage) { // Web Page - require_once(APPROOT."/setup/setuppage.class.inc.php"); - $oP = new SetupPage($sTitle); - $oP->p("

$sMessage

"); - $oP->output(); + @include_once(APPROOT."/setup/setuppage.class.inc.php"); + if (class_exists('SetupPage')) + { + $oP = new SetupPage($sTitle); + $oP->p("

$sMessage

"); + $oP->output(); + } + else + { + _MaintenanceTextMessage($sMessage); + } } /** @@ -161,15 +166,25 @@ function _MaintenanceHtmlMessage($sMessage) /** * Use a simple JSON to display the maintenance message + * + * @param $sTitle * @param $sMessage */ function _MaintenanceJsonMessage($sTitle, $sMessage) { - $oP = new ajax_page($sTitle); - $oP->add_header('Access-Control-Allow-Origin: *'); - $oP->SetContentType('application/json'); - $oP->add('{"code":100, "message":"'.$sMessage.'"}'); - $oP->Output(); + @include_once(APPROOT."/application/ajaxwebpage.class.inc.php"); + if (class_exists('ajax_page')) + { + $oP = new ajax_page($sTitle); + $oP->add_header('Access-Control-Allow-Origin: *'); + $oP->SetContentType('application/json'); + $oP->add('{"code":100, "message":"'.$sMessage.'"}'); + $oP->Output(); + } + else + { + _MaintenanceTextMessage($sMessage); + } } /** diff --git a/setup/applicationinstaller.class.inc.php b/setup/applicationinstaller.class.inc.php index 5ed7532ee..254ebfc4c 100644 --- a/setup/applicationinstaller.class.inc.php +++ b/setup/applicationinstaller.class.inc.php @@ -117,6 +117,8 @@ class ApplicationInstaller try { $fStart = microtime(true); + // Enter in maintenance mode + @touch(APPROOT.'.maintenance'); switch ($sStep) { case '': @@ -339,11 +341,16 @@ class ApplicationInstaller 'percentage-completed' => 100, ); } + // Exit maintenance mode + @unlink(APPROOT.'.maintenance'); $fDuration = round(microtime(true) - $fStart, 2); SetupPage::log_info("##### STEP {$sStep} duration: {$fDuration}s"); } catch (Exception $e) { + // Exit maintenance mode + @unlink(APPROOT.'.maintenance'); + $aResult = array( 'status' => self::ERROR, 'message' => $e->getMessage(),