From 929455bd01d58c3cb576fa1d283f613b5d296ca6 Mon Sep 17 00:00:00 2001 From: Michael Date: Tue, 19 May 2020 20:28:27 +0000 Subject: [PATCH] Update the "vid" --- static/dbstructure.config.php | 2 +- update.php | 25 +++++++++++++++++++++++++ 2 files changed, 26 insertions(+), 1 deletion(-) diff --git a/static/dbstructure.config.php b/static/dbstructure.config.php index dd1528a2f5..512002f25c 100755 --- a/static/dbstructure.config.php +++ b/static/dbstructure.config.php @@ -54,7 +54,7 @@ use Friendica\Database\DBA; if (!defined('DB_UPDATE_VERSION')) { - define('DB_UPDATE_VERSION', 1348); + define('DB_UPDATE_VERSION', 1349); } return [ diff --git a/update.php b/update.php index 4b719682aa..48d44813b1 100644 --- a/update.php +++ b/update.php @@ -474,3 +474,28 @@ function update_1348() return Update::SUCCESS; } + +function update_1349() +{ + $correct = true; + foreach (Item::ACTIVITIES as $index => $activity) { + if (!DBA::exists('verb', ['id' => $index + 1, 'name' => $activity])) { + $correct = false; + } + } + + if (!$correct) { + // The update failed - but it cannot be recovered, since the data doesn't match our expectation + // This means that we can't use this "shortcut" to fill the "vid" field and we have to rely upon + // the postupdate. This is not fatal, but means that it will take some longer time for the system + // to fill all data. + return Update::SUCCESS; + } + + if (!DBA::e("UPDATE `item` INNER JOIN `item-activity` ON `item`.`uri-id` = `item-activity`.`uri-id` + SET `vid` = `item-activity`.`activity` + 1 WHERE `gravity` = ? AND (`vid` IS NULL OR `vid` = 0)", GRAVITY_ACTIVITY)) { + return Update::FAILED; + } + + return Update::SUCCESS; +} \ No newline at end of file