From 2619224c8a415efdef3a911270d683c4b93d1a14 Mon Sep 17 00:00:00 2001 From: nicolasconnault Date: Mon, 20 Aug 2007 08:40:46 +0000 Subject: [PATCH] MDL-10177 Applied lovely hack (not ugly!) suggested by Pablo. It's lovely because it solves an ugly design error in the previous code: modifying a parameter variable in the function body. --- filter/mediaplugin/filter.php | 31 ++++++++++++++++++++----------- 1 file changed, 20 insertions(+), 11 deletions(-) diff --git a/filter/mediaplugin/filter.php b/filter/mediaplugin/filter.php index e5de22f6ea..3af584dc2e 100644 --- a/filter/mediaplugin/filter.php +++ b/filter/mediaplugin/filter.php @@ -17,65 +17,74 @@ require_once($CFG->libdir.'/filelib.php'); + function mediaplugin_filter($courseid, $text) { global $CFG; include 'defaultsettings.php'; + // You should never modify parameters passed to a method or function, it's BAD practice. Create a copy instead. + // The reason is that you must always be able to refer to the original parameter that was passed. + // For this reason, I changed $text = preg_replace(..,..,$text) into $newtext = preg.... (NICOLAS CONNAULT) + // Thanks to Pablo Etcheverry for pointing this out! MDL-10177 + // We're using the UFO technique for flash to attain XHTML Strict 1.0 // See: http://www.bobbyvandersluis.com/ufo/ if ($CFG->filter_mediaplugin_enable_mp3) { $search = '/]*>.*?<\/a>/is'; - $text = preg_replace_callback($search, 'mediaplugin_filter_mp3_callback', $text); + $newtext = preg_replace_callback($search, 'mediaplugin_filter_mp3_callback', $text); } if ($CFG->filter_mediaplugin_enable_swf) { $search = '/]*>.*?<\/a>/is'; - $text = preg_replace_callback($search, 'mediaplugin_filter_swf_callback', $text); + $newtext = preg_replace_callback($search, 'mediaplugin_filter_swf_callback', $text); } if ($CFG->filter_mediaplugin_enable_flv) { $search = '/]*>.*?<\/a>/is'; - $text = preg_replace_callback($search, 'mediaplugin_filter_flv_callback', $text); + $newtext = preg_replace_callback($search, 'mediaplugin_filter_flv_callback', $text); } if ($CFG->filter_mediaplugin_enable_mov) { $search = '/]*>.*?<\/a>/is'; - $text = preg_replace_callback($search, 'mediaplugin_filter_qt_callback', $text); + $newtext = preg_replace_callback($search, 'mediaplugin_filter_qt_callback', $text); } if ($CFG->filter_mediaplugin_enable_wmv) { $search = '/]*>.*?<\/a>/is'; - $text = preg_replace_callback($search, 'mediaplugin_filter_wmp_callback', $text); + $newtext = preg_replace_callback($search, 'mediaplugin_filter_wmp_callback', $text); } if ($CFG->filter_mediaplugin_enable_mpg) { $search = '/]*>.*?<\/a>/is'; - $text = preg_replace_callback($search, 'mediaplugin_filter_qt_callback', $text); + $newtext = preg_replace_callback($search, 'mediaplugin_filter_qt_callback', $text); } if ($CFG->filter_mediaplugin_enable_avi) { $search = '/]*>.*?<\/a>/is'; - $text = preg_replace_callback($search, 'mediaplugin_filter_wmp_callback', $text); + $newtext = preg_replace_callback($search, 'mediaplugin_filter_wmp_callback', $text); } if ($CFG->filter_mediaplugin_enable_ram) { $search = '/]*>.*?<\/a>/is'; - $text = preg_replace_callback($search, 'mediaplugin_filter_real_callback', $text); + $newtext = preg_replace_callback($search, 'mediaplugin_filter_real_callback', $text); } if ($CFG->filter_mediaplugin_enable_rpm) { $search = '/]*>.*?<\/a>/is'; - $text = preg_replace_callback($search, 'mediaplugin_filter_real_callback', $text); + $newtext = preg_replace_callback($search, 'mediaplugin_filter_real_callback', $text); } if ($CFG->filter_mediaplugin_enable_rm) { $search = '/]*>.*?<\/a>/is'; - $text = preg_replace_callback($search, 'mediaplugin_filter_real_callback', $text); + $newtext = preg_replace_callback($search, 'mediaplugin_filter_real_callback', $text); } - return $text; + if (empty($newtext)) { + $newtext = $text; + } + return $newtext; } ///=========================== -- 2.39.5