changed all the POST with option/required_param functions
[moodle.git] / mod / scorm / loadSCO.php
1 <?php
2     require_once("../../config.php");
3     require_once("lib.php");
5     $id = optional_param('id', '', PARAM_INT);       // Course Module ID, or
6     $a = optional_param('a', '', PARAM_INT);         // scorm ID
7     $scoid = optional_param('scoid', '', PARAM_INT); // sco ID
8     $mode = optional_param('mode', '', PARAM_ALPHA); // navigation mode
10     if (!empty($id)) {
11         if (! $cm = get_record("course_modules", "id", $id)) {
12             error("Course Module ID was incorrect");
13         }
14         if (! $course = get_record("course", "id", $cm->course)) {
15             error("Course is misconfigured");
16         }
17         if (! $scorm = get_record("scorm", "id", $cm->instance)) {
18             error("Course module is incorrect");
19         }
20     } else if (!empty($a)) {
21         if (! $scorm = get_record("scorm", "id", $a)) {
22             error("Course module is incorrect");
23         }
24         if (! $course = get_record("course", "id", $scorm->course)) {
25             error("Course is misconfigured");
26         }
27         if (! $cm = get_coursemodule_from_instance("scorm", $scorm->id, $course->id)) {
28             error("Course Module ID was incorrect");
29         }
30     } else {
31         error('A required parameter is missing');
32     }
34     require_login($course->id, false, $cm);
35     if (!empty($scoid)) {
36     //
37     // Direct sco request
38     //
39         if ($sco = get_record("scorm_scoes","id",$scoid)) {
40             if ($sco->launch == '') {
41                 // Search for the next launchable sco
42                 if ($scoes = get_records_select("scorm_scoes","scorm=".$scorm->id." AND launch<>'' AND id>".$sco->id,"id ASC")) {
43                     $sco = current($scoes);
44                 }
45             }
46         }
47     } else {
48     //
49     // Search for first incomplete sco
50     //
51         if ( $scoes_track = get_records_select("scorm_scoes_track","userid=".$USER->id." AND element='cmi.core.lesson_status' AND scormid=".$scorm->id,"scoid ASC") ) {
52             $sco_track = current($scoes_track);
53             while ((($sco_track->value == "completed") || ($sco_track->value == "passed") || ($sco_track->value == "failed")) && ($mode == "normal")) {
54                 $sco_track = next($scoes_track);
55             }
56             $sco = get_record("scorm_scoes","id",$sco_track->scoid);
57         }
58            }
59        //
60     // If no sco was found get the first of SCORM package
61     //
62     if (!isset($sco)) {
63         $scoes = get_records_select("scorm_scoes","scorm=".$scorm->id." AND launch<>''","id ASC");
64         $sco = current($scoes);
65     }
67     //
68     // Forge SCO URL
69     //
70     $connector = '';
71     $version = substr($scorm->version,0,4);
72     if (!empty($sco->parameters) || ($version == 'AICC')) {
73         if (stripos($sco->launch,'?') !== false) {
74             $connector = '&';
75         } else {
76             $connector = '?';
77         }
78     }
79     if (scorm_external_link($sco->launch)) {
80         if ($version == 'AICC') {
81             if (!empty($sco->parameters)) {
82                 $sco->parameters = '&'. $sco->parameters;
83             }
84             $result = $sco->launch.$connector.'aicc_sid='.sesskey().'&aicc_url='.$CFG->wwwroot.'/mod/scorm/aicc.php'.$sco->parameters;
85         } else {
86             $result = $sco->launch.$connector.$sco->parameters;
87         }
88     } else {
89         if ($CFG->slasharguments) {
90             $result = $CFG->wwwroot.'/file.php/'.$scorm->course.'/moddata/scorm/'.$scorm->id.'/'.$sco->launch.$connector.$sco->parameters;
91         } else {
92             $result = $CFG->wwwroot.'/file.php?file=/'.$scorm->course.'/moddata/scorm/'.$scorm->id.'/'.$sco->launch.$connector.$sco->parameters;
93         }
94     }
95 ?>
96 <html>
97     <head>
98         <title>LoadSCO</title>
99         <script language="javascript" type="text/javascript">
100         <!--
101             setTimeout('document.location = "<?php echo $result ?>";',1000);
102         -->
103         </script>
104     </head>
105     <body>
106         &nbsp;
107     </body>
108 </html>