aboutsummaryrefslogtreecommitdiffstats
path: root/phpBB/includes/message_parser.php
diff options
context:
space:
mode:
authorMeik Sievertsen <acydburn@phpbb.com>2006-06-22 15:14:03 +0000
committerMeik Sievertsen <acydburn@phpbb.com>2006-06-22 15:14:03 +0000
commit725b21f2d206efb4b34eb95ec3329bc81f66b805 (patch)
tree7de41ee058c21e1884bc5d2292f5e7014a587890 /phpBB/includes/message_parser.php
parentdaa0435614af7bed95e71f3b11aa2c372df3958d (diff)
downloadforums-725b21f2d206efb4b34eb95ec3329bc81f66b805.tar
forums-725b21f2d206efb4b34eb95ec3329bc81f66b805.tar.gz
forums-725b21f2d206efb4b34eb95ec3329bc81f66b805.tar.bz2
forums-725b21f2d206efb4b34eb95ec3329bc81f66b805.tar.xz
forums-725b21f2d206efb4b34eb95ec3329bc81f66b805.zip
time to squash some bugs
git-svn-id: file:///svn/phpbb/trunk@6114 89ea8834-ac86-4346-8a33-228a782c2dd0
Diffstat (limited to 'phpBB/includes/message_parser.php')
-rw-r--r--phpBB/includes/message_parser.php49
1 files changed, 33 insertions, 16 deletions
diff --git a/phpBB/includes/message_parser.php b/phpBB/includes/message_parser.php
index a4d003c3a2..d74a58524f 100644
--- a/phpBB/includes/message_parser.php
+++ b/phpBB/includes/message_parser.php
@@ -79,6 +79,23 @@ class bbcode_firstpass extends bbcode
}
/**
+ * Prepare some bbcodes for better parsing
+ */
+ function prepare_bbcodes()
+ {
+ // Add newline at the end and in front of each quote block to prevent parsing errors (urls, smilies, etc.)
+ if (strpos($this->message, '[quote') !== false)
+ {
+ $in = str_replace("\r\n", "\n", $this->message);
+
+ $this->message = preg_replace(array('#\[quote(=&quot;.*?&quot;)?\]([^\n])#is', '#([^\n])\[\/quote\]#is'), array("[quote\\1]\n\\2", "\\1\n[/quote]"), $this->message);
+ $this->message = preg_replace(array('#\[quote(=&quot;.*?&quot;)?\]([^\n])#is', '#([^\n])\[\/quote\]#is'), array("[quote\\1]\n\\2", "\\1\n[/quote]"), $this->message);
+ }
+
+ // Add other checks which needs to be placed before actually parsing anything (be it bbcodes, smilies, urls...)
+ }
+
+ /**
* Init bbcode data for later parsing
*/
function bbcode_init()
@@ -565,12 +582,6 @@ class bbcode_firstpass extends bbcode
$tok = ']';
$out = '[';
- // Add newline at the end and in front of each quote block to prevent parsing errors (urls, smilies, etc.)
- $in = preg_replace(array('#\[quote(=&quot;.*?&quot;)?\]([^\n])#is', '#([^\n])\[\/quote\]#is'), array("[quote\\1]\n\\2", "\\1\n[/quote]"), $in);
- $in = preg_replace(array('#\[quote(=&quot;.*?&quot;)?\]([^\n])#is', '#([^\n])\[\/quote\]#is'), array("[quote\\1]\n\\2", "\\1\n[/quote]"), $in);
-
- $in = str_replace("\r\n", "\n", str_replace('\"', '"', trim($in)));
-
$in = substr($in, 1);
$close_tags = $error_ary = array();
$buffer = '';
@@ -897,15 +908,7 @@ class parse_message extends bbcode_firstpass
}
}
- // Parse smilies
- if ($allow_smilies)
- {
- $this->smilies($config['max_' . $mode . '_smilies']);
- }
-
- $num_urls = 0;
-
- // Parse BBCode
+ // Prepare BBcode (just prepares some tags for better parsing)
if ($allow_bbcode && strpos($this->message, '[') !== false)
{
$this->bbcode_init();
@@ -917,8 +920,22 @@ class parse_message extends bbcode_firstpass
$this->bbcodes[$bool]['disabled'] = true;
}
}
- $this->parse_bbcode();
+ $this->prepare_bbcodes();
+ }
+
+ // Parse smilies
+ if ($allow_smilies)
+ {
+ $this->smilies($config['max_' . $mode . '_smilies']);
+ }
+
+ $num_urls = 0;
+
+ // Parse BBCode
+ if ($allow_bbcode && strpos($this->message, '[') !== false)
+ {
+ $this->parse_bbcode();
$num_urls += $this->parsed_items['url'];
}