From a44711e57478c6f9d1fa38582deae72cad240560 Mon Sep 17 00:00:00 2001 From: JoshyPHP Date: Mon, 6 Jul 2015 19:17:40 +0200 Subject: [ticket/13990] Reparse markup inside of forum rules/description PHPBB3-13990 --- phpBB/phpbb/textreparser/base.php | 25 ++++++++++++++++------ .../textreparser/plugins/forum_description.php | 1 + phpBB/phpbb/textreparser/plugins/forum_rules.php | 1 + .../textreparser/plugins/group_description.php | 1 + phpBB/phpbb/textreparser/plugins/poll_option.php | 2 +- phpBB/phpbb/textreparser/plugins/poll_title.php | 2 +- 6 files changed, 23 insertions(+), 9 deletions(-) (limited to 'phpBB/phpbb/textreparser') diff --git a/phpBB/phpbb/textreparser/base.php b/phpBB/phpbb/textreparser/base.php index 87a4268d0d..ed6c2376c7 100644 --- a/phpBB/phpbb/textreparser/base.php +++ b/phpBB/phpbb/textreparser/base.php @@ -47,11 +47,22 @@ abstract class base implements reparser_interface { if (!isset($record['enable_bbcode'], $record['enable_smilies'], $record['enable_magic_url'])) { - $record += array( - 'enable_bbcode' => $this->guess_bbcodes($record), - 'enable_smilies' => $this->guess_smilies($record), - 'enable_magic_url' => $this->guess_magic_url($record), - ); + if (isset($record['options'])) + { + $record += array( + 'enable_bbcode' => (bool) ($record['options'] & OPTION_FLAG_BBCODE), + 'enable_smilies' => (bool) ($record['options'] & OPTION_FLAG_SMILIES), + 'enable_magic_url' => (bool) ($record['options'] & OPTION_FLAG_LINKS), + ); + } + else + { + $record += array( + 'enable_bbcode' => $this->guess_bbcodes($record), + '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 @@ -92,7 +103,7 @@ abstract class base implements reparser_interface } } - if (substr($record['text'], 0, 2) == '[/url] @@ -124,7 +135,7 @@ abstract class base implements reparser_interface } } - if (substr($record['text'], 0, 2) == '\\[/\\w+\\])', $match); diff --git a/phpBB/phpbb/textreparser/plugins/forum_description.php b/phpBB/phpbb/textreparser/plugins/forum_description.php index 7798e4b20b..0302dc3082 100644 --- a/phpBB/phpbb/textreparser/plugins/forum_description.php +++ b/phpBB/phpbb/textreparser/plugins/forum_description.php @@ -24,6 +24,7 @@ class forum_description extends \phpbb\textreparser\row_based_plugin 'id' => 'forum_id', 'text' => 'forum_desc', 'bbcode_uid' => 'forum_desc_uid', + 'options' => 'forum_desc_options', ); } diff --git a/phpBB/phpbb/textreparser/plugins/forum_rules.php b/phpBB/phpbb/textreparser/plugins/forum_rules.php index 57c666a556..ce550225f2 100644 --- a/phpBB/phpbb/textreparser/plugins/forum_rules.php +++ b/phpBB/phpbb/textreparser/plugins/forum_rules.php @@ -24,6 +24,7 @@ class forum_rules extends \phpbb\textreparser\row_based_plugin 'id' => 'forum_id', 'text' => 'forum_rules', 'bbcode_uid' => 'forum_rules_uid', + 'options' => 'forum_rules_options', ); } diff --git a/phpBB/phpbb/textreparser/plugins/group_description.php b/phpBB/phpbb/textreparser/plugins/group_description.php index ddd0e1d1c5..3346ccf25e 100644 --- a/phpBB/phpbb/textreparser/plugins/group_description.php +++ b/phpBB/phpbb/textreparser/plugins/group_description.php @@ -24,6 +24,7 @@ class group_description extends \phpbb\textreparser\row_based_plugin 'id' => 'group_id', 'text' => 'group_desc', 'bbcode_uid' => 'group_desc_uid', + 'options' => 'group_desc_options', ); } diff --git a/phpBB/phpbb/textreparser/plugins/poll_option.php b/phpBB/phpbb/textreparser/plugins/poll_option.php index 7b803146c4..44cacfae62 100644 --- a/phpBB/phpbb/textreparser/plugins/poll_option.php +++ b/phpBB/phpbb/textreparser/plugins/poll_option.php @@ -48,7 +48,7 @@ class poll_option extends \phpbb\textreparser\base */ protected function get_records_by_range($min_id, $max_id) { - $sql = 'SELECT o.topic_id, o.poll_option_id, o.poll_option_text AS text, p.bbcode_uid + $sql = 'SELECT o.topic_id, o.poll_option_id, o.poll_option_text AS text, p.enable_bbcode, p.enable_smilies, p.enable_magic_url, p.bbcode_uid FROM ' . POLL_OPTIONS_TABLE . ' o, ' . TOPICS_TABLE . ' t, ' . POSTS_TABLE . ' p WHERE o.topic_id BETWEEN ' . $min_id . ' AND ' . $max_id .' AND t.topic_id = o.topic_id diff --git a/phpBB/phpbb/textreparser/plugins/poll_title.php b/phpBB/phpbb/textreparser/plugins/poll_title.php index b447004527..038ae0c366 100644 --- a/phpBB/phpbb/textreparser/plugins/poll_title.php +++ b/phpBB/phpbb/textreparser/plugins/poll_title.php @@ -31,7 +31,7 @@ class poll_title extends \phpbb\textreparser\row_based_plugin */ protected function get_records_by_range_query($min_id, $max_id) { - $sql = 'SELECT t.topic_id AS id, t.poll_title AS text, p.bbcode_uid + $sql = 'SELECT t.topic_id AS id, t.poll_title AS text, p.enable_bbcode, p.enable_smilies, p.enable_magic_url, p.bbcode_uid FROM ' . TOPICS_TABLE . ' t, ' . POSTS_TABLE . ' p WHERE t.topic_id BETWEEN ' . $min_id . ' AND ' . $max_id .' AND t.poll_max_options > 0 -- cgit v1.2.1