]> git.mxchange.org Git - friendica.git/commitdiff
Added group detection for via exclusive mentions
authorMichael <heluecht@pirati.ca>
Mon, 26 Jun 2023 19:37:20 +0000 (19:37 +0000)
committerMichael <heluecht@pirati.ca>
Mon, 26 Jun 2023 19:37:20 +0000 (19:37 +0000)
src/Protocol/ActivityPub/Processor.php

index d8cd271ea4231a58bbcafff2facd2516d1d29935..7ba5266b46574a156f107a0c473775585d5ed3e0 100644 (file)
@@ -442,6 +442,7 @@ class Processor
                                        $item['isGroup']    = true;
                                        $item['group-link'] = $item['owner-link'] = $audience;
                                        $item['owner-id']   = Contact::getIdForURL($audience);
+                                       break;
                                }
                        }
                } else {
@@ -902,6 +903,19 @@ class Processor
                        $item['raw-body'] = $item['body'] = $content;
                }
 
+               if (!empty($item['author-id']) && ($item['author-id'] == $item['owner-id'])) {
+                       foreach (Tag::getFromBody($item['body'], Tag::TAG_CHARACTER[Tag::EXCLUSIVE_MENTION]) as $tag) {
+                               $actor = APContact::getByURL($tag[2], false);
+                               if (($actor['type'] ?? 'Person') == 'Group') {
+                                       Logger::debug('Group post detected via exclusive mention.', ['mention' => $actor['url'], 'actor' => $activity['actor'], 'author' => $activity['author']]);
+                                       $item['isGroup']    = true;
+                                       $item['group-link'] = $item['owner-link'] = $actor['url'];
+                                       $item['owner-id']   = Contact::getIdForURL($actor['url']);
+                                       break;
+                               }
+                       }
+               }
+
                self::storeFromBody($item);
                self::storeTags($item['uri-id'], $activity['tags']);