From 74707215cea786b64b3e69a57f7ae024f2b93044 Mon Sep 17 00:00:00 2001 From: Marc Alexander Date: Sun, 5 Apr 2015 16:38:00 +0200 Subject: [PATCH 1/2] Add failing tests for smiley with square parentheses and dot --- src/Nickvergessen/TrimMessage/Tests/TrimTest.php | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/Nickvergessen/TrimMessage/Tests/TrimTest.php b/src/Nickvergessen/TrimMessage/Tests/TrimTest.php index d182ac8..6f8289f 100644 --- a/src/Nickvergessen/TrimMessage/Tests/TrimTest.php +++ b/src/Nickvergessen/TrimMessage/Tests/TrimTest.php @@ -45,6 +45,10 @@ public function trim_message_data() 'message' => 'h[geek]h[geek]h', 'bbcode_uid' => '2sda49fx', ), + array( + 'message' => '[foo.bar]h[foo.bar]h', + 'bbcode_uid' => '2sda49fx', + ), ); $cases = array( @@ -199,6 +203,14 @@ public function trim_message_data() 'message_set' => 6, 'length' => 4, 'trimmed' => true, 'expected' => 'foo[url:2sda49fx]https://github.com/nickvergessen/phpbb3-tools-trim-message[/url:2sda49fx]b [...]', ), + + /** + * Breaking withing smiley with dot and square parentheses + */ + array( + 'message_set' => 8, 'length' => 12, 'trimmed' => false, + 'expected' => '[foo.bar]h[foo.bar]h', + ), ); $test_cases = array(); From 8f8121d92c8c81834627057cc7acc3c4cd55e1be Mon Sep 17 00:00:00 2001 From: Marc Alexander Date: Sun, 5 Apr 2015 17:12:07 +0200 Subject: [PATCH 2/2] Correctly treat smileys with square parentheses at start of message --- src/Nickvergessen/TrimMessage/PhpbbBbcodes.php | 2 +- src/Nickvergessen/TrimMessage/Tests/TrimTest.php | 10 +++++++--- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/src/Nickvergessen/TrimMessage/PhpbbBbcodes.php b/src/Nickvergessen/TrimMessage/PhpbbBbcodes.php index 906de75..4bd2257 100644 --- a/src/Nickvergessen/TrimMessage/PhpbbBbcodes.php +++ b/src/Nickvergessen/TrimMessage/PhpbbBbcodes.php @@ -498,7 +498,7 @@ public function filter_bbcode_tag($bbcode_tag, $strip_information = true, $strip protected function replace_square_brackets_in_smilies() { // Replace all [ that are inside of <> because they belong to smilies - if (utf8_strpos($this->message, '<')) + if (utf8_strpos($this->message, '<') !== false) { $this->bracket_replacement = '{' . md5($this->message) . '}'; while (utf8_strpos($this->message, $this->bracket_replacement) !== false) diff --git a/src/Nickvergessen/TrimMessage/Tests/TrimTest.php b/src/Nickvergessen/TrimMessage/Tests/TrimTest.php index 6f8289f..3896989 100644 --- a/src/Nickvergessen/TrimMessage/Tests/TrimTest.php +++ b/src/Nickvergessen/TrimMessage/Tests/TrimTest.php @@ -46,7 +46,7 @@ public function trim_message_data() 'bbcode_uid' => '2sda49fx', ), array( - 'message' => '[foo.bar]h[foo.bar]h', + 'message' => '[foo.bar]h[foo.bar]h foo bar', 'bbcode_uid' => '2sda49fx', ), ); @@ -208,8 +208,12 @@ public function trim_message_data() * Breaking withing smiley with dot and square parentheses */ array( - 'message_set' => 8, 'length' => 12, 'trimmed' => false, - 'expected' => '[foo.bar]h[foo.bar]h', + 'message_set' => 8, 'length' => 20, 'trimmed' => false, + 'expected' => '[foo.bar]h[foo.bar]h foo bar', + ), + array( + 'message_set' => 8, 'length' => 10, 'trimmed' => true, + 'expected' => '[foo.bar]h [...]', ), );