]> git.mxchange.org Git - friendica.git/commitdiff
Don't delete the post when there is some undeleted post-user
authorMichael <heluecht@pirati.ca>
Sat, 13 Aug 2022 12:24:25 +0000 (12:24 +0000)
committerMichael <heluecht@pirati.ca>
Sat, 13 Aug 2022 12:24:25 +0000 (12:24 +0000)
src/Model/Post.php
update.php

index 2b71e2f142075b48c19512295e98aa76e71063c8..c70237e8f5fea4fcd697e18a91c260156beee6a1 100644 (file)
@@ -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]);
index cb9de69fb9072cfc8053fe0d90073ce3c7211f4f..a28187e0cf6e42e3ff2cdffa53d598b385ea16d4 100644 (file)
@@ -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;
 }