From fff565a80b27617c1657aaef27578893c6b99ebe Mon Sep 17 00:00:00 2001 From: Hypolite Petovan Date: Wed, 30 Dec 2020 22:23:58 -0500 Subject: [PATCH] Prevent alt text of emoji image tags to be converted to smilies in BBCode::convert --- src/Content/Text/BBCode.php | 22 ++++++++++------------ 1 file changed, 10 insertions(+), 12 deletions(-) diff --git a/src/Content/Text/BBCode.php b/src/Content/Text/BBCode.php index ea818d7f31..25812db61c 100644 --- a/src/Content/Text/BBCode.php +++ b/src/Content/Text/BBCode.php @@ -1393,6 +1393,16 @@ class BBCode $text = self::convertAttachment($text, $simple_html, $try_oembed); } + $nosmile = strpos($text, '[nosmile]') !== false; + $text = str_replace('[nosmile]', '', $text); + + // Replace non graphical smilies for external posts + if (!$nosmile && !$for_plaintext) { + $text = self::performWithEscapedTags($text, ['img'], function ($text) { + return Smilies::replace($text); + }); + } + // leave open the posibility of [map=something] // this is replaced in Item::prepareBody() which has knowledge of the item location if (strpos($text, '[/map]') !== false) { @@ -1506,11 +1516,6 @@ class BBCode }); } - // This is actually executed in Item::prepareBody() - - $nosmile = strpos($text, '[nosmile]') !== false; - $text = str_replace('[nosmile]', '', $text); - // Check for font change text $text = preg_replace("/\[font=(.*?)\](.*?)\[\/font\]/sm", "$2", $text); @@ -1683,13 +1688,6 @@ class BBCode $text = preg_replace("/\[event\-id\](.*?)\[\/event\-id\]/ism", '', $text); } - // Replace non graphical smilies for external posts - if (!$nosmile && !$for_plaintext) { - $text = self::performWithEscapedTags($text, ['img'], function ($text) { - return Smilies::replace($text); - }); - } - if (!$for_plaintext && DI::config()->get('system', 'big_emojis') && ($simple_html != self::DIASPORA)) { $conv = html_entity_decode(str_replace([' ', "\n", "\r"], '', $text)); // Emojis are always 4 byte Unicode characters