changed all the POST with option/required_param functions
[moodle.git] / mod / scorm / playscorm.php
1 <?PHP  // $Id$
3 /// This page prints a particular instance of scorm
5     require_once('../../config.php');
6     require_once('lib.php');
8     $id = optional_param('id', '', PARAM_INT);       // Course Module ID, or
9     $a = optional_param('a', '', PARAM_INT);         // scorm ID
10     $scoid = required_param('scoid', '', PARAM_INT);  // sco ID
11     $mode = optional_param('mode', '', PARAM_ALPHA); // navigation mode
12     $currentorg = optional_param('currentorg', '', PARAM_); // selected organization
13     
14     //
15     // Checkin script parameters
16     //
17     $modestring = '';
18     $scoidstring = '';
19     $currentorgstring = '';
20     if (!empty($mode)) {
21         $modestring = '&mode='.$mode;
22     }
23     if (!empty($scoid)) {
24         $scoidstring = '&scoid='.$scoid;
25     }
26     if (!empty($currentorg)) {
27         $currentorgstring = '&currentorg='.$currentorg;
28     }
30     if (!empty($id)) {
31         if (! $cm = get_record("course_modules", "id", $id)) {
32             error("Course Module ID was incorrect");
33         }
34         if (! $course = get_record("course", "id", $cm->course)) {
35             error("Course is misconfigured");
36         }
37         if (! $scorm = get_record("scorm", "id", $cm->instance)) {
38             error("Course module is incorrect");
39         }
40     } else if (!empty($a)) {
41         if (! $scorm = get_record("scorm", "id", $a)) {
42             error("Course module is incorrect");
43         }
44         if (! $course = get_record("course", "id", $scorm->course)) {
45             error("Course is misconfigured");
46         }
47         if (! $cm = get_coursemodule_from_instance("scorm", $scorm->id, $course->id)) {
48             error("Course Module ID was incorrect");
49         }
50     } else {
51         error('A required parameter is missing');
52     }
54     require_login($course->id, false, $cm);
56     $strscorms = get_string('modulenameplural', 'scorm');
57     $strscorm  = get_string('modulename', 'scorm');
58     $strexpand = get_string('expcoll','scorm');
59     $strpopup = get_string('popup','scorm');
61     if ($course->category) {
62         $navigation = "<a target=\"{$CFG->framename}\" href=\"../../course/view.php?id=$course->id\">$course->shortname</a> ->
63                        <a target=\"{$CFG->framename}\" href=\"index.php?id=$course->id\">$strscorms</a> ->";
64     } else {
65         $navigation = "<a target=\"{$CFG->framename}\" href=\"index.php?id=$course->id\">$strscorms</a> ->";
66     }
68     $pagetitle = strip_tags("$course->shortname: ".format_string($scorm->name));
70     if (!$cm->visible and !isteacher($course->id)) {
71         print_header($pagetitle, "$course->fullname", "$navigation ".format_string($scorm->name), '', '', true,
72                      update_module_button($cm->id, $course->id, $strscorm), navmenu($course, $cm));
73         notice(get_string("activityiscurrentlyhidden"));
74     }
76     //
77     // TOC processing
78     //
79     $result = scorm_get_toc($scorm,'structurelist',$currentorg,$scoid,$mode,true);
80     $sco = $result->sco;
81     if ($mode == 'normal') {
82         if ($trackdata = scorm_get_tracks($USER->id,$sco->id)) {
83             if (($trackdata->status == 'completed') || ($trackdata->status == 'passed') || ($trackdata->status == 'failed')) {
84                 $mode = 'review';
85             }
86         }
87     }
88     add_to_log($course->id, 'scorm', 'view', "playscorm.php?id=$cm->id&scoid=$sco->id", "$scorm->id");
89     $scoidstring = '&scoid='.$sco->id;
90     $modestring = '&mode='.$mode;
92     $SESSION->scorm_scoid = $sco->id;
94     //
95     // Print the page header
96     //
97     $scripts = '';
98     if ($scorm->popup == 1) {
99         $scripts = 'onunload="top.main.close();"';
100     }
101     
102     print_header($pagetitle, "$course->fullname",
103                  "$navigation <a target='{$CFG->framename}' href='view.php?id=$cm->id'>".format_string($scorm->name,true)."</a>",
104                  '', '', true, update_module_button($cm->id, $course->id, $strscorm), '', false, $scripts);
105 ?>
106     <script language="JavaScript" type="text/javascript" src="request.js"></script>
107     <script language="JavaScript" type="text/javascript" src="api.php?id=<?php echo $cm->id.$scoidstring.$modestring ?>"></script>
109     <table class="fullscreen">
110     <tr>
111 <?php  
112     if ($scorm->hidetoc == 0) {
113 ?>
114             <td class="top">
115             <table class='generalbox'>
116                <tr>
117                    <td class="structurehead"><?php print_string('coursestruct','scorm') ?></td>
118                </tr>
119                <tr>
120                    <td><?php echo $result->toc; ?></td>
121                </tr>
122             </table>
123         </td>
124 <?php
125     }
126     $browseclass = '';
127     if ($scorm->popup == 0) {
128         $browseclass = 'class="left"';
129     }
130 ?>
131         <td class="top">
132             <table class="fullscreen">
133                 <tr>
134                     <?php echo $mode == 'browse' ? '<td '.$browseclass.'>'.get_string('browsemode','scorm').'</td>' : ''; ?>
135                     <td class="right">       
136                 <form name="navform" method="post" action="playscorm.php?id=<?php echo $cm->id ?>" target="_top">
137                     <input name="scoid" type="hidden" />
138                     <input name="currentorg" type="hidden" value="<?php echo $currentorg ?>" />
139                     <input name="mode" type="hidden" value="<?php echo $mode ?>" />
140                     <input name="prev" type="<?php if (($sco->prev == 0) || ($sco->showprev == 1)) { echo 'hidden'; } else { echo 'button'; } ?>" value="<?php print_string('prev','scorm') ?>" onClick="prevSCO();" />
141                     <input name="next" type="<?php if (($sco->next == 0) || ($sco->shownext == 1)) { echo 'hidden'; } else { echo 'button'; } ?>" value="<?php print_string('next','scorm') ?>" onClick="nextSCO();" />
142                     <input name="exit" type="button" value="<?php print_string('exit','scorm') ?>" onClick="playSCO(0)" />
143                 </form>
144                 </td>
145                 </tr>
146 <?php
147     if ($scorm->popup == 0) {
148 ?>
149                 <tr><td class="right">
150                     <iframe name="main" class="scoframe" width="<?php echo $scorm->width<=100 ? $scorm->width.'%' : $scorm->width ?>" height="<?php echo $scorm->height<=100 ? $scorm->height.'%' : $scorm->height ?>" src="loadSCO.php?id=<?php echo $cm->id.$scoidstring.$modestring ?>"></iframe>
151                 </td></tr>
152             </table>
153 <?php
154     }
155 ?>
156          </td>
157     </tr>
158     </table>
160     <script language="javascript" type="text/javascript">
161     <!--
162 <?php
163     if ($scorm->popup == 1) {
164 ?>
165         top.main = window.open("loadSCO.php?id=<?php echo $cm->id.$scoidstring.$modestring ?>","","width=<?php echo $scorm->width<=100 ? $scorm->width.'%' : $scorm->width ?>,height=<?php echo $scorm->height<=100 ? $scorm->height.'%' : $scorm->height ?>,scrollbars=1");
166 <?php
167     }
168 ?>
169         function playSCO(scoid) {
170             if (scoid == 0) {
171                 //top.main.close();
172                 document.location = '<?php echo $CFG->wwwroot ?>/course/view.php?id=<?php echo $cm->course ?>';
173             } else {
174                 document.navform.scoid.value=scoid;
175                 document.navform.submit();
176             }
177         }
179         function prevSCO() {
180             playSCO(<?php echo $sco->prev ?>);
181         }
183         function nextSCO() {
184             playSCO(<?php echo $sco->next ?>);
185         }
187         function expandCollide(which,list) {
188             var nn=document.ids?true:false
189             var w3c=document.getElementById?true:false
190             var beg=nn?"document.ids.":w3c?"document.getElementById(":"document.all.";
191             var mid=w3c?").style":".style";
193             if (eval(beg+list+mid+".display") != "none") {
194                 which.src = "pix/plus.gif";
195                 eval(beg+list+mid+".display='none';");
196             } else {
197                 which.src = "pix/minus.gif";
198                 eval(beg+list+mid+".display='block';");
199             }
200         }
201     -->
202     </script>
203 </body>
204 </html>