From 71cbe562934edaeaf33d17831094c15a09e1613b Mon Sep 17 00:00:00 2001 From: Michael Date: Sat, 22 Sep 2018 04:49:16 +0000 Subject: [PATCH] Use the follower collection --- src/Protocol/ActivityPub.php | 22 ++++++++++++++++------ 1 file changed, 16 insertions(+), 6 deletions(-) diff --git a/src/Protocol/ActivityPub.php b/src/Protocol/ActivityPub.php index 7205f5ab92..2c288feb5d 100644 --- a/src/Protocol/ActivityPub.php +++ b/src/Protocol/ActivityPub.php @@ -216,7 +216,7 @@ class ActivityPub return $data; } - private static function fetchTargetInboxesFromConversation($item) + private static function fetchTargetInboxesFromConversation($item, $uid) { if (empty($item['thr-parent'])) { return []; @@ -244,10 +244,20 @@ class ActivityPub $activity[$element] = [$activity[$element]]; } foreach ($activity[$element] as $receiver) { - $profile = self::fetchprofile($receiver); - if (!empty($profile)) { - $target = defaults($profile, 'sharedinbox', $profile['inbox']); - $inboxes[$target] = $target; + if ($receiver == $profile['followers']) { + $contacts = DBA::select('contact', ['notify', 'batch'], ['uid' => $uid, + 'rel' => [Contact::FOLLOWER, Contact::FRIEND], 'network' => Protocol::ACTIVITYPUB]); + while ($contact = DBA::fetch($contacts)) { + $contact = defaults($contact, 'batch', $contact['notify']); + $inboxes[$contact] = $contact; + } + DBA::close($contacts); + } else { + $profile = self::fetchprofile($receiver); + if (!empty($profile)) { + $target = defaults($profile, 'sharedinbox', $profile['inbox']); + $inboxes[$target] = $target; + } } } } @@ -256,7 +266,7 @@ class ActivityPub public static function fetchTargetInboxes($item, $uid) { - $inboxes = self::fetchTargetInboxesFromConversation($item); + $inboxes = self::fetchTargetInboxesFromConversation($item, $uid); $parents = Item::select(['author-link', 'owner-link'], ['parent' => $item['parent']]); while ($parent = Item::fetch($parents)) {