From 11d2b027ec9762bdd9877d21bb97b897a70cb0cc Mon Sep 17 00:00:00 2001 From: Michael Date: Mon, 21 Sep 2020 15:17:33 +0000 Subject: [PATCH] Additional direction for fetching content --- include/conversation.php | 5 ++++- src/Model/Item.php | 1 + src/Protocol/ActivityPub/Processor.php | 18 +++++++++++------- src/Protocol/ActivityPub/Receiver.php | 9 +++++---- 4 files changed, 21 insertions(+), 12 deletions(-) diff --git a/include/conversation.php b/include/conversation.php index 4b3c4f0de4..b25fae4f71 100644 --- a/include/conversation.php +++ b/include/conversation.php @@ -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'])) { diff --git a/src/Model/Item.php b/src/Model/Item.php index 514fd41725..2947fd36f4 100644 --- a/src/Model/Item.php +++ b/src/Model/Item.php @@ -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 diff --git a/src/Protocol/ActivityPub/Processor.php b/src/Protocol/ActivityPub/Processor.php index 54d61bd6ee..037c7889cb 100644 --- a/src/Protocol/ActivityPub/Processor.php +++ b/src/Protocol/ActivityPub/Processor.php @@ -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); diff --git a/src/Protocol/ActivityPub/Receiver.php b/src/Protocol/ActivityPub/Receiver.php index f3cf87c858..3c6dd28e56 100644 --- a/src/Protocol/ActivityPub/Receiver.php +++ b/src/Protocol/ActivityPub/Receiver.php @@ -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) {