From 719bd715e1212afe2ed69009350b45874b60cd93 Mon Sep 17 00:00:00 2001 From: alec Date: Wed, 20 Aug 2008 06:33:40 +0000 Subject: #1485286: don't use /e modifier with preg_replace() git-svn-id: https://svn.roundcube.net/trunk@1660 208e9e7b-5314-0410-a742-e7e81cd9613c --- roundcubemail/program/include/rcube_template.php | 27 +++++++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) (limited to 'roundcubemail/program/include/rcube_template.php') diff --git a/roundcubemail/program/include/rcube_template.php b/roundcubemail/program/include/rcube_template.php index fb6541153..37929de2d 100755 --- a/roundcubemail/program/include/rcube_template.php +++ b/roundcubemail/program/include/rcube_template.php @@ -484,7 +484,32 @@ class rcube_template extends rcube_html_page */ private function parse_xml($input) { - return preg_replace('/]+)>/Uie', "\$this->xml_command('\\1', '\\2')", $input); + return preg_replace_callback('/]+)>/Ui', array($this, 'xml_command_callback'), $input); + } + + + /** + * This is a callback function for preg_replace_callback (see #1485286) + * It's only purpose is to reconfigure parameters for xml_command, so that the signature isn't disturbed + */ + private function xml_command_callback($matches) + { + if (isset($matches[2])) { + $str_attrib = $matches[2]; + } else { + $str_attrib = ''; + } + + if (isset($matches[3])) { + $add_attrib = $matches[3]; + } else { + $add_attrib = array(); + } + + $command = $matches[1]; + //matches[0] is the entire matched portion of the string + + return $this->xml_command($command, $str_attrib, $add_attrib); } -- cgit v1.2.3