diff --git a/src/Model/Post.php b/src/Model/Post.php index 2b71e2f142..c70237e8f5 100644 --- a/src/Model/Post.php +++ b/src/Model/Post.php @@ -565,6 +565,12 @@ class Post $posts = DBA::select('post-user-view', ['uri-id'], $condition, ['group_by' => ['uri-id']]); while ($rows = DBA::toArray($posts, false, 100)) { $uriids = array_column($rows, 'uri-id'); + + // Only delete the "post" entry when all "post-user" entries are deleted + if (!empty($update_fields['deleted']) && DBA::exists('post-user', ['uri-id' => $uriids, 'deleted' => false])) { + unset($update_fields['deleted']); + } + if (!DBA::update('post', $update_fields, ['uri-id' => $uriids])) { DBA::rollback(); Logger::notice('Updating post failed', ['fields' => $update_fields, 'condition' => $condition]); diff --git a/update.php b/update.php index cb9de69fb9..a28187e0cf 100644 --- a/update.php +++ b/update.php @@ -1112,5 +1112,6 @@ function update_1457() function update_1480() { DBA::update('contact', ['next-update' => DBA::NULL_DATETIME], ['network' => Protocol::FEDERATED]); + DBA::update('post', ['deleted' => false], ["`uri-id` IN (SELECT `uri-id` FROM `post-user` WHERE NOT `deleted`)"]); return Update::SUCCESS; }