]> git.mxchange.org Git - friendica.git/commitdiff
Escape url tags before attempting to add missing mention links in Protocol\ActivityPu...
authorHypolite Petovan <hypolite@mrpetovan.com>
Fri, 20 Aug 2021 07:40:23 +0000 (03:40 -0400)
committerHypolite Petovan <hypolite@mrpetovan.com>
Fri, 20 Aug 2021 07:45:15 +0000 (03:45 -0400)
- Mastodon uses @-sign in profile URLs which wrongly triggered the mention link add in existing mentions links

src/Protocol/ActivityPub/Processor.php

index 790a933bb03925c32db92ad14aecd57eafbf8618..47a5300352d03ee73104ad05290d4f134c4035b8 100644 (file)
@@ -1207,20 +1207,24 @@ class Processor
                // This prevents links to be added again to Pleroma-style mention links
                $body = self::normalizeMentionLinks($body);
 
-               foreach ($tags as $tag) {
-                       if (empty($tag['name']) || empty($tag['type']) || empty($tag['href']) || !in_array($tag['type'], ['Mention', 'Hashtag'])) {
-                               continue;
-                       }
+               $body = BBCode::performWithEscapedTags($body, ['url'], function ($body) use ($tags) {
+                       foreach ($tags as $tag) {
+                               if (empty($tag['name']) || empty($tag['type']) || empty($tag['href']) || !in_array($tag['type'], ['Mention', 'Hashtag'])) {
+                                       continue;
+                               }
 
-                       $hash = substr($tag['name'], 0, 1);
-                       $name = substr($tag['name'], 1);
-                       if (!in_array($hash, Tag::TAG_CHARACTER)) {
-                               $hash = '';
-                               $name = $tag['name'];
+                               $hash = substr($tag['name'], 0, 1);
+                               $name = substr($tag['name'], 1);
+                               if (!in_array($hash, Tag::TAG_CHARACTER)) {
+                                       $hash = '';
+                                       $name = $tag['name'];
+                               }
+
+                               $body = str_replace($tag['name'], $hash . '[url=' . $tag['href'] . ']' . $name . '[/url]', $body);
                        }
 
-                       $body = str_replace($tag['name'], $hash . '[url=' . $tag['href'] . ']' . $name . '[/url]', $body);
-               }
+                       return $body;
+               });
 
                return $body;
        }