]> git.mxchange.org Git - friendica.git/commitdiff
Additional direction for fetching content
authorMichael <heluecht@pirati.ca>
Mon, 21 Sep 2020 15:17:33 +0000 (15:17 +0000)
committerMichael <heluecht@pirati.ca>
Mon, 21 Sep 2020 15:17:33 +0000 (15:17 +0000)
include/conversation.php
src/Model/Item.php
src/Protocol/ActivityPub/Processor.php
src/Protocol/ActivityPub/Receiver.php

index 4b3c4f0de42177c76b0c67076610f2663fcdb6f1..b25fae4f71683b47317bba6bde90583a5124c613 100644 (file)
@@ -767,7 +767,10 @@ function conversation_fetch_comments($thread_items, $pinned) {
                        case Item::PT_RELAY:
                                $row['direction'] = ['direction' => 10, 'title' => DI::l10n()->t('Relay')];
                                break;
-               }
+                       case Item::PT_FETCHED:
+                               $row['direction'] = ['direction' => 2, 'title' => DI::l10n()->t('Fetched')];
+                               break;
+                       }
 
                if (($row['gravity'] == GRAVITY_PARENT) && !$row['origin'] && ($row['author-id'] == $row['owner-id']) &&
                        !Contact::isSharing($row['author-id'], $row['uid'])) {
index 514fd417255fc4aa911320fdd08d824ddcb356a8..2947fd36f4765538f8239651201b74ffca84e48f 100644 (file)
@@ -68,6 +68,7 @@ class Item
        const PT_STORED = 72;
        const PT_GLOBAL = 73;
        const PT_RELAY = 74;
+       const PT_FETCHED = 75;
        const PT_PERSONAL_NOTE = 128;
 
        // Field list that is used to display the items
index 54d61bd6eeae4ca0d3da8f2d8b77802ceab1a17a..037c7889cb0be8e04a6de1fbd9039495d911b5c3 100644 (file)
@@ -521,8 +521,12 @@ class Processor
                                        $item['post-type'] = Item::PT_ARTICLE;
                        }
 
-                       if (in_array($item['post-type'], [Item::PT_GLOBAL, Item::PT_ARTICLE]) && !empty($activity['from-relay'])) {
-                               $item['post-type'] = Item::PT_RELAY;
+                       if (in_array($item['post-type'], [Item::PT_COMMENT, Item::PT_GLOBAL, Item::PT_ARTICLE])) {
+                               if (!empty($activity['from-relay'])) {
+                                       $item['post-type'] = Item::PT_RELAY;
+                               } elseif (!empty($activity['thread-completion'])) {
+                                       $item['post-type'] = Item::PT_FETCHED;
+                               }
                        }
 
                        if ($item['isForum'] ?? false) {
@@ -692,13 +696,13 @@ class Processor
        /**
         * Fetches missing posts
         *
-        * @param string $url       message URL
-        * @param array  $child     activity array with the child of this message
-        * @param bool   $relaymode Posts arrived via relay
+        * @param string $url   message URL
+        * @param array  $child activity array with the child of this message
+        * @param string $actor Relay actor
         * @return string fetched message URL
         * @throws \Friendica\Network\HTTPException\InternalServerErrorException
         */
-       public static function fetchMissingActivity(string $url, array $child = [], bool $relaymode = false)
+       public static function fetchMissingActivity(string $url, array $child = [], string $actor = '')
        {
                if (!empty($child['receiver'])) {
                        $uid = ActivityPub\Receiver::getFirstUserFromReceivers($child['receiver']);
@@ -757,7 +761,7 @@ class Processor
                $ldactivity = JsonLD::compact($activity);
 
                $ldactivity['thread-completion'] = true;
-               $ldactivity['from-relay'] = $relaymode;
+               $ldactivity['from-relay'] = !empty($actor);
 
                ActivityPub\Receiver::processActivity($ldactivity, json_encode($activity), $uid, true, false, $signer);
 
index f3cf87c858c642832504af7fb5de61feba058cd4..3c6dd28e5632360e833f6f501a52cd4adc92cd0a 100644 (file)
@@ -100,7 +100,7 @@ class Receiver
 
                $apcontact = APContact::getByURL($actor);
                if (!empty($apcontact) && ($apcontact['type'] == 'Application') && ($apcontact['nick'] == 'relay')) {
-                       self::processRelayPost($ldactivity);
+                       self::processRelayPost($ldactivity, $actor);
                        return;
                }
 
@@ -150,10 +150,11 @@ class Receiver
        /**
         * Process incoming posts from relays
         *
-        * @param array $activity
+        * @param array  $activity
+        * @param string $actor
         * @return void
         */
-       private static function processRelayPost(array $activity)
+       private static function processRelayPost(array $activity, string $actor)
        {
                $type = JsonLD::fetchElement($activity, '@type');
                if (!$type) {
@@ -180,7 +181,7 @@ class Receiver
                        return;
                }
 
-               Processor::fetchMissingActivity($object_id, [], true);
+               Processor::fetchMissingActivity($object_id, [], $actor);
 
                $item_id = Item::searchByLink($object_id);
                if ($item_id) {