From 25191bc31187f6381ad9fc690b653414ea3bc6d4 Mon Sep 17 00:00:00 2001 From: Zachary Durber Date: Wed, 7 Jan 2015 15:41:22 +0800 Subject: [PATCH] MDL-48546 filters: Split on all tags for multimedia filter check. --- filter/mediaplugin/filter.php | 2 +- filter/mediaplugin/tests/filter_test.php | 13 +++++++++++++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/filter/mediaplugin/filter.php b/filter/mediaplugin/filter.php index b71cb4989db..0b1dce6e099 100644 --- a/filter/mediaplugin/filter.php +++ b/filter/mediaplugin/filter.php @@ -69,7 +69,7 @@ class filter_mediaplugin extends moodle_text_filter { $this->trusted = !empty($options['noclean']) or !empty($CFG->allowobjectembed); // Looking for tags. - $matches = preg_split('/(]*>)/i', $text, -1, PREG_SPLIT_NO_EMPTY | PREG_SPLIT_DELIM_CAPTURE); + $matches = preg_split('/(<[^>]*>)/i', $text, -1, PREG_SPLIT_NO_EMPTY | PREG_SPLIT_DELIM_CAPTURE); if (!$matches) { return $text; diff --git a/filter/mediaplugin/tests/filter_test.php b/filter/mediaplugin/tests/filter_test.php index 0148d4a8d87..0d3175f34e6 100644 --- a/filter/mediaplugin/tests/filter_test.php +++ b/filter/mediaplugin/tests/filter_test.php @@ -100,6 +100,15 @@ class filter_mediaplugin_testcase extends advanced_testcase { $insertpoint = strrpos($longurl, 'http://'); $longurl = substr_replace($longurl, 'http://pushover4096chars', $insertpoint, 0); + $originalurl = '

Some text.

' .
+            'Valid link
';
+        $paddedurl = str_pad($originalurl, 6000, 'z');
+        $validpaddedurl = '

Some text.


+
+
';
+        $validpaddedurl = str_pad($validpaddedurl, 6000 + (strlen($validpaddedurl) - strlen($originalurl)), 'z');
+
         $invalidtexts = array(
             'href="http://moodle.org/testfile/test.mp3"',
             'test test',
@@ -132,5 +141,9 @@ class filter_mediaplugin_testcase extends advanced_testcase {
         $filter = $filterplugin->filter($precededlongurl);
         $this->assertEquals(1, substr_count($filter, 'M.util.add_audio_player'));
         $this->assertContains($longurl, $filter);
+
+        // Testing for cases where: to be filtered content has 6+ text afterwards.
+        $filter = $filterplugin->filter($paddedurl);
+        $this->assertEquals($validpaddedurl, $filter, $msg);
     }
 }