lesson MDL-19812 Updated print_header and build_navigation to OUTPUT and PAGE equivalents
[moodle.git] / mod / lesson / mediafile.php
1 <?php  // $Id$
2 /**
3  * This file plays the mediafile set in lesson settings.
4  *
5  * Almost all of this code is from /mod/resource/type/file/resource.class.php so major props for resource
6  *
7  *  If there is a way to use the resource class instead of this code, please change to do so
8  *
9  *
10  * @version $Id$
11  * @license http://www.gnu.org/copyleft/gpl.html GNU Public License
12  * @package lesson
13  **/
15     require_once('../../config.php');
16     require_once($CFG->libdir.'/filelib.php');
18     $id = required_param('id', PARAM_INT);    // Course Module ID
19     $printclose = optional_param('printclose', 0, PARAM_INT);
20     
21     if (! $cm = get_coursemodule_from_id('lesson', $id)) {
22         print_error('invalidcoursemodule');
23     }
25     if (! $course = $DB->get_record('course', array('id' => $cm->course))) {
26         print_error('coursemisconf');
27     }
29     if (! $lesson = $DB->get_record('lesson', array('id' => $cm->instance))) {
30         print_error('invalidcoursemodule');
31     }
33     require_login($course->id, false, $cm);
35     // Get the mimetype
36     $mimetype = mimeinfo("type", $lesson->mediafile);
38     if (!is_url($lesson->mediafile) and !in_array($mimetype, array('text/plain', 'text/html'))) {
39         $PAGE->set_title($course->shortname);
40         echo $OUTPUT->header();
41     }
43     if ($printclose) {  // this is for framesets
44         if ($lesson->mediaclose) {
45             $PAGE->set_title($course->shortname);
46             echo $OUTPUT->header();
47             echo '<div class="lessonmediafilecontrol">
48                 <form>
49                 <div>
50                 <input type="button" onclick="top.close();" value="'.get_string("closewindow").'" />
51                 </div>
52                 </form>
53                 </div>';
54             echo $OUTPUT->footer();
55         }
56         exit();
57     }
59     if (is_url($lesson->mediafile)) {
60         $fullurl = $lesson->mediafile;        
61     } else {
62         $fullurl = get_file_url($course->id .'/'. $lesson->mediafile);
63     }
65     // find the correct type and print it out
66     if ($mimetype == "audio/mp3") {    // It's an MP3 audio file
67     
68         if (!empty($THEME->resource_mp3player_colors)) {
69             $c = $THEME->resource_mp3player_colors;   // You can set this up in your theme/xxx/config.php
70         } else {
71             $c = 'bgColour=000000&btnColour=ffffff&btnBorderColour=cccccc&iconColour=000000&'.
72                  'iconOverColour=00cc00&trackColour=cccccc&handleColour=ffffff&loaderColour=ffffff&'.
73                  'font=Arial&fontColour=3333FF&buffer=10&waitForPlay=no&autoPlay=yes';
74         }
75         $c .= '&volText='.get_string('vol', 'resource').'&panText='.get_string('pan','resource');
76         $c = htmlentities($c);
77         echo '<div class="mp3player" class="lessonmediafilecontrol">';
78         echo '<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"';
79         echo '        codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,0,0" ';
80         echo '        width="600" height="70" id="mp3player" align="">';
81         echo '<param name="movie" value="'.$CFG->wwwroot.'/lib/mp3player/mp3player.swf?src='.$fullurl.'">';
82         echo '<param name="quality" value="high">';
83         echo '<param name="bgcolor" value="#333333">';
84         echo '<param name="flashvars" value="'.$c.'&amp;" />';
85         echo '<embed src="'.$CFG->wwwroot.'/lib/mp3player/mp3player.swf?src='.$fullurl.'" ';
86         echo ' quality="high" bgcolor="#333333" width="600" height="70" name="mp3player" ';
87         echo ' type="application/x-shockwave-flash" ';
88         echo ' flashvars="'.$c.'&amp;" ';
89         echo ' pluginspage="http://www.macromedia.com/go/getflashplayer">';
90         echo '</embed>';
91         echo '</object>';
92         echo '</div>';
94     } else if (substr($mimetype, 0, 10) == "video/x-ms") {   // It's a Media Player file
95     
96         echo "<div class=\"lessonmediafilecontrol\"><p>";
97         echo '<object classid="CLSID:22D6f312-B0F6-11D0-94AB-0080C74C7E95"';
98         echo '        codebase="http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=5,1,52,701" ';
99         echo '        standby="Loading Microsoft(R) Windows(R) Media Player components..." ';
100         echo '        id="msplayer" align="" type="application/x-oleobject">';
101         echo "<param name=\"Filename\" value=\"$fullurl\">";
102         echo '<param name="ShowControls" value="true" />';
103         echo '<param name="AutoRewind" value="true" />';
104         echo '<param name="AutoStart" value="true" />';
105         echo '<param name="Autosize" value="true" />';
106         echo '<param name="EnableContextMenu" value="true" />';
107         echo '<param name="TransparentAtStart" value="false" />';
108         echo '<param name="AnimationAtStart" value="false" />';
109         echo '<param name="ShowGotoBar" value="false" />';
110         echo '<param name="EnableFullScreenControls" value="true" />';
111         echo "\n<embed src=\"$fullurl\" name=\"msplayer\" type=\"$mimetype\" ";
112         echo ' ShowControls="1" AutoRewind="1" AutoStart="1" Autosize="0" EnableContextMenu="1"';
113         echo ' TransparentAtStart="0" AnimationAtStart="0" ShowGotoBar="0" EnableFullScreenControls="1"';
114         echo ' pluginspage="http://www.microsoft.com/Windows/Downloads/Contents/Products/MediaPlayer/">';
115         echo '</embed>';
116         echo '</object>';
117         echo "</p></div>";
119     } else if ($mimetype == "video/quicktime") {   // It's a Quicktime file
120     
121         echo "<div class=\"lessonmediafilecontrol\"><p>";
122         echo '<object classid="CLSID:02BF25D5-8C17-4B23-BC80-D3488ABDDC6B"';
123         echo '        codebase="http://www.apple.com/qtactivex/qtplugin.cab" ';
124         echo '        height="450" width="600"';
125         echo '        id="quicktime" align="" type="application/x-oleobject">';
126         echo "<param name=\"src\" value=\"$fullurl\" />";
127         echo '<param name="autoplay" value="true" />';
128         echo '<param name="loop" value="true" />';
129         echo '<param name="controller" value="true" />';
130         echo '<param name="scale" value="aspect" />';
131         echo "\n<embed src=\"$fullurl\" name=\"quicktime\" type=\"$mimetype\" ";
132         echo ' height="450" width="600" scale="aspect"';
133         echo ' autoplay="true" controller="true" loop="true" ';
134         echo ' pluginspage="http://quicktime.apple.com/">';
135         echo '</embed>';
136         echo '</object>';
137         echo "</p></div>";
138     
139     //} else if ($mimetype == "application/x-shockwave-flash") {   // It's a flash file
140     
141     //    print_error('noflash');
142     
143     } else if ($mimetype == "audio/x-pn-realaudio") {   // It's a realmedia file
144         
145         echo '<object id="rvocx" classid="clsid:CFCDAA03-8BE4-11cf-B84B-0020AFBBCCFA" width="600" height="50">';
146         echo "<param name=\"src\" value=\"$fullurl\">";
147         echo '<param name="console" value="video">';  // not sure what the console param should equal
148         echo '<param name="controls" value="ControlPanel">';
149         echo '<param name="autostart" value="true">';
150         echo '<param name="loop" value="true">';
151         echo '<embed name="rvocx" src="'.$fullurl.'" height="50" width="600" autostart="true" loop="true" nojava="true" console="video" controls="ControlPanel"></embed>';
152         echo '<noembed></noembed>';
153         echo '</object>';
155     } else if (is_url($lesson->mediafile) or $mimetype == 'text/html' or $mimetype == 'text/plain') {
156         // might be dangerous to handle all of these in the same fasion.  It is being set by a teacher though.
157         echo "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Frameset//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd\">\n";
158         echo "<html dir=\"ltr\">\n";
159         echo '<head>';
160         echo '<meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />';
161         echo "<title>{$course->shortname}</title></head>\n";
162         if ($lesson->mediaclose) {
163             echo "<frameset rows=\"90%,*\">";
164             echo "<frame src=\"$fullurl\" />";
165             echo "<frame src=\"mediafile.php?id=$cm->id&amp;printclose=1\" />";
166             echo "</frameset>";
167         } else {
168             echo "<frameset rows=\"100%\">";
169             echo "<frame src=\"$fullurl\" />";
170             echo "</frameset>";
171         }
172         echo '</html>';
173         exit();
175     } else if (in_array($mimetype, array('image/gif','image/jpeg','image/png'))) {  // Image
177         echo "<div class=\"lessonmediafilecontrol\"><p>";
178         echo '<img class="lessonimage" src="'.s($fullurl).'" alt="" />';
179         echo "</p></div>";
181     } else {  // Default
183         // Get the file name
184         $file = pathinfo($lesson->mediafile);
185         $filename = basename($file['basename'], '.'.$file['extension']);
187         echo "<div class=\"lessonmediafilecontrol\"><p>";
188         echo $OUTPUT->notification(get_string('clicktodownload', 'lesson'));
189         echo "<a href=\"$fullurl\">".format_string($filename).'</a>';
190         echo "</p></div>";
191         
192     }
193     
194     function is_url($test_url) {
195         // the following is barrowed from resource code.  Thanks!
196         if (strpos($test_url, '://')) {     // eg http:// https:// ftp://  etc
197             return true;
198         }
199         if (strpos($test_url, '/') === 0) { // Starts with slash
200             return true;
201         }
202         return false;
203     }
205     if ($lesson->mediaclose) {
206        echo '<div class="lessonmediafilecontrol">';
207        echo $OUTPUT->close_window_button();
208        echo '</div>';
209     }
210     
211     echo $OUTPUT->footer();
212 ?>