diff --git a/phpBB/phpbb/textformatter/s9e/utils.php b/phpBB/phpbb/textformatter/s9e/utils.php index df4ae4b9ec..29dcfcdf58 100644 --- a/phpBB/phpbb/textformatter/s9e/utils.php +++ b/phpBB/phpbb/textformatter/s9e/utils.php @@ -26,7 +26,7 @@ class utils implements \phpbb\textformatter\utils_interface // Insert a space before and then remove formatting $text = preg_replace('#<[es]>#', ' $0', $text); - return \s9e\TextFormatter\Unparser::removeFormatting($text); + return \s9e\TextFormatter\Utils::removeFormatting($text); } /** @@ -34,18 +34,7 @@ class utils implements \phpbb\textformatter\utils_interface */ public function remove_bbcode($text, $bbcode_name, $depth = 0) { - $dom = new \DOMDocument; - $dom->loadXML($text); - - $xpath = new \DOMXPath($dom); - $nodes = $xpath->query(str_repeat('//' . strtoupper($bbcode_name), 1 + $depth)); - - foreach ($nodes as $node) - { - $node->parentNode->removeChild($node); - } - - return $dom->saveXML($dom->documentElement); + return \s9e\TextFormatter\Utils::removeTag($text, strtoupper($bbcode_name), $depth); } /** @@ -53,7 +42,7 @@ class utils implements \phpbb\textformatter\utils_interface */ public function remove_formatting($text) { - return \s9e\TextFormatter\Unparser::removeFormatting($text); + return \s9e\TextFormatter\Utils::removeFormatting($text); } /** diff --git a/tests/text_formatter/s9e/utils_test.php b/tests/text_formatter/s9e/utils_test.php index 3de9b707c5..6f0ef54182 100644 --- a/tests/text_formatter/s9e/utils_test.php +++ b/tests/text_formatter/s9e/utils_test.php @@ -109,52 +109,41 @@ class phpbb_textformatter_s9e_utils_test extends phpbb_test_case public function test_remove_bbcode($original, $name, $depth, $expected) { $container = $this->get_test_case_helpers()->set_s9e_services(); + $parser = $container->get('text_formatter.parser'); $utils = $container->get('text_formatter.utils'); - $this->assertSame($expected, $utils->remove_bbcode($original, $name, $depth)); + $parsed = $parser->parse($original); + $actual = $utils->unparse($utils->remove_bbcode($parsed, $name, $depth)); + + $this->assertSame($expected, $actual); } public function get_remove_bbcode_tests() { return array( array( - 'Plain text', + 'Plain text', 'b', 1, - 'Plain text' + 'Plain text' ), array( - '[quote="u0"][quote="u1"][quote="u2"]q2[/quote] -q1[/quote] -q0[/quote] -[b]bold[/b]', + '[quote="u0"][quote="u1"][quote="u2"]q2[/quote]q1[/quote]q0[/quote][b]bold[/b]', 'quote', 0, - ' -[b]bold[/b]' + '[b]bold[/b]', ), array( - '[quote="u0"][quote="u1"][quote="u2"]q2[/quote] -q1[/quote] -q0[/quote] -[b]bold[/b]', + '[quote="u0"][quote="u1"][quote="u2"]q2[/quote]q1[/quote]q0[/quote][b]bold[/b]', 'quote', 1, - '[quote="u0"] -q0[/quote] -[b]bold[/b]' + '[quote="u0"]q0[/quote][b]bold[/b]', ), array( - '[quote="u0"][quote="u1"][quote="u2"]q2[/quote] -q1[/quote] -q0[/quote] -[b]bold[/b]', + '[quote="u0"][quote="u1"][quote="u2"]q2[/quote]q1[/quote]q0[/quote][b]bold[/b]', 'quote', 2, - '[quote="u0"][quote="u1"] -q1[/quote] -q0[/quote] -[b]bold[/b]' + '[quote="u0"][quote="u1"]q1[/quote]q0[/quote][b]bold[/b]', ), ); }