]> git.mxchange.org Git - friendica.git/commitdiff
Don't always fetch parent posts
authorMichael <heluecht@pirati.ca>
Wed, 3 Aug 2022 04:51:57 +0000 (04:51 +0000)
committerMichael <heluecht@pirati.ca>
Wed, 3 Aug 2022 04:51:57 +0000 (04:51 +0000)
src/Protocol/ActivityPub/Processor.php
src/Protocol/ActivityPub/Queue.php
src/Protocol/ActivityPub/Receiver.php

index a409fec1157bb8f52c30ef854392bec1ccf87c8f..73f414d73c40a82ef01ff508af291a4f48be57e7 100644 (file)
@@ -265,12 +265,15 @@ class Processor
        /**
         * Prepares data for a message
         *
-        * @param array      $activity   Activity array
+        * @param array $activity      Activity array
+        * @param bool  $fetch_parents
+        *
         * @return array Internal item
+        *
         * @throws \Friendica\Network\HTTPException\InternalServerErrorException
         * @throws \ImagickException
         */
-       public static function createItem(array $activity): array
+       public static function createItem(array $activity, bool $fetch_parents = true): array
        {
                $item = [];
                $item['verb'] = Activity::POST;
@@ -305,7 +308,7 @@ class Processor
                        return [];
                }
 
-               if (empty($activity['directmessage']) && ($activity['id'] != $activity['reply-to-id']) && !Post::exists(['uri' => $activity['reply-to-id']])) {
+               if ($fetch_parents && empty($activity['directmessage']) && ($activity['id'] != $activity['reply-to-id']) && !Post::exists(['uri' => $activity['reply-to-id']])) {
                        $result = self::fetchParent($activity);
                        if (!empty($result)) {
                                if (($item['thr-parent'] != $result) && Post::exists(['uri' => $result])) {
index 751ee93bda32e6337c2a261314086dc01f404aee..98c3b4d497e9c9206ef79e5a82b474514cd186ab 100644 (file)
@@ -175,10 +175,11 @@ class Queue
         * Process the activity with the given id
         *
         * @param integer $id
+        * @param bool    $fetch_parents
         *
         * @return bool
         */
-       public static function process(int $id): bool
+       public static function process(int $id, bool $fetch_parents = true): bool
        {
                $entry = DBA::selectFirst('inbox-entry', [], ['id' => $id]);
                if (empty($entry)) {
@@ -215,7 +216,7 @@ class Queue
                }
                DBA::close($receivers);
 
-               if (!Receiver::routeActivities($activity, $type, $push)) {
+               if (!Receiver::routeActivities($activity, $type, $push, $fetch_parents)) {
                        self::remove($activity);
                }
 
@@ -236,7 +237,7 @@ class Queue
                                continue;
                        }
                        Logger::debug('Process leftover entry', $entry);
-                       self::process($entry['id']);
+                       self::process($entry['id'], false);
                }
                DBA::close($entries);
        }
@@ -272,7 +273,7 @@ class Queue
                $entries = DBA::select('inbox-entry', ['id'], ["`in-reply-to-id` = ? AND `object-id` != ?", $uri, $uri]);
                while ($entry = DBA::fetch($entries)) {
                        $count += 1;
-                       self::process($entry['id']);
+                       self::process($entry['id'], false);
                }
                DBA::close($entries);
                return $count;
index b3d67b2af7e411740afc07fd7a9ad828b3094b2a..1f7946af2289a29d8772d17b25bbd9868be7fd22 100644 (file)
@@ -627,20 +627,21 @@ class Receiver
        /**
         * Route activities
         *
-        * @param array   $object_data
-        * @param string  $type
-        * @param boolean $push
+        * @param array  $object_data
+        * @param string $type
+        * @param bool   $push
+        * @param bool   $fetch_parents
         *
         * @return boolean Could the activity be routed?
         */
-       public static function routeActivities(array $object_data, string $type, bool $push): bool
+       public static function routeActivities(array $object_data, string $type, bool $push, bool $fetch_parents = true): bool
        {
                $activity = $object_data['object_activity']     ?? [];
 
                switch ($type) {
                        case 'as:Create':
                                if (in_array($object_data['object_type'], self::CONTENT_TYPES)) {
-                                       $item = ActivityPub\Processor::createItem($object_data);
+                                       $item = ActivityPub\Processor::createItem($object_data, $fetch_parents);
                                        ActivityPub\Processor::postItem($object_data, $item);
                                } elseif (in_array($object_data['object_type'], ['pt:CacheFile'])) {
                                        // Unhandled Peertube activity
@@ -652,7 +653,7 @@ class Receiver
 
                        case 'as:Invite':
                                if (in_array($object_data['object_type'], ['as:Event'])) {
-                                       $item = ActivityPub\Processor::createItem($object_data);
+                                       $item = ActivityPub\Processor::createItem($object_data, $fetch_parents);
                                        ActivityPub\Processor::postItem($object_data, $item);
                                } else {
                                        return false;
@@ -678,7 +679,7 @@ class Receiver
                                        $object_data['thread-completion'] = Contact::getIdForURL($actor);
                                        $object_data['completion-mode']   = self::COMPLETION_ANNOUCE;
 
-                                       $item = ActivityPub\Processor::createItem($object_data);
+                                       $item = ActivityPub\Processor::createItem($object_data, $fetch_parents);
                                        if (empty($item)) {
                                                return false;
                                        }