From b3c6fa1e922b7c920a9a6e7210f941b0d2da17fe Mon Sep 17 00:00:00 2001 From: gbateson Date: Tue, 27 Nov 2007 08:46:40 +0000 Subject: [PATCH] MDL-12318 filter/mediaplugins/filter.php can no longer insert mediaplayers into javascript, so hotpot module now requires its own filter to mimic behavior of multimedia filter in Moodle 1.7 --- mod/hotpot/lib.php | 7 +- mod/hotpot/mediaplayers/moodle/filter.php | 258 ++++++++++++++++++++++ 2 files changed, 262 insertions(+), 3 deletions(-) create mode 100644 mod/hotpot/mediaplayers/moodle/filter.php diff --git a/mod/hotpot/lib.php b/mod/hotpot/lib.php index de00a3ffe7..bc893c1b70 100644 --- a/mod/hotpot/lib.php +++ b/mod/hotpot/lib.php @@ -1834,7 +1834,8 @@ class hotpot_xml_quiz extends hotpot_xml_tree { // make sure the Moodle media plugin is available global $CFG; - include_once "$CFG->dirroot/filter/mediaplugin/filter.php"; + //include_once "$CFG->dirroot/filter/mediaplugin/filter.php"; + include_once "$CFG->dirroot/mod/hotpot/mediaplayers/moodle/filter.php"; // exclude swf files from the filter //$CFG->filter_mediaplugin_ignore_swf = true; @@ -1861,7 +1862,7 @@ class hotpot_xml_quiz extends hotpot_xml_tree { $link_url = "/{$tagopen}a{$space}href=$quote($filepath)$quote.*?$tagclose.*?$tagreopen\/A$tagclose/is"; // extract tags - preg_match_all("/{$tagopen}object\s.*?{$tagclose}(.*?){$tagreopen}\/object{$tagclose}/is", $this->html, $objects); + preg_match_all("/{$tagopen}object\s.*?{$tagclose}(.*?)(?:{$tagreopen}\/object{$tagclose})+/is", $this->html, $objects); $i_max = count($objects[0]); for ($i=0; $i<$i_max; $i++) { @@ -1880,7 +1881,7 @@ class hotpot_xml_quiz extends hotpot_xml_tree { $url = preg_replace('/^[^?]*\?([^=]+=[^&]*&)*[^=]+=([^&]*)$/', '$2', $url, 1); $link = ''.$txt.''; - $new_object = mediaplugin_filter($this->filedir, $link); + $new_object = hotpot_mediaplayer_moodle($this, $link); $new_object = str_replace($link, '', $new_object); $new_object = str_replace('&', '&', $new_object); diff --git a/mod/hotpot/mediaplayers/moodle/filter.php b/mod/hotpot/mediaplayers/moodle/filter.php new file mode 100644 index 0000000000..ab77fb2b66 --- /dev/null +++ b/mod/hotpot/mediaplayers/moodle/filter.php @@ -0,0 +1,258 @@ +dirroot.'/filter/mediaplugin/defaultsettings.php'; + + if ($CFG->filter_mediaplugin_enable_mp3) { + static $c; + + if (empty($c)) { + if (!empty($THEME->filter_mediaplugin_colors)) { + $c = $THEME->filter_mediaplugin_colors; // You can set this up in your theme/xxx/config.php + } else { + $c = 'bgColour=000000&btnColour=ffffff&btnBorderColour=cccccc&iconColour=000000&iconOverColour=00cc00&trackColour=cccccc&handleColour=ffffff&loaderColour=ffffff&waitForPlay=yes&'; + } + } + // $c = htmlentities($c); // Commented out pending bug 5223 + $search = '/]*)>(.*?)<\/a>/is'; + + $replace = '\\0 wwwroot/filter/mediaplugin/mp3player.swf?src=\\2.mp3\" />"; + $replace .= ' '; + $replace .= ' '; + $replace .= ' '; + $replace .= " wwwroot/filter/mediaplugin/mp3player.swf?src=\\2.mp3\" "; + $replace .= " quality=\"high\" bgcolor=\"#333333\" width=\"90\" height=\"15\" name=\"mp3player\" "; + $replace .= ' type="application/x-shockwave-flash" '; + $replace .= ' flashvars="'.$c.'" '; + $replace .= ' pluginspage="http://www.macromedia.com/go/getflashplayer">'; + $replace .= ''; + $replace .= ' '; + + $text = preg_replace($search, $replace, $text); + } + + if ($CFG->filter_mediaplugin_enable_swf) { + $search = array( + '/]*)>(.*?)<\/a>/is', + '/]*)>(.*?)<\/a>/is' + ); + + $replace = array(); + + $replace[0] = '\\0

"; + $replace[0] .= ' '; + $replace[0] .= ' '; + $replace[0] .= " "; + $replace[1] .= ' '; + $replace[1] .= ' '; + $replace[1] .= " filter_mediaplugin_enable_flv) { + $search = '/]*)>(.*?)<\/a>/is'; + + $replace = '\\0 wwwroot/filter/mediaplugin/flvplayer.swf?file=\\2.flv\" />"; + $replace .= ' '; + $replace .= ' '; + $replace .= " wwwroot/filter/mediaplugin/flvplayer.swf?file=\\2.flv\" "; + $replace .= " quality=\"high\" bgcolor=\"#FFFFFF\" width=\"480\" height=\"360\" name=\"flvplayer\" "; + $replace .= ' type="application/x-shockwave-flash" '; + $replace .= ' pluginspage="http://www.macromedia.com/go/getflashplayer">'; + $replace .= ''; + $replace .= ' '; + + $text = preg_replace($search, $replace, $text); + } + + if ($CFG->filter_mediaplugin_enable_mov) { + $search = '/]*)>(.*?)<\/a>/is'; + + $replace = '\\0

