From ca0e3e3db72c4120a194c3e213690b597cbb95e9 Mon Sep 17 00:00:00 2001 From: Michael Date: Tue, 27 Dec 2022 16:14:04 +0000 Subject: [PATCH] Distribute forum comments only via the forum --- src/Core/Protocol.php | 2 +- src/Protocol/ActivityPub/Transmitter.php | 17 +++++++++++++++++ 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/src/Core/Protocol.php b/src/Core/Protocol.php index 25955abd5..e4490da73 100644 --- a/src/Core/Protocol.php +++ b/src/Core/Protocol.php @@ -52,7 +52,6 @@ class Protocol // Supported through a connector const DIASPORA2 = 'dspc'; // Diaspora connector - const LINKEDIN = 'lnkd'; // LinkedIn const PUMPIO = 'pump'; // pump.io const STATUSNET = 'stac'; // Statusnet connector const TWITTER = 'twit'; // Twitter @@ -66,6 +65,7 @@ class Protocol // Currently unsupported const ICALENDAR = 'ical'; // iCalendar const MYSPACE = 'mysp'; // MySpace + const LINKEDIN = 'lnkd'; // LinkedIn const NEWS = 'nntp'; // Network News Transfer Protocol const PNUT = 'pnut'; // pnut.io const XMPP = 'xmpp'; // XMPP diff --git a/src/Protocol/ActivityPub/Transmitter.php b/src/Protocol/ActivityPub/Transmitter.php index 0ea11c6ad..6b0064c3e 100644 --- a/src/Protocol/ActivityPub/Transmitter.php +++ b/src/Protocol/ActivityPub/Transmitter.php @@ -675,6 +675,19 @@ class Transmitter $exclusive = false; + if ($is_forum_thread) { + foreach (Tag::getByURIId($item['parent-uri-id'], [Tag::MENTION, Tag::EXCLUSIVE_MENTION]) as $term) { + $profile = APContact::getByURL($term['url'], false); + if (!empty($profile) && ($profile['type'] == 'Group')) { + if ($term['type'] == Tag::EXCLUSIVE_MENTION) { + $exclusive = true; + } elseif ($term['type'] == Tag::MENTION) { + $exclusive = false; + } + } + } + } + $terms = Tag::getByURIId($item['uri-id'], [Tag::MENTION, Tag::IMPLICIT_MENTION, Tag::EXCLUSIVE_MENTION]); if ($item['private'] != Item::PRIVATE) { @@ -704,6 +717,8 @@ class Transmitter if (!empty($profile['followers']) && ($profile['type'] == 'Group')) { $data['cc'][] = $profile['followers']; } + } elseif (($term['type'] == Tag::MENTION) && ($profile['type'] == 'Group')) { + $exclusive = false; } $data['to'][] = $profile['url']; } @@ -726,6 +741,8 @@ class Transmitter if (!empty($profile['followers']) && ($profile['type'] == 'Group')) { $data['cc'][] = $profile['followers']; } + } elseif (($term['type'] == Tag::MENTION) && ($profile['type'] == 'Group')) { + $exclusive = false; } $data['to'][] = $profile['url']; }