diff --git a/include/text.php b/include/text.php index e4227cd7d..7bed8b499 100644 --- a/include/text.php +++ b/include/text.php @@ -140,16 +140,12 @@ function redir_private_images($a, &$item) * @brief Given a text string, convert from bbcode to html and add smilie icons. * * @param string $text String with bbcode. - * @return string Formattet HTML. + * @return string Formatted HTML * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ -function prepare_text($text) { - if (stristr($text, '[nosmile]')) { - $s = BBCode::convert($text); - } else { - $s = Smilies::replace(BBCode::convert($text)); - } - +function prepare_text($text) +{ + $s = BBCode::convert($text); return trim($s); } diff --git a/mod/message.php b/mod/message.php index 3ff84a1e6..fe4429e00 100644 --- a/mod/message.php +++ b/mod/message.php @@ -384,7 +384,7 @@ function message_content(App $a) $from_name_e = $message['from-name']; $subject_e = $message['title']; - $body_e = Smilies::replace(BBCode::convert($message['body'])); + $body_e = BBCode::convert($message['body']); $to_name_e = $message['name']; $contact = Contact::getDetailsByURL($message['from-url']); diff --git a/src/Content/Smilies.php b/src/Content/Smilies.php index 57d14633a..2bf232d09 100644 --- a/src/Content/Smilies.php +++ b/src/Content/Smilies.php @@ -267,17 +267,18 @@ class Smilies * @return string HTML Output * * @throws \Friendica\Network\HTTPException\InternalServerErrorException - * @todo : Rework because it doesn't work correctly */ private static function pregHeart($x) { if (strlen($x[1]) == 1) { return $x[0]; } + $t = ''; for ($cnt = 0; $cnt < strlen($x[1]); $cnt ++) { - $t .= '<3'; + $t .= '❤'; } + $r = str_replace($x[0], $t, $x[0]); return $r; } diff --git a/src/Content/Text/BBCode.php b/src/Content/Text/BBCode.php index e08d60579..da09e13dd 100644 --- a/src/Content/Text/BBCode.php +++ b/src/Content/Text/BBCode.php @@ -1395,6 +1395,7 @@ class BBCode extends BaseObject // This is actually executed in Item::prepareBody() + $nosmile = strpos($text, '[nosmile]') !== false; $text = str_replace('[nosmile]', '', $text); // Check for font change text @@ -1572,7 +1573,7 @@ class BBCode extends BaseObject } // Replace non graphical smilies for external posts - if ($simple_html) { + if (!$nosmile && !$for_plaintext) { $text = Smilies::replace($text); } diff --git a/tests/src/Content/Text/BBCodeTest.php b/tests/src/Content/Text/BBCodeTest.php index 3efb40893..6ae28e8c2 100644 --- a/tests/src/Content/Text/BBCodeTest.php +++ b/tests/src/Content/Text/BBCodeTest.php @@ -40,6 +40,9 @@ class BBCodeTest extends MockedTest $this->configMock->shouldReceive('get') ->with('system', 'url') ->andReturn('friendica.local'); + $this->configMock->shouldReceive('get') + ->with('system', 'no_smilies') + ->andReturn(false); $this->mockL10nT(); }