From cb78e7785079726b31ed8620043bfaf11a78462d Mon Sep 17 00:00:00 2001 From: Hypolite Petovan Date: Fri, 22 Feb 2019 23:43:32 -0500 Subject: [PATCH] Fix implicit mentions in outgoing ActivityPub posts - Add usage of system.disable_implicit_mentions to disable implicit mention behavior - Add usage of item own implicit mentions to be prepended to the outgoing body --- src/Protocol/ActivityPub/Transmitter.php | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/src/Protocol/ActivityPub/Transmitter.php b/src/Protocol/ActivityPub/Transmitter.php index ebd32786a..7d33fb2dc 100644 --- a/src/Protocol/ActivityPub/Transmitter.php +++ b/src/Protocol/ActivityPub/Transmitter.php @@ -343,7 +343,7 @@ class Transmitter $actor_profile = APContact::getByURL($item['author-link']); } - $terms = Term::tagArrayFromItemId($item['id'], TERM_MENTION); + $terms = Term::tagArrayFromItemId($item['id'], [Term::MENTION, Term::IMPLICIT_MENTION]); if (!$item['private']) { $data = array_merge($data, self::fetchPermissionBlockFromConversation($item)); @@ -807,12 +807,12 @@ class Transmitter { $tags = []; - $terms = Term::tagArrayFromItemId($item['id']); + $terms = Term::tagArrayFromItemId($item['id'], [Term::HASHTAG, Term::MENTION, Term::IMPLICIT_MENTION]); foreach ($terms as $term) { - if ($term['type'] == TERM_HASHTAG) { + if ($term['type'] == Term::HASHTAG) { $url = System::baseUrl() . '/search?tag=' . urlencode($term['term']); $tags[] = ['type' => 'Hashtag', 'href' => $url, 'name' => '#' . $term['term']]; - } elseif ($term['type'] == TERM_MENTION) { + } elseif ($term['type'] == Term::MENTION || $term['type'] == Term::IMPLICIT_MENTION) { $contact = Contact::getDetailsByURL($term['url']); if (!empty($contact['addr'])) { $mention = '@' . $contact['addr']; @@ -1439,6 +1439,10 @@ class Transmitter private static function prependMentions($body, array $permission_block) { + if (Config::get('system', 'disable_implicit_mentions')) { + return $body; + } + $mentions = []; foreach ($permission_block['to'] as $profile_url) {