Added user activity support
[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     optional_variable($id);    // Course Module ID, or
9     optional_variable($a);     // scorm ID
11     if ($id) {
12         if (! $cm = get_record('course_modules', 'id', $id)) {
13             error('Course Module ID was incorrect');
14         }
16         if (! $course = get_record('course', 'id', $cm->course)) {
17             error('Course is misconfigured');
18         }
20         if (! $scorm = get_record('scorm', 'id', $cm->instance)) {
21             error('Course module is incorrect');
22         }
24     } else {
25         if (! $scorm = get_record('scorm', 'id', $a)) {
26             error('Course module is incorrect');
27         }
28         if (! $course = get_record('course', 'id', $scorm->course)) {
29             error('Course is misconfigured');
30         }
31         if (! $cm = get_coursemodule_from_instance('scorm', $scorm->id, $course->id)) {
32             error('Course Module ID was incorrect');
33         }
34     }
36     require_login($course->id, false, $cm);
38     $strscorms = get_string('modulenameplural', 'scorm');
39     $strscorm  = get_string('modulename', 'scorm');
41     if ($course->category) {
42         $navigation = "<a target=\"{$CFG->framename}\" href=\"../../course/view.php?id=$course->id\">$course->shortname</a> ->
43                        <a target=\"{$CFG->framename}\" href=\"index.php?id=$course->id\">$strscorms</a> ->";
44     } else {
45         $navigation = "<a target=\"{$CFG->framename}\" href=\"index.php?id=$course->id\">$strscorms</a> ->";
46     }
48     $pagetitle = strip_tags("$course->shortname: ".format_string($scorm->name));
50     if (!$cm->visible and !isteacher($course->id)) {
51         print_header($pagetitle, "$course->fullname", "$navigation ".format_string($scorm->name), '', '', true,
52                      update_module_button($cm->id, $course->id, $strscorm), navmenu($course, $cm));
53         notice(get_string("activityiscurrentlyhidden"));
54     }
56     //
57     // Checkin script parameters
58     //
59     $mode = '';
60     $scoid='';
61     $currentorg='';
62     $modestring = '';
63     $scoidstring = '';
64     $currentorgstring = '';
65     if (!empty($_POST['mode'])) {
66         $mode = $_POST['mode'];
67         $modestring = '&mode='.$mode;
68     }
69     if (!empty($_POST['scoid'])) {
70         $scoid = $_POST['scoid'];
71         $scoidstring = '&scoid='.$scoid;
72     }
73     if (!empty($_POST['currentorg'])) {
74     $currentorg = $_POST['currentorg'];
75     $currentorgstring = '&currentorg='.$currentorg;
76     }
78     $strexpand = get_string('expcoll','scorm');
79     $strpopup = get_string('popup','scorm');
81     //
82     // Print the page header
83     //
85     print_header($pagetitle, "$course->fullname",
86                  "$navigation <a target='{$CFG->framename}' href='view.php?id=$cm->id'>".format_string($scorm->name,true)."</a>",
87                  '', '', true, update_module_button($cm->id, $course->id, $strscorm));
88 ?>
90     <table class="fullscreen">
91     <tr><td class="top">
92         <p><?php echo format_text($scorm->summary) ?></p>
93         <p><?php echo $mode == 'browse' ? get_string('browsemode','scorm') : '&nbsp;'; ?></p>
94         <table class='generalbox' cellpadding='5' cellspacing='0'>
95             <tr>
96                 <th>
97                     <div class="structurehead"><?php print_string('coursestruct','scorm') ?></div>
98                     <!--<div class="popupbutton">
99                         <a href='#' onClick='popup(main,popupimg);'><img id='popupimg' src="pix/popup.gif" alt="<?php echo $strpopup ?>" title="<?php echo $strpopup ?>"/></a>
100                     </div> -->
101                 </th>
102             </tr>
103             <tr><td class="top">
104 <?php
105     $sco = scorm_display_structure($scorm,'structurelist',$currentorg,$scoid,$mode,true);
106     if ($mode == 'normal') {
107     if ($trackdata = scorm_get_tracks($USER->id,$sco->id)) {
108         if (($trackdata->status == 'completed') || ($trackdata->status == 'passed') || ($trackdata->status == 'failed')) {
109         $mode = 'review';
110         }
111     }
112     }
113     add_to_log($course->id, 'scorm', 'view', "playscorm.php?id=$cm->id&scoid=$sco->id", "$scorm->id");
114     $scoidstring = '&scoid='.$sco->id;
115     $modestring = '&mode='.$mode;
117     $SESSION->scorm_scoid = $sco->id;
118 ?>
119             </td></tr>
120             <tr><td class="center">
121                 <form name="navform" method="post" action="playscorm.php?id=<?php echo $cm->id ?>" target="_top">
122                    <input name="scoid" type="hidden" />
123                    <input name="currentorg" type="hidden" value="<?php echo $currentorg ?>" />
124                    <input name="mode" type="hidden" value="<?php echo $mode ?>" />
125                    <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();" />
126                    <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();" /><br />
127                    <input name="exit" type="button" value="<?php print_string('exit','scorm') ?>" onClick="playSCO(0)" />
128                </form>
129            </td></tr>
130        </table>
131     </td>
132     <td class="top" width="<?php print $scorm->width ?>">
133         <iframe name="main" width="<?php print $scorm->width ?>" height="<?php echo $scorm->height ?>" src="loadSCO.php?id=<?php echo $cm->id.$scoidstring.$modestring ?>"></iframe>
134     </td></tr>
135     </table>
136     <script language="javascript" type="text/javascript">
137     <!--
138         function playSCO(scoid) {
139             if (scoid == 0) {
140                 document.location = '<?php echo $CFG->wwwroot ?>/course/view.php?id=<?php echo $cm->course ?>';
141             } else {
142                 document.navform.scoid.value=scoid;
143                 document.navform.submit();
144             }
145         }
147         function popup(win,image) {
148             win = window.open("loadSCO.php?id=<?php echo $cm->id.$scoidstring.$modestring ?>","","width=<?php echo $scorm->width ?>,height=<?php echo $scorm->height ?>,scrollbars=1");
149             image.src = "pix/popdown.gif";
150             return win;
151         }
153         function prevSCO() {
154             playSCO(<?php echo $sco->prev ?>);
155         }
157         function nextSCO() {
158             playSCO(<?php echo $sco->next ?>);
159         }
161         function expandCollide(which,list) {
162             var nn=document.ids?true:false
163             var w3c=document.getElementById?true:false
164             var beg=nn?"document.ids.":w3c?"document.getElementById(":"document.all.";
165             var mid=w3c?").style":".style";
167             if (eval(beg+list+mid+".display") != "none") {
168                 which.src = "pix/plus.gif";
169                 eval(beg+list+mid+".display='none';");
170             } else {
171                 which.src = "pix/minus.gif";
172                 eval(beg+list+mid+".display='block';");
173             }
174         }
175     -->
176     </script>
177     <script language="JavaScript" type="text/javascript" src="request.js"></script>
178     <script language="JavaScript" type="text/javascript" src="api.php?id=<?php echo $cm->id.$scoidstring.$modestring ?>"></script>
179 </body>
180 </html>