diff --git a/phpBB/phpbb/textreparser/base.php b/phpBB/phpbb/textreparser/base.php index f3f31ca320..2d4a4171af 100644 --- a/phpBB/phpbb/textreparser/base.php +++ b/phpBB/phpbb/textreparser/base.php @@ -29,6 +29,38 @@ abstract class base implements reparser_interface */ abstract protected function get_records($min_id, $max_id); + /** + * Add fields to given record, if applicable + * + * The enable_* fields are not always saved to the database. Sometimes we need to guess their + * original value based on the text content or possibly other fields + * + * @param array $record Original record + * @return array Complete record + */ + protected function add_missing_fields(array $record) + { + if (!isset($record['enable_bbcode'], $record['enable_smilies'], $record['enable_magic_url'])) + { + $record += array( + 'enable_bbcode' => !empty($record['bbcode_uid']), + 'enable_smilies' => $this->guess_smilies($record), + 'enable_magic_url' => $this->guess_magic_url($record), + ); + } + + // Those BBCodes are disabled based on context and user permissions and that value is never + // stored in the database. Here we test whether they were used in the original text. + $bbcodes = array('flash', 'img', 'quote', 'url'); + foreach ($bbcodes as $bbcode) + { + $field_name = 'enable_' . $bbcode . '_bbcode'; + $record[$field_name] = $this->guess_bbcode($record, $bbcode); + } + + return $record; + } + /** * Guess whether given BBCode is in use in given record * @@ -120,7 +152,11 @@ abstract class base implements reparser_interface $flags, $unparsed['enable_bbcode'], $unparsed['enable_magic_url'], - $unparsed['enable_smilies'] + $unparsed['enable_smilies'], + $unparsed['enable_img_bbcode'], + $unparsed['enable_flash_bbcode'], + $unparsed['enable_quote_bbcode'], + $unparsed['enable_url_bbcode'] ); // Save the new text if it has changed diff --git a/phpBB/phpbb/textreparser/row_based_plugin.php b/phpBB/phpbb/textreparser/row_based_plugin.php index 80525a404e..e39ec4d5d3 100644 --- a/phpBB/phpbb/textreparser/row_based_plugin.php +++ b/phpBB/phpbb/textreparser/row_based_plugin.php @@ -44,38 +44,6 @@ abstract class row_based_plugin extends base */ abstract public function get_table_name(); - /** - * Add fields to given row, if applicable - * - * The enable_* fields are not always saved to the database. Sometimes we need to guess their - * original value based on the text content or possibly other fields - * - * @param array $row Original row - * @return array Complete row - */ - protected function add_missing_fields(array $row) - { - if (!isset($row['enable_bbcode'], $row['enable_smilies'], $row['enable_magic_url'])) - { - $row += array( - 'enable_bbcode' => !empty($row['bbcode_uid']), - 'enable_smilies' => $this->guess_smilies($row), - 'enable_magic_url' => $this->guess_magic_url($row), - ); - } - - // Those BBCodes are disabled based on context and user permissions and that value is never - // stored in the database. Here we test whether they were used in the original text. - $bbcodes = array('flash', 'img', 'quote', 'url'); - foreach ($bbcodes as $bbcode) - { - $field_name = 'enable_' . $bbcode; - $row[$field_name] = $this->guess_bbcode($row, $bbcode); - } - - return $row; - } - /** * {@inheritdoc} */ diff --git a/tests/text_reparser/fixtures/privmsgs.xml b/tests/text_reparser/fixtures/privmsgs.xml new file mode 100644 index 0000000000..9ca49a2af8 --- /dev/null +++ b/tests/text_reparser/fixtures/privmsgs.xml @@ -0,0 +1,73 @@ + + + + msg_id + enable_bbcode + enable_smilies + enable_magic_url + message_text + bbcode_uid + to_address + bcc_address + + 1 + 1 + 1 + 1 + This row should be [b]ignored[/b] + abcd1234 + + + + + 2 + 0 + 0 + 0 + [b]Not bold[/b] :) http://example.org + abcd1234 + + + + + 3 + 1 + 0 + 0 + [b:abcd1234]Bold[/b:abcd1234] :) http://example.org + abcd1234 + + + + + 4 + 0 + 1 + 0 + :) http://example.org]]> + abcd1234 + + + + + 5 + 0 + 0 + 1 + http://example.org]]> + abcd1234 + + + + + 1000 + 1 + 1 + 1 + This row should be [b]ignored[/b] + abcd1234 + + + +
+
diff --git a/tests/text_reparser/pm_text_test.php b/tests/text_reparser/pm_text_test.php new file mode 100644 index 0000000000..6b409d27e3 --- /dev/null +++ b/tests/text_reparser/pm_text_test.php @@ -0,0 +1,26 @@ + +* @license GNU General Public License, version 2 (GPL-2.0) +* +* For full copyright and license information, please see +* the docs/CREDITS.txt file. +* +*/ +include_once __DIR__ . '/test_row_based_plugin.php'; + +class phpbb_textreparser_pm_text_test extends phpbb_textreparser_test_row_based_plugin +{ + public function getDataSet() + { + return $this->createXMLDataSet(__DIR__ . '/fixtures/privmsgs.xml'); + } + + public function get_reparser() + { + return new \phpbb\textreparser\plugins\pm_text($this->db); + } +}