From 6b643552272b5429534b82cfe764432809c0a987 Mon Sep 17 00:00:00 2001 From: Rodrigo Queipo Date: Fri, 2 Dec 2016 21:05:36 -0300 Subject: [PATCH] Fix wrongly escaped regular expressions. --- classes/pluginbase/dataformfieldrenderer.php | 6 +++--- classes/pluginbase/dataformview.php | 8 +++++--- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/classes/pluginbase/dataformfieldrenderer.php b/classes/pluginbase/dataformfieldrenderer.php index 2d3fe48..2d0d400 100644 --- a/classes/pluginbase/dataformfieldrenderer.php +++ b/classes/pluginbase/dataformfieldrenderer.php @@ -259,11 +259,11 @@ public function parse_template(&$mform, $definitions) { $field = $this->_field; $patterns = array_keys($definitions); + foreach($patterns as &$pattern) { + $pattern = preg_quote($pattern, '/'); + } $delims = implode('|', $patterns); - // Escape [ and ] and the pattern rule character *. - $delims = quotemeta($delims); - $parts = preg_split("/($delims)/", $field->label, null, PREG_SPLIT_DELIM_CAPTURE); $htmlparts = ''; foreach ($parts as $part) { diff --git a/classes/pluginbase/dataformview.php b/classes/pluginbase/dataformview.php index f1ee692..d5dea4c 100644 --- a/classes/pluginbase/dataformview.php +++ b/classes/pluginbase/dataformview.php @@ -1071,9 +1071,11 @@ protected function get_field_definitions($entry, $options) { * @param array $patterns array of arrays of pattern replacement pairs */ protected function split_tags($patterns, $subject) { + foreach($patterns as &$pattern) { + $pattern = preg_quote($pattern, '/'); + } + $delims = implode('|', $patterns); - // Escape [ and ] and the pattern rule character *. - $delims = quotemeta($delims); $elements = preg_split("/($delims)/", $subject, null, PREG_SPLIT_DELIM_CAPTURE); @@ -1219,7 +1221,7 @@ public function get_entries_display(array $options = null) { $pluginfileurl = isset($options['pluginfileurl']) ? $options['pluginfileurl'] : null; if ($pluginfileurl) { $pluginfilepath = \moodle_url::make_file_url("/pluginfile.php", "/{$this->df->context->id}/mod_dataform/content"); - $pattern = str_replace('/', '\/', $pluginfilepath); + $pattern = preg_quote($pluginfilepath, '/'); $pattern = "/$pattern\/\d+\//"; $html = preg_replace($pattern, $pluginfileurl, $html); }