use Friendica\Database\DBStructure;
use Friendica\DI;
use Friendica\Network\HTTPException\InternalServerErrorException;
+use Friendica\Util\DateTimeFormat;
use Friendica\Util\Strings;
class Update
return '';
}
+ DI::config()->set('system', 'maintenance', 1);
+
// run the pre_update_nnnn functions in update.php
for ($version = $stored + 1; $version <= $current; $version++) {
Logger::notice('Execute pre update.', ['version' => $version]);
+ DI::config()->set('system', 'maintenance_reason', DI::l10n()->t('%s: executing pre update %d',
+ DateTimeFormat::utcNow() . ' ' . date('e'), $version));
$r = self::runUpdateFunction($version, 'pre_update', $sendMail);
if (!$r) {
Logger::warning('Pre update failed', ['version' => $version]);
DI::config()->set('system', 'update', Update::FAILED);
DI::lock()->release('dbupdate');
+ DI::config()->set('system', 'maintenance', 0);
+ DI::config()->set('system', 'maintenance_reason', '');
return $r;
} else {
Logger::notice('Pre update executed.', ['version' => $version]);
Logger::error('Update ERROR.', ['from' => $stored, 'to' => $current, 'retval' => $retval]);
DI::config()->set('system', 'update', Update::FAILED);
DI::lock()->release('dbupdate');
+ DI::config()->set('system', 'maintenance', 0);
+ DI::config()->set('system', 'maintenance_reason', '');
return $retval;
} else {
Logger::notice('Database structure update finished.', ['from' => $stored, 'to' => $current]);
// run the update_nnnn functions in update.php
for ($version = $stored + 1; $version <= $current; $version++) {
Logger::notice('Execute post update.', ['version' => $version]);
+ DI::config()->set('system', 'maintenance_reason', DI::l10n()->t('%s: executing post update %d',
+ DateTimeFormat::utcNow() . ' ' . date('e'), $version));
$r = self::runUpdateFunction($version, 'update', $sendMail);
if (!$r) {
Logger::warning('Post update failed', ['version' => $version]);
DI::config()->set('system', 'update', Update::FAILED);
DI::lock()->release('dbupdate');
+ DI::config()->set('system', 'maintenance', 0);
+ DI::config()->set('system', 'maintenance_reason', '');
return $r;
} else {
DI::config()->set('system', 'build', $version);
DI::config()->set('system', 'build', $current);
DI::config()->set('system', 'update', Update::SUCCESS);
DI::lock()->release('dbupdate');
+ DI::config()->set('system', 'maintenance', 0);
+ DI::config()->set('system', 'maintenance_reason', '');
Logger::notice('Update success.', ['from' => $stored, 'to' => $current]);
if ($sendMail) {
*/
public static function update($basePath, $verbose, $action, $install = false, array $tables = null, array $definition = null)
{
+ $in_maintenance = DI::config()->get('system', 'maintenance');
+
if ($action && !$install) {
if (self::isUpdating()) {
return DI::l10n()->t('Another database update is currently running.');
self::checkInitialValues();
if ($action && !$install) {
- DI::config()->set('system', 'maintenance', 0);
- DI::config()->set('system', 'maintenance_reason', '');
+ if (!$in_maintenance) {
+ DI::config()->set('system', 'maintenance', 0);
+ DI::config()->set('system', 'maintenance_reason', '');
+ }
if ($errors) {
DI::config()->set('system', 'dbupdate', self::UPDATE_FAILED);