2005-02-17 08:52:54 +00:00
< ? php
require_once ( " ../../config.php " );
require_once ( " lib.php " );
optional_variable ( $id ); // Course Module ID, or
optional_variable ( $a ); // scorm ID
optional_variable ( $scoid ); // sco ID
if ( $id ) {
if ( ! $cm = get_record ( " course_modules " , " id " , $id )) {
error ( " Course Module ID was incorrect " );
}
if ( ! $course = get_record ( " course " , " id " , $cm -> course )) {
error ( " Course is misconfigured " );
}
if ( ! $scorm = get_record ( " scorm " , " id " , $cm -> instance )) {
error ( " Course module is incorrect " );
}
} else {
if ( ! $scorm = get_record ( " scorm " , " id " , $a )) {
error ( " Course module is incorrect " );
}
if ( ! $course = get_record ( " course " , " id " , $scorm -> course )) {
error ( " Course is misconfigured " );
}
if ( ! $cm = get_coursemodule_from_instance ( " scorm " , $scorm -> id , $course -> id )) {
error ( " Course Module ID was incorrect " );
}
}
require_login ( $course -> id , false , $cm );
2005-04-01 15:53:32 +00:00
if ( ! empty ( $scoid )) {
//
// Direct sco request
//
if ( $sco = get_record ( " scorm_scoes " , " id " , $scoid )) {
if ( $sco -> launch == '' ) {
// Search for the next launchable sco
if ( $scoes = get_records_select ( " scorm_scoes " , " scorm= " . $scorm -> id . " AND launch<>'' AND id> " . $scoid , " id ASC " )) {
$sco = current ( $scoes );
2005-02-17 08:52:54 +00:00
}
}
}
} else {
2005-04-01 15:53:32 +00:00
//
// Search for first incomplete sco
//
if ( $scoes_track = get_records_select ( " scorm_scoes_track " , " userid= " . $USER -> id . " AND element='cmi.core.lesson_status' AND scormid= " . $scorm -> id , " scoid ASC " ) ) {
$sco_track = current ( $scoes_track );
while ((( $sco_track -> value == " completed " ) || ( $sco_track -> value == " passed " ) || ( $sco_track -> value == " failed " )) && ( $mode == " normal " )) {
$sco_track = next ( $scoes_track );
2005-02-17 08:52:54 +00:00
}
2005-04-01 15:53:32 +00:00
$sco = get_record ( " scorm_scoes " , " id " , $sco_track -> scoid );
2005-02-17 08:52:54 +00:00
}
2005-04-01 15:53:32 +00:00
2005-02-17 08:52:54 +00:00
}
2005-04-01 15:53:32 +00:00
//
// If no sco was found get the first of SCORM package
//
if ( ! isset ( $sco )) {
$scoes = get_records_select ( " scorm_scoes " , " scorm= " . $scorm -> id . " AND launch<>'' " , " id ASC " );
$sco = current ( $scoes );
}
2005-02-17 08:52:54 +00:00
//
// Forge SCO URL
//
2005-04-04 09:30:51 +00:00
$connector = '' ;
2005-04-18 08:37:45 +00:00
$version = substr ( $scorm -> version , 0 , 4 );
if ( ! empty ( $sco -> parameters ) || ( $version == 'AICC' )) {
2005-04-04 09:30:51 +00:00
if ( stripos ( $sco -> launch , '?' ) !== false ) {
$connector = '&' ;
} else {
$connector = '?' ;
}
}
2005-02-17 08:52:54 +00:00
if ( scorm_external_link ( $sco -> launch )) {
2005-04-18 08:37:45 +00:00
if ( $version == 'AICC' ) {
$result = $sco -> launch . $connector . 'aicc_sid=' . $CFG -> sesskey . '&aicc_url=' . $CFG -> wwwroot . '/mod/scorm/aicc.php&' . $sco -> parameters ;
} else {
$result = $sco -> launch . $connector . $sco -> parameters ;
}
2005-02-17 08:52:54 +00:00
} else {
if ( $CFG -> slasharguments ) {
2005-04-18 07:49:36 +00:00
$result = $CFG -> wwwroot . '/file.php/' . $scorm -> course . '/moddata/scorm/' . $scorm -> id . '/' . $sco -> launch . $connector . $sco -> parameters ;
2005-02-17 08:52:54 +00:00
} else {
2005-04-18 07:49:36 +00:00
$result = $CFG -> wwwroot . '/file.php?file=/' . $scorm -> course . '/moddata/scorm/' . $scorm -> id . '/' . $sco -> launch . $connector . $sco -> parameters ;
2005-02-17 08:52:54 +00:00
}
}
?>
< html >
< head >
< title > LoadSCO </ title >
</ head >
< body >
< script language = " javascript " >
2005-04-01 15:53:32 +00:00
document . location = '<?php echo $result ?>' ;
2005-02-17 08:52:54 +00:00
</ script >
</ body >
2005-04-18 07:49:36 +00:00
</ html >