diff --git a/core/ajax/update.php b/core/ajax/update.php index 22133f9774..6a29b5b1c3 100644 --- a/core/ajax/update.php +++ b/core/ajax/update.php @@ -44,12 +44,15 @@ if (OC::checkUpgrade(false)) { $incompatibleApps = []; $disabledThirdPartyApps = []; - $updater->listen('\OC\Updater', 'maintenanceStart', function () use ($eventSource, $l) { + $updater->listen('\OC\Updater', 'maintenanceEnabled', function () use ($eventSource, $l) { $eventSource->send('success', (string)$l->t('Turned on maintenance mode')); }); - $updater->listen('\OC\Updater', 'maintenanceEnd', function () use ($eventSource, $l) { + $updater->listen('\OC\Updater', 'maintenanceDisabled', function () use ($eventSource, $l) { $eventSource->send('success', (string)$l->t('Turned off maintenance mode')); }); + $updater->listen('\OC\Updater', 'maintenanceActive', function () use ($eventSource, $l) { + $eventSource->send('success', (string)$l->t('Maintenance mode is kept active')); + }); $updater->listen('\OC\Updater', 'dbUpgrade', function () use ($eventSource, $l) { $eventSource->send('success', (string)$l->t('Updated database')); }); diff --git a/core/command/upgrade.php b/core/command/upgrade.php index 85bd430db5..2d6394fea8 100644 --- a/core/command/upgrade.php +++ b/core/command/upgrade.php @@ -118,12 +118,17 @@ class Upgrade extends Command { $updater->setUpdateStepEnabled($updateStepEnabled); $updater->setSkip3rdPartyAppsDisable($skip3rdPartyAppsDisable); - $updater->listen('\OC\Updater', 'maintenanceStart', function () use($output) { + $updater->listen('\OC\Updater', 'maintenanceEnabled', function () use($output) { $output->writeln('Turned on maintenance mode'); }); - $updater->listen('\OC\Updater', 'maintenanceEnd', + $updater->listen('\OC\Updater', 'maintenanceDisabled', function () use($output) { + $output->writeln('Turned off maintenance mode'); + }); + $updater->listen('\OC\Updater', 'maintenanceActive', function () use($output) { + $output->writeln('Maintenance mode is kept active'); + }); + $updater->listen('\OC\Updater', 'updateEnd', function () use($output, $updateStepEnabled, $self) { - $output->writeln('Turned off maintenance mode'); $mode = $updateStepEnabled ? 'Update' : 'Update simulation'; $status = $self->upgradeFailed ? 'failed' : 'successful'; $message = "$mode $status"; diff --git a/lib/private/updater.php b/lib/private/updater.php index 8371193ef7..7f1a493d2a 100644 --- a/lib/private/updater.php +++ b/lib/private/updater.php @@ -176,14 +176,18 @@ class Updater extends BasicEmitter { * @return bool true if the operation succeeded, false otherwise */ public function upgrade() { - $this->config->setSystemValue('maintenance', true); + $wasMaintenanceModeEnabled = $this->config->getSystemValue('maintenance', false); + + if(!$wasMaintenanceModeEnabled) { + $this->config->setSystemValue('maintenance', true); + $this->emit('\OC\Updater', 'maintenanceEnabled'); + } $installedVersion = $this->config->getSystemValue('version', '0.0.0'); $currentVersion = implode('.', \OC_Util::getVersion()); if ($this->log) { $this->log->debug('starting upgrade from ' . $installedVersion . ' to ' . $currentVersion, array('app' => 'core')); } - $this->emit('\OC\Updater', 'maintenanceStart'); try { $this->doUpgrade($currentVersion, $installedVersion); @@ -191,8 +195,14 @@ class Updater extends BasicEmitter { $this->emit('\OC\Updater', 'failure', array($exception->getMessage())); } - $this->config->setSystemValue('maintenance', false); - $this->emit('\OC\Updater', 'maintenanceEnd'); + $this->emit('\OC\Updater', 'updateEnd'); + + if(!$wasMaintenanceModeEnabled) { + $this->config->setSystemValue('maintenance', false); + $this->emit('\OC\Updater', 'maintenanceDisabled'); + } else { + $this->emit('\OC\Updater', 'maintenanceActive'); + } } /**