function embed_media($text) { global $_base_path; if (preg_match("/\[media(\|[0-9]+\|[0-9]+)?\]*/", $text)==0){ return $text; } // 1. remove the spaces in [media] tag, otherwise, the next line converts URL inside [media] into <a> tag $text = preg_replace("/(\[media\])([\s]*)(.*)(\[\/media\])/", '$1$3$4', $text); $text = preg_replace("/(\[media\])(.*)([\s]*)(\[\/media\])/U", '$1$2$4', $text); $media_matches = array(); $media_replace = array(); // First, we search though the text for all different kinds of media defined by media tags and store the results in $media_matches. // Then the different replacements for the different media tags are stored in $media_replace. // Lastly, we loop through all $media_matches / $media_replaces. (We choose $media_replace as index because $media_matches is multi-dimensioned.) It is important that for each $media_matches there is a $media_replace with the same index. For each media match we check the width/height, or we use the default value of 425x350. We then replace the height/width/media1/media2 parameter placeholders in $media_replace with the correct ones, before running a str_replace on $text, replacing the given media with its correct replacement. // youtube videos if (is_mobile_device() && get_mobile_device_type() == BLACKBERRY_DEVICE) { preg_match_all("#\[media[0-9a-z\|]*\]http://([a-z0-9\.]*)?youtube.com/watch\?v=(.*)\[/media\]#iU",$text,$media_matches[],PREG_SET_ORDER); $media_replace[] = '<script type="text/javascript" src="'.$_base_path.'jscripts/ATutorYouTubeOnBlackberry.js"></script>'."\n". '<p id="blackberry_##MEDIA2##">'."\n". '<script'."\n". ' src="http://gdata.youtube.com/feeds/mobile/videos/##MEDIA2##?alt=json-in-script&callback=ATutor.course.showYouTubeOnBlackberry&format=6" [^]'."\n". ' type="text/javascript">'."\n". '</script>'; } else { preg_match_all("#\[media[0-9a-z\|]*\]http://([a-z0-9\.]*)?youtube.com/watch\?v=(.*)\[/media\]#iU",$text,$media_matches[],PREG_SET_ORDER); $media_replace[] = '<object width="##WIDTH##" height="##HEIGHT##"><param name="movie" value="http://##MEDIA1##youtube.com/v/##MEDIA2##"></param><embed src="http://##MEDIA1##youtube.com/v/##MEDIA2##" type="application/x-shockwave-flash" width="##WIDTH##" height="##HEIGHT##"></embed></object>'; } // .mpg preg_match_all("#\[media[0-9a-z\|]*\]([.\w\d]+[^\s\"]+).mpg\[/media\]#i",$text,$media_matches[],PREG_SET_ORDER); $media_replace[] = "<object data=\"##MEDIA1##.mpg\" type=\"video/mpeg\" width=\"##WIDTH##\" height=\"##HEIGHT##\"><param name=\"src\" value=\"##MEDIA1##.mpg\"><param name=\"autoplay\" value=\"false\"><param name=\"autoStart\" value=\"0\"><a href=\"##MEDIA1##.mpg\">##MEDIA1##.mpg</a></object>"; // .avi preg_match_all("#\[media[0-9a-z\|]*\]([.\w\d]+[^\s\"]+).avi\[/media\]#i",$text,$media_matches[],PREG_SET_ORDER); $media_replace[] = "<object data=\"##MEDIA1##.avi\" type=\"video/x-msvideo\" width=\"##WIDTH##\" height=\"##HEIGHT##\"><param name=\"src\" value=\"##MEDIA1##.avi\"><param name=\"autoplay\" value=\"false\"><param name=\"autoStart\" value=\"0\"><a href=\"##MEDIA1##.avi\">##MEDIA1##.avi</a></object>"; // .wmv preg_match_all("#\[media[0-9a-z\|]*\]([.\w\d]+[^\s\"]+).wmv\[/media\]#i",$text,$media_matches[],PREG_SET_ORDER); $media_replace[] = "<object data=\"##MEDIA1##.wmv\" type=\"video/x-ms-wmv\" width=\"##WIDTH##\" height=\"##HEIGHT##\"><param name=\"src\" value=\"##MEDIA1##.wmv\"><param name=\"autoplay\" value=\"false\"><param name=\"autoStart\" value=\"0\"><a href=\"##MEDIA1##.wmv\">##MEDIA1##.wmv</a></object>"; // .mov preg_match_all("#\[media[0-9a-z\|]*\]([.\w\d]+[^\s\"]+).mov\[/media\]#i",$text,$media_matches[],PREG_SET_ORDER); $media_replace[] = "<object classid=\"clsid:02BF25D5-8C17-4B23-BC80-D3488ABDDC6B\" codebase=\"http://www.apple.com/qtactivex/qtplugin.cab\" width=\"##WIDTH##\" height=\"##HEIGHT##\">\n". " <param name=\"src\" value=\"##MEDIA1##.mov\">\n". " <param name=\"controller\" value=\"true\">\n". " <param name=\"autoplay\" value=\"false\">\n". " <!--[if gte IE 7] > <!-->\n". " <object type=\"video/quicktime\" data=\"##MEDIA1##.mov\" width=\"##WIDTH##\" height=\"##HEIGHT##\">\n". " <param name=\"controller\" value=\"true\">\n". " <param name=\"autoplay\" value=\"false\">\n". " <a href=\"##MEDIA1##.mov\">##MEDIA1##.mov</a>\n". " </object>\n". " <!--<![endif]-->\n". " <!--[if lt IE 7]>\n". " <a href=\"##MEDIA1##.mov\">##MEDIA1##.mov</a>\n". " <![endif]-->\n". "</object>"; // .swf preg_match_all("#\[media[0-9a-z\|]*\]([.\w\d]+[^\s\"]+).swf\[/media\]#i",$text,$media_matches[],PREG_SET_ORDER); $media_replace[] = "<object type=\"application/x-shockwave-flash\" data=\"##MEDIA1##.swf\" width=\"##WIDTH##\" height=\"##HEIGHT##\"> <param name=\"movie\" value=\"##MEDIA1##.swf\"><param name=\"loop\" value=\"false\"><a href=\"##MEDIA1##.swf\">##MEDIA1##.swf</a></object>"; // .mp3 preg_match_all("#\[media[0-9a-z\|]*\]([.\w\d]+[^\s\"]+).mp3\[/media\]#i",$text,$media_matches[],PREG_SET_ORDER); $media_replace[] = "<object type=\"audio/mpeg\" data=\"##MEDIA1##.mp3\" width=\"##WIDTH##\" height=\"##HEIGHT##\"><param name=\"src\" value=\"##MEDIA1##.mp3\"><param name=\"autoplay\" value=\"false\"><param name=\"autoStart\" value=\"0\"><a href=\"##MEDIA1##.mp3\">##MEDIA1##.mp3</a></object>"; // .wav preg_match_all("#\[media[0-9a-z\|]*\](.+[^\s\"]+).wav\[/media\]#i",$text,$media_matches[],PREG_SET_ORDER); $media_replace[] ="<object type=\"audio/x-wav\" data=\"##MEDIA1##.wav\" width=\"##WIDTH##\" height=\"##HEIGHT##\"><param name=\"src\" value=\"##MEDIA1##.wav\"><param name=\"autoplay\" value=\"false\"><param name=\"autoStart\" value=\"0\"><a href=\"##MEDIA1##.wav\">##MEDIA1##.wav</a></object>"; // .ogg preg_match_all("#\[media[0-9a-z\|]*\](.+[^\s\"]+).ogg\[/media\]#i",$text,$media_matches[],PREG_SET_ORDER); $media_replace[] ="<object type=\"application/ogg\" data=\"##MEDIA1##.ogg\" width=\"##WIDTH##\" height=\"##HEIGHT##\"><param name=\"src\" value=\"##MEDIA1##.ogg\"><a href=\"##MEDIA1##.ogg\">##MEDIA1##.ogg</a></object>"; // .ogm preg_match_all("#\[media[0-9a-z\|]*\](.+[^\s\"]+).ogm\[/media\]#i",$text,$media_matches[],PREG_SET_ORDER); $media_replace[] ="<object type=\"application/ogm\" data=\"##MEDIA1##.ogm\" width=\"##WIDTH##\" height=\"##HEIGHT##\"><param name=\"src\" value=\"##MEDIA1##.ogm\"><a href=\"##MEDIA1##.ogg\">##MEDIA1##.ogm</a></object>"; // .mid preg_match_all("#\[media[0-9a-z\|]*\](.+[^\s\"]+).mid\[/media\]#i",$text,$media_matches[],PREG_SET_ORDER); $media_replace[] ="<object type=\"application/x-midi\" data=\"##MEDIA1##.mid\" width=\"##WIDTH##\" height=\"##HEIGHT##\"><param name=\"src\" value=\"##MEDIA1##.mid\"><a href=\"##MEDIA1##.mid\">##MEDIA1##.mid</a></object>"; $text = preg_replace("#\[media[0-9a-z\|]*\](.+[^\s\"]+).mid\[/media\]#i", "<object type=\"application/x-midi\" data=\"\\1.mid\" width=\"".$width."\" height=\"".$height."\"><param name=\"src\" value=\"\\1.mid\"><a href=\"\\1.mid\">\\1.mid</a></object>", $text); // Executing the replace for ($i=0;$i<count($media_replace);$i++){ foreach($media_matches[$i] as $media) { //find width and height for each matched media if (preg_match("/\[media\|([0-9]*)\|([0-9]*)\]*/", $media[0], $matches)) { $width = $matches[1]; $height = $matches[2]; } else { $width = 425; $height = 350; } //replace media tags with embedded media for each media tag $media_input = $media_replace[$i]; $media_input = str_replace("##WIDTH##","$width",$media_input); $media_input = str_replace("##HEIGHT##","$height",$media_input); $media_input = str_replace("##MEDIA1##","$media[1]",$media_input); $media_input = str_replace("##MEDIA2##","$media[2]",$media_input); $text = str_replace($media[0],$media_input,$text); } } return $text; }
//$err = new ErrorHandler(); //TODO*******************BOLOGNA*******************REMOVE ME*******************/ // if filemanager is a inside a popup or a frame // i don't like this code. i don't know were these two variables are coming from // anyone can add ?framed=1 to a URL to alter the behaviour. // global $_course_id is set when a guest accessing a public course. // This is to solve the issue that the google indexing fails as the session vars are lost. if (isset($_SESSION['course_id'])) { $_course_id = $_SESSION['course_id']; } else { if (isset($_GET['p_course'])) { // p_course is set when pretty url is turned on and public course is accessed $_course_id = $_GET['p_course']; } } $savant->assign('course_id', $_course_id); $savant->assign('is_mobile_device', is_mobile_device()); $savant->assign('mobile_device_type', get_mobile_device_type()); if (isset($_REQUEST['framed']) && $_REQUEST['framed'] || isset($_REQUEST['popup']) && $_REQUEST['popup']) { $savant->assign('framed', 1); $savant->assign('popup', 1); if (isset($tool_flag) && $tool_flag) { $savant->display('include/tm_header.tmpl.php'); } else { $savant->display('include/fm_header.tmpl.php'); } } else { //$savant->assign('opensocial', open_social_libs($_base_href)); $savant->display('include/header.tmpl.php'); } //tool_origin('off');