From b4096251babf9d48ae3679637f3b3684ad28267a Mon Sep 17 00:00:00 2001 From: Philipp Date: Thu, 5 Jan 2023 21:42:35 +0100 Subject: [PATCH] Check 'config' table as fallback for migrations --- src/Core/Update.php | 42 +++++++++++++++++++++++++++++++++++------- 1 file changed, 35 insertions(+), 7 deletions(-) diff --git a/src/Core/Update.php b/src/Core/Update.php index e5ee587dc1..d440136b55 100644 --- a/src/Core/Update.php +++ b/src/Core/Update.php @@ -61,8 +61,18 @@ class Update $build = DI::config()->get('system', 'build'); if (empty($build)) { - DI::config()->set('system', 'build', DB_UPDATE_VERSION - 1); - $build = DB_UPDATE_VERSION - 1; + // legacy option - check if there's something in the Config table + if (DBStructure::existsTable('config')) { + $dbConfig = DBA::selectFirst('config', ['v'], ['cat' => 'system', 'k' => 'build']); + if (!empty($dbConfig)) { + $build = $dbConfig['v']; + } + } + + if (empty($build)) { + DI::config()->set('system', 'build', DB_UPDATE_VERSION - 1); + $build = DB_UPDATE_VERSION - 1; + } } // We don't support upgrading from very old versions anymore @@ -119,11 +129,21 @@ class Update DI::lock()->release('dbupdate', true); } - $build = DI::config()->get('system', 'build', null); + $build = DI::config()->get('system', 'build'); - if (empty($build) || ($build > DB_UPDATE_VERSION)) { - $build = DB_UPDATE_VERSION - 1; - DI::config()->set('system', 'build', $build); + if (empty($build)) { + // legacy option - check if there's something in the Config table + if (DBStructure::existsTable('config')) { + $dbConfig = DBA::selectFirst('config', ['v'], ['cat' => 'system', 'k' => 'build']); + if (!empty($dbConfig)) { + $build = $dbConfig['v']; + } + } + + if (empty($build) || ($build > DB_UPDATE_VERSION)) { + DI::config()->set('system', 'build', DB_UPDATE_VERSION - 1); + $build = DB_UPDATE_VERSION - 1; + } } if ($build != DB_UPDATE_VERSION || $force) { @@ -141,7 +161,15 @@ class Update Logger::notice('Update starting.', ['from' => $stored, 'to' => $current]); // Checks if the build changed during Lock acquiring (so no double update occurs) - $retryBuild = DI::config()->get('system', 'build', null); + $retryBuild = DI::config()->get('system', 'build'); + // legacy option - check if there's something in the Config table + if (DBStructure::existsTable('config')) { + $dbConfig = DBA::selectFirst('config', ['v'], ['cat' => 'system', 'k' => 'build']); + if (!empty($dbConfig)) { + $retryBuild = $dbConfig['v']; + } + } + if ($retryBuild !== $build) { Logger::notice('Update already done.', ['from' => $stored, 'to' => $current]); DI::lock()->release('dbupdate');