aboutsummaryrefslogtreecommitdiffstats
path: root/phpBB/includes/message_parser.php
diff options
context:
space:
mode:
authorrxu <rxu@mail.ru>2015-02-23 20:49:46 +0700
committerrxu <rxu@mail.ru>2015-05-07 22:01:10 +0700
commitaa1b427e45024b94f06d11f6a6ac4e1d602cb03e (patch)
tree617ba8402c929c7bbfbdf478c8d5708fe513ae20 /phpBB/includes/message_parser.php
parent0bc352ea7e15c2a9b2cf4b71cf0653d49cd6ac42 (diff)
downloadforums-aa1b427e45024b94f06d11f6a6ac4e1d602cb03e.tar
forums-aa1b427e45024b94f06d11f6a6ac4e1d602cb03e.tar.gz
forums-aa1b427e45024b94f06d11f6a6ac4e1d602cb03e.tar.bz2
forums-aa1b427e45024b94f06d11f6a6ac4e1d602cb03e.tar.xz
forums-aa1b427e45024b94f06d11f6a6ac4e1d602cb03e.zip
[ticket/13648] Allow extensions using custom bbcode validation methods
PHPBB3-13648
Diffstat (limited to 'phpBB/includes/message_parser.php')
-rw-r--r--phpBB/includes/message_parser.php35
1 files changed, 35 insertions, 0 deletions
diff --git a/phpBB/includes/message_parser.php b/phpBB/includes/message_parser.php
index 63e027cd66..42ca9bf09d 100644
--- a/phpBB/includes/message_parser.php
+++ b/phpBB/includes/message_parser.php
@@ -128,6 +128,9 @@ class bbcode_firstpass extends bbcode
// [quote] in second position.
// To parse multiline URL we enable dotall option setting only for URL text
// but not for link itself, thus [url][/url] is not affected.
+ //
+ // To perform custom validation in extension, use $this->validate_bbcode_by_extension()
+ // method which accepts variable number of parameters
$this->bbcodes = array(
'code' => array('bbcode_id' => 8, 'regexp' => array('#\[code(?:=([a-z]+))?\](.+\[/code\])#uise' => "\$this->bbcode_code('\$1', '\$2')")),
'quote' => array('bbcode_id' => 0, 'regexp' => array('#\[quote(?:=&quot;(.*?)&quot;)?\](.+)\[/quote\]#uise' => "\$this->bbcode_quote('\$0')")),
@@ -1875,4 +1878,36 @@ class parse_message extends bbcode_firstpass
{
$this->mimetype_guesser = $mimetype_guesser;
}
+
+ /**
+ * Function to perform custom bbcode validation by extensions
+ * can be used in bbcode_init() to assign regexp replacement
+ * Example: 'regexp' => array('#\[b\](.*?)\[/b\]#uise' => "\$this->validate_bbcode_by_extension('\$1')")
+ *
+ * Accepts variable number of parameters
+ *
+ * @return mixed Validation result
+ */
+ public function validate_bbcode_by_extension()
+ {
+ global $phpbb_dispatcher;
+
+ $return = false;
+ $params_array = func_get_args();
+
+ /**
+ * Event to validate bbcode with the custom validating methods
+ * provided by extensions
+ *
+ * @event core.validate_bbcode_by_extension
+ * @var array params_array Array with the function parameters
+ * @var mixed return Validation result to return
+ *
+ * @since 3.1.5-RC1
+ */
+ $vars = array('params_array', 'return');
+ extract($phpbb_dispatcher->trigger_event('core.validate_bbcode_by_extension', compact($vars)));
+
+ return $return;
+ }
}