"; + $replace .= ''; + $replace .= ''; + $replace .= ''; + $replace .= ''; + $replace .= "\nfilter_mediaplugin_enable_wmv) { + $search = '/]*)>(.*?)<\/a>/is'; + + $replace = '\\0

"; + $replace .= ''; + $replace .= ''; + $replace .= ''; + $replace .= ''; + $replace .= ''; + $replace .= ''; + $replace .= ''; + $replace .= ''; + $replace .= ''; + $replace .= "\nfilter_mediaplugin_enable_mpg) { + $search = '/]*)>(.*?)<\/a>/is'; + + $replace = '\\0

'; + $replace .= ''; + $replace .= ''; + $replace .= ''; + $replace .= ' '; + $replace .= '

'; + + $text = preg_replace($search, $replace, $text); + } + + if ($CFG->filter_mediaplugin_enable_avi) { + $search = '/]*)>(.*?)<\/a>/is'; + + $replace = '\\0

'; + $replace .= ''; + $replace .= ''; + $replace .= ''; + $replace .= ' '; + $replace .= '

'; + + $text = preg_replace($search, $replace, $text); + } + + if ($CFG->filter_mediaplugin_enable_ram) { + $search = '/]*)>(.*?)<\/a>/is'; + + $replace = '\\0

'; + $replace .= ''; + $replace .= ''; + $replace .= ''; + $replace .= ''; + $replace .= ''; + $replace .= ''; + $replace .= ''; + $replace .= '
'; + + $replace .= ''; + $replace .= ''; + $replace .= ''; + $replace .= ''; + $replace .= ''; + $replace .= ''; + $replace .= ''; + $replace .= '

'; + + $text = preg_replace($search, $replace, $text); + } + + if ($CFG->filter_mediaplugin_enable_rpm) { + $search = '/]*)>(.*?)<\/a>/is'; + + $replace = '\\0

'; + $replace .= ''; + $replace .= ''; + $replace .= ''; + $replace .= ''; + $replace .= ''; + $replace .= ''; + $replace .= ''; + $replace .= '
'; + + $replace .= ''; + $replace .= ''; + $replace .= ''; + $replace .= ''; + $replace .= ''; + $replace .= ''; + $replace .= ''; + $replace .= '

'; + + $text = preg_replace($search, $replace, $text); + } + + if ($CFG->filter_mediaplugin_enable_rm) { + $search = '/]*)>(.*?)<\/a>/is'; + + $replace = '\\0

'; + $replace .= ''; + $replace .= ''; + $replace .= ''; + $replace .= ''; + $replace .= ''; + $replace .= ''; + $replace .= ''; + $replace .= '
'; + + $replace .= ''; + $replace .= ''; + $replace .= ''; + $replace .= ''; + $replace .= ''; + $replace .= ''; + $replace .= ''; + $replace .= '

'; + + $text = preg_replace($search, $replace, $text); + } + + return $text; +} +?> \ No newline at end of file -- 2.39.5