]> git.mxchange.org Git - friendica.git/commitdiff
Fix implicit mentions in outgoing ActivityPub posts
authorHypolite Petovan <hypolite@mrpetovan.com>
Sat, 23 Feb 2019 04:43:32 +0000 (23:43 -0500)
committerHypolite Petovan <hypolite@mrpetovan.com>
Sat, 23 Feb 2019 22:32:12 +0000 (17:32 -0500)
- 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

index ebd32786a82e603a86e0db4f2ad1780980417e72..7d33fb2dc54713cdafdcd7a1bbe6713a811764e6 100644 (file)
@@ -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) {