]> git.mjollnir.org Git - moodle.git/commitdiff
filter/mediaplugin MDL-16650 Added a Youtube search/replace to turn links to Youtube...
authormoodler <moodler>
Tue, 25 Nov 2008 07:52:52 +0000 (07:52 +0000)
committermoodler <moodler>
Tue, 25 Nov 2008 07:52:52 +0000 (07:52 +0000)
Could use a quick security review!

filter/mediaplugin/filter.php
filter/mediaplugin/filtersettings.php
lang/en_utf8/admin.php

index 8b106a7695a4c54db40dcc1b8c056b6dff87d5fc..a6c2f50501e697d94b0707b98a72049ccf4d9bb1 100644 (file)
@@ -85,6 +85,11 @@ function mediaplugin_filter($courseid, $text) {
         $newtext = preg_replace_callback($search, 'mediaplugin_filter_real_callback', $newtext);
     }
 
+    if ($CFG->filter_mediaplugin_enable_youtube) {
+        $search = '/<a.*?href="([^<]*)youtube.com\/watch\?v=([^"]*)"[^>]*>(.*?)<\/a>/is';
+        $newtext = preg_replace_callback($search, 'mediaplugin_filter_youtube_callback', $newtext);
+    }
+
     if (is_null($newtext) or $newtext === $text) {
         // error or not filtered
         return $text;
@@ -202,6 +207,25 @@ document.write(\'<object classid="clsid:CFCDAA03-8BE4-11cf-B84B-0020AFBBCCFA" wi
 </script></span>';
 }
 
+/**
+ * Change links to Youtube into embedded Youtube videos
+ */
+function mediaplugin_filter_youtube_callback($link, $autostart=false) {
+
+    $site = addslashes_js($link[1]);
+    $url = addslashes_js($link[2]);
+    $info = addslashes_js($link[3]);
+
+    return '<div title="'.$info.'" class="mediaplugin mediaplugin_youtube">'.
+           '<object type="application/x-shockwave-flash" 
+                    data="'.$site.'youtube.com/v/'.$url.'&amp;fs=1&amp;rel=0" width="425" height="344">'.
+           '<param name="movie" value="http://'.$site.'youtube.com/v/'.$url.'&amp;fs=1&amp;rel=0" />'.
+           '<param name="FlashVars" value="playerMode=embedded" />'.
+           '<param name="wmode" value="transparent" />'.
+           '<param name="allowFullScreen" value="true" />'.
+           '</object></div>';
+}
+
 /**
  * Embed video using window media player if available
  */
index 40d5fb07fb21995c7e96a387ea677b5ef8319474..bb5893d066a82b7994b7f9564c9b7bdf4b236bdb 100644 (file)
@@ -20,4 +20,6 @@ $settings->add(new admin_setting_configcheckbox('filter_mediaplugin_enable_rpm',
 
 $settings->add(new admin_setting_configcheckbox('filter_mediaplugin_enable_rm', get_string('mediapluginrm','admin'), '', 1));
 
+$settings->add(new admin_setting_configcheckbox('filter_mediaplugin_enable_youtube', get_string('mediapluginyoutube','admin'), '', 1));
+
 ?>
index b2a8891930a197365bd2a08765e7e2e0007d2ca2..b0f5caf1ace67f084e91b8e8569f2704b0b6d3fc 100644 (file)
@@ -509,6 +509,7 @@ $string['mediapluginram'] = 'Enable .ram filter';
 $string['mediapluginrm'] = 'Enable .rm filter';
 $string['mediapluginrpm'] = 'Enable .rpm filter';
 $string['mediapluginswf'] = 'Enable .swf filter';
+$string['mediapluginyoutube'] = 'Enable YouTube links filter';
 $string['mediapluginswfnote'] = 'As a default security measure, normal users should not be allowed to embed swf flash files.';
 $string['mediapluginwmv'] = 'Enable .wmv filter';
 $string['memcachedhosts'] = 'memcached hosts';