]> git.mxchange.org Git - friendica.git/blobdiff - src/Protocol/ActivityPub/Transmitter.php
Merge pull request #6747 from nupplaphil/issue/6677-frio_admin
[friendica.git] / src / Protocol / ActivityPub / Transmitter.php
index 1032627b32911a92613036c56908558a5ad73aae..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'];
@@ -1317,6 +1317,13 @@ class Transmitter
                        $uid = $first_user['uid'];
                }
 
+               $condition = ['verb' => ACTIVITY_FOLLOW, 'uid' => 0, 'parent-uri' => $object,
+                       'author-id' => Contact::getPublicIdByUserId($uid)];
+               if (Item::exists($condition)) {
+                       Logger::log('Follow for ' . $object . ' for user ' . $uid . ' does already exist.', Logger::DEBUG);
+                       return false;
+               }
+
                $owner = User::getOwnerDataById($uid);
 
                $data = ['@context' => ActivityPub::CONTEXT,
@@ -1432,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) {