]> git.mxchange.org Git - friendica.git/commitdiff
Remove unfeatured posts from collection
authorMichael <heluecht@pirati.ca>
Fri, 8 Apr 2022 04:49:23 +0000 (04:49 +0000)
committerMichael <heluecht@pirati.ca>
Fri, 8 Apr 2022 04:49:23 +0000 (04:49 +0000)
src/Protocol/ActivityPub/Processor.php

index c64197ff2cb594fa5e39cfaf552b69518c4fd939..d6bce87f4f58e8d9f4451016b7858a25fa853b1f 100644 (file)
@@ -993,9 +993,25 @@ class Processor
                        return;
                }
 
+               $pcid = Contact::getIdForURL($url, 0, false);
+               if (empty($pcid)) {
+                       Logger::info('Contact not found', ['contact' => $url]);
+                       return;
+               }
+
+               $posts = DBA::selectToArray('collection-view', ['uri-id'], ['cid' => $pcid, 'type' => Post\Collection::FEATURED]);
+               if (!empty($posts)) {
+                       $old_featured = array_column($posts, 'uri-id');
+               }
+
                $featured = ActivityPub::fetchItems($apcontact['featured']);
                if (empty($featured)) {
                        Logger::info('Contact does not have featured posts', ['contact' => $url]);
+
+                       foreach ($old_featured as $uri_id) {
+                               Post\Collection::remove($uri_id, Post\Collection::FEATURED);
+                               Logger::debug('Removed no longer featured post', ['uri-id' => $uri_id, 'contact' => $url]);
+                       }
                        return;
                }
 
@@ -1018,10 +1034,20 @@ class Processor
                                                Logger::debug('Post already had been featured', ['uri-id' => $item['uri-id'], 'contact' => $url]);
                                                $old++;
                                        }
+
+                                       $index = array_search($item['uri-id'], $old_featured);
+                                       if (!($index === false)) {
+                                               unset($old_featured[$index]);
+                                       }
                                }
                        }
                }
 
+               foreach ($old_featured as $uri_id) {
+                       Post\Collection::remove($uri_id, Post\Collection::FEATURED);
+                       Logger::debug('Removed no longer featured post', ['uri-id' => $uri_id, 'contact' => $url]);
+               }
+
                Logger::info('Fetched featured posts', ['new' => $new, 'old' => $old, 'contact' => $url]);
        }