Tabs are out.

Please don't use tabs in source code. Set your editor to 4 cc per tab.!
This commit is contained in:
stronk7 2005-05-16 23:41:58 +00:00
parent 87dddc1445
commit 5e5b6b7f19
16 changed files with 2799 additions and 2799 deletions

View file

@ -36,44 +36,44 @@
require_login($course->id, false, $cm);
if ($usertrack=scorm_get_tracks($scoid,$USER->id)) {
$userdata = $usertrack;
$userdata = $usertrack;
} else {
$userdata->status = '';
$userdata->scorre_raw = '';
$userdata->status = '';
$userdata->scorre_raw = '';
}
$userdata->student_id = $USER->username;
$userdata->student_name = $USER->lastname .', '. $USER->firstname;
$userdata->mode = 'normal';
if (isset($mode)) {
$userdata->mode = $mode;
$userdata->mode = $mode;
}
if ($sco = get_record('scorm_scoes','id',$scoid)) {
$userdata->datafromlms = $sco->datafromlms;
$userdata->masteryscore = $sco->masteryscore;
$userdata->maxtimeallowed = $sco->maxtimeallowed;
$userdata->timelimitaction = $sco->timelimitaction;
$userdata->datafromlms = $sco->datafromlms;
$userdata->masteryscore = $sco->masteryscore;
$userdata->maxtimeallowed = $sco->maxtimeallowed;
$userdata->timelimitaction = $sco->timelimitaction;
if (!empty($sco->masteryscore)) {
$userdata->credit = 'credit';
} else {
$userdata->credit = 'no-credit';
}
$userdata->credit = 'credit';
} else {
$userdata->credit = 'no-credit';
}
} else {
error('Sco not found');
error('Sco not found');
}
switch ($scorm->version) {
case 'SCORM_1.2':
include_once ('datamodels/scorm1_2.js.php');
break;
case 'SCORM_1.3':
case 'SCORM_1.2':
include_once ('datamodels/scorm1_2.js.php');
break;
case 'SCORM_1.3':
include_once ('datamodels/scorm1_3.js.php');
break;
case 'AICC':
break;
case 'AICC':
include_once ('datamodels/aicc.js.php');
break;
default:
include_once ('datamodels/scorm1_2.js.php');
break;
break;
default:
include_once ('datamodels/scorm1_2.js.php');
break;
}
?>

View file

@ -1,6 +1,6 @@
<?php
if (empty($CFG->scorm_frameheight)) {
$CFG->scorm_frameheight = 600;
$CFG->scorm_frameheight = 600;
}
if (empty($CFG->scorm_framewidth)) {
$CFG->scorm_structurewidth = 800;
@ -33,7 +33,7 @@
<tr valign="top">
<td align="right">scorm_framewidth:</td>
<td>
<input type="text" name="scorm_framewidth" value="<?php echo $CFG->scorm_framewidth ?>" size="3" />
<input type="text" name="scorm_framewidth" value="<?php echo $CFG->scorm_framewidth ?>" size="3" />
</td>
<td>
<?php print_string("framewidth", "scorm") ?>
@ -42,7 +42,7 @@
<tr valign="top">
<td align="right">scorm_frameheight:</td>
<td>
<input type="text" name="scorm_frameheight" value="<?php echo $CFG->scorm_frameheight ?>" size="4" />
<input type="text" name="scorm_frameheight" value="<?php echo $CFG->scorm_frameheight ?>" size="4" />
</td>
<td>
<?php print_string("frameheight", "scorm") ?>
@ -50,7 +50,7 @@
</tr>
<tr>
<td colspan="3" align="center">
<input type="submit" value="<?php print_string("savechanges") ?>" />
<input type="submit" value="<?php print_string("savechanges") ?>" />
</td>
</tr>
</table>

View file

@ -33,31 +33,31 @@
require_login($course->id, false, $cm);
if (confirm_sesskey() && (isset($SESSION->scorm_scoid))) {
$scoid = $SESSION->scorm_scoid;
$result = true;
foreach ($_GET as $element => $value) {
if (substr($element,0,3) == 'cmi') {
$element = str_replace('__','.',$element);
$element = preg_replace('/_(\d+)/',".\$1",$element);
if ($track = get_record_select('scorm_scoes_track',"userid='$USER->id' AND scormid='$scorm->id' AND scoid='$scoid' AND element='$element'")) {
$track->value = $value;
$result = update_record('scorm_scoes_track',$track) && $result;
} else {
$track->userid = $USER->id;
$track->scormid = $scorm->id;
$track->scoid = $scoid;
$track->element = $element;
$track->value = $value;
$result = insert_record('scorm_scoes_track',$track) && $result;
}
//print_r($track);
}
}
if ($result) {
echo "true\n0";
} else {
echo "false\n101";
}
$scoid = $SESSION->scorm_scoid;
$result = true;
foreach ($_GET as $element => $value) {
if (substr($element,0,3) == 'cmi') {
$element = str_replace('__','.',$element);
$element = preg_replace('/_(\d+)/',".\$1",$element);
if ($track = get_record_select('scorm_scoes_track',"userid='$USER->id' AND scormid='$scorm->id' AND scoid='$scoid' AND element='$element'")) {
$track->value = $value;
$result = update_record('scorm_scoes_track',$track) && $result;
} else {
$track->userid = $USER->id;
$track->scormid = $scorm->id;
$track->scoid = $scoid;
$track->element = $element;
$track->value = $value;
$result = insert_record('scorm_scoes_track',$track) && $result;
}
//print_r($track);
}
}
if ($result) {
echo "true\n0";
} else {
echo "false\n101";
}
}
?>

View file

@ -33,80 +33,80 @@ function SCORMapi1_3() {
text_range = '-1#1';
// The SCORM 1.3 data model
var datamodel = {
'cmi._children':{'defaultvalue':cmi_children, 'mod':'r', 'writeerror':'402'},
'cmi._version':{'defaultvalue':'3.4', 'mod':'r', 'writeerror':'402'},
'cmi.core._children':{'defaultvalue':core_children, 'mod':'r', 'writeerror':'402'},
'cmi.core.student_id':{'defaultvalue':'<?php echo $user->username ?>', 'mod':'r', 'writeerror':'403'},
'cmi.core.student_name':{'defaultvalue':'<?php echo $user->lastname.', '.$user->firstname ?>', 'mod':'r', 'writeerror':'403'},
'cmi.core.lesson_location':{'format':CMIString255, 'mod':'rw', 'writeerror':'405'},
'cmi.core.credit':{'mod':'r', 'writeerror':'403'},
'cmi.core.lesson_status':{'format':CMIStatus, 'mod':'rw', 'writeerror':'405'},
'cmi.core.entry':{'mod':'r', 'writeerror':'403'},
'cmi.core.score._children':{'defaultvalue':score_children, 'mod':'r', 'writeerror':'402'},
'cmi.core.score.raw':{'format':CMIDecimal, 'range':score_range, 'mod':'rw', 'writeerror':'405'},
'cmi.core.score.max':{'format':CMIDecimal, 'range':score_range, 'mod':'rw', 'writeerror':'405'},
'cmi.core.score.min':{'format':CMIDecimal, 'range':score_range, 'mod':'rw', 'writeerror':'405'},
'cmi.core.total_time':{'mod':'r', 'writeerror':'403'},
'cmi.core.lesson_mode':{'mod':'r', 'writeerror':'405'},
'cmi.core.exit':{'format':CMIExit, 'mod':'w', 'readerror':'404', 'writeerror':'405'},
'cmi.core.session_time':{'format':CMITimespan, 'mod':'w', 'defaultvalue':'00:00:00', 'readerror':'404', 'writeerror':'405'},
'cmi.suspend_data':{'format':CMIString4096, 'mod':'rw', 'writeerror':'405'},
'cmi.launch_data':{'mod':'r', 'writeerror':'403'},
'cmi.comments':{'format':CMIString4096, 'mod':'rw', 'writeerror':'405'},
'cmi.comments_from_lms':{'mod':'r', 'writeerror':'403'},
'cmi.objectives._children':{'defaultvalue':objectives_children, 'mod':'r', 'writeerror':'403'},
'cmi.objectives._count':{'mod':'r', 'defaultvalue':'0', 'writeerror':'402'},
'cmi.objectives.n.id':{'pattern':CMIIndex, 'format':CMIIdentifier, 'mod':'rw', 'writeerror':'405'},
'cmi.objectives.n.score._children':{'pattern':CMIIndex, 'defaultvalue':score_children, 'mod':'r', 'writeerror':'402'},
'cmi.objectives.n.score.raw':{'pattern':CMIIndex, 'format':CMIDecimal, 'range':score_range, 'mod':'rw', 'writeerror':'405'},
'cmi.objectives.n.score.min':{'pattern':CMIIndex, 'format':CMIDecimal, 'range':score_range, 'mod':'rw', 'writeerror':'405'},
'cmi.objectives.n.score.max':{'pattern':CMIIndex, 'format':CMIDecimal, 'range':score_range, 'mod':'rw', 'writeerror':'405'},
'cmi.objectives.n.status':{'pattern':CMIIndex, 'format':CMIStatus, 'mod':'rw', 'writeerror':'405'},
'cmi.student_data._children':{'defaultvalue':student_data_children, 'mod':'r', 'writeerror':'403'},
'cmi.student_data.mastery_score':{'mod':'r', 'writeerror':'403'},
'cmi.student_data.max_time_allowed':{'mod':'r', 'writeerror':'403'},
'cmi.student_data.time_limit_action':{'mod':'r', 'writeerror':'403'},
'cmi.student_preference._children':{'defaultvalue':student_preference_children, 'mod':'r', 'writeerror':'403'},
'cmi.student_preference.audio':{'format':CMISInteger, 'range':audio_range, 'mod':'rw', 'writeerror':'405'},
'cmi.student_preference.language':{'format':CMIString255, 'mod':'rw', 'writeerror':'405'},
'cmi.student_preference.speed':{'format':CMISInteger, 'range':speed_range, 'mod':'rw', 'writeerror':'405'},
'cmi.student_preference.text':{'format':CMISInteger, 'range':text_range, 'mod':'rw', 'writeerror':'405'},
'cmi.interactions._children':{'defaultvalue':interactions_children, 'mod':'r', 'writeerror':'403'},
'cmi.interactions._count':{'mod':'r', 'defaultvalue':'0', 'writeerror':'402'},
'cmi.interactions.n.id':{'pattern':CMIIndex, 'format':CMIIdentifier, 'mod':'w', 'readerror':'404', 'writeerror':'405'},
'cmi.interactions.n.objectives._count':{'pattern':CMIIndex, 'mod':'r', 'defaultvalue':'0', 'writeerror':'402'},
'cmi.interactions.n.objectives.n.id':{'pattern':CMIIndex, 'format':CMIIdentifier, 'mod':'w', 'readerror':'404', 'writeerror':'405'},
'cmi.interactions.n.time':{'pattern':CMIIndex, 'format':CMITime, 'mod':'w', 'readerror':'404', 'writeerror':'405'},
'cmi.interactions.n.type':{'pattern':CMIIndex, 'format':CMIType, 'mod':'w', 'readerror':'404', 'writeerror':'405'},
'cmi.interactions.n.correct_responses._count':{'pattern':CMIIndex, 'mod':'r', 'defaultvalue':'0', 'writeerror':'402'},
'cmi.interactions.n.correct_responses.n.pattern':{'pattern':CMIIndex, 'format':CMIFeedback, 'mod':'w', 'readerror':'404', 'writeerror':'405'},
'cmi.interactions.n.weighting':{'pattern':CMIIndex, 'format':CMIDecimal, 'mod':'w', 'readerror':'404', 'writeerror':'405'},
'cmi.interactions.n.student_response':{'pattern':CMIIndex, 'format':CMIFeedback, 'mod':'w', 'readerror':'404', 'writeerror':'405'},
'cmi.interactions.n.result':{'pattern':CMIIndex, 'format':CMIResult, 'mod':'w', 'readerror':'404', 'writeerror':'405'},
'cmi.interactions.n.latency':{'pattern':CMIIndex, 'format':CMITimespan, 'mod':'w', 'readerror':'404', 'writeerror':'405'}
'cmi._children':{'defaultvalue':cmi_children, 'mod':'r', 'writeerror':'402'},
'cmi._version':{'defaultvalue':'3.4', 'mod':'r', 'writeerror':'402'},
'cmi.core._children':{'defaultvalue':core_children, 'mod':'r', 'writeerror':'402'},
'cmi.core.student_id':{'defaultvalue':'<?php echo $user->username ?>', 'mod':'r', 'writeerror':'403'},
'cmi.core.student_name':{'defaultvalue':'<?php echo $user->lastname.', '.$user->firstname ?>', 'mod':'r', 'writeerror':'403'},
'cmi.core.lesson_location':{'format':CMIString255, 'mod':'rw', 'writeerror':'405'},
'cmi.core.credit':{'mod':'r', 'writeerror':'403'},
'cmi.core.lesson_status':{'format':CMIStatus, 'mod':'rw', 'writeerror':'405'},
'cmi.core.entry':{'mod':'r', 'writeerror':'403'},
'cmi.core.score._children':{'defaultvalue':score_children, 'mod':'r', 'writeerror':'402'},
'cmi.core.score.raw':{'format':CMIDecimal, 'range':score_range, 'mod':'rw', 'writeerror':'405'},
'cmi.core.score.max':{'format':CMIDecimal, 'range':score_range, 'mod':'rw', 'writeerror':'405'},
'cmi.core.score.min':{'format':CMIDecimal, 'range':score_range, 'mod':'rw', 'writeerror':'405'},
'cmi.core.total_time':{'mod':'r', 'writeerror':'403'},
'cmi.core.lesson_mode':{'mod':'r', 'writeerror':'405'},
'cmi.core.exit':{'format':CMIExit, 'mod':'w', 'readerror':'404', 'writeerror':'405'},
'cmi.core.session_time':{'format':CMITimespan, 'mod':'w', 'defaultvalue':'00:00:00', 'readerror':'404', 'writeerror':'405'},
'cmi.suspend_data':{'format':CMIString4096, 'mod':'rw', 'writeerror':'405'},
'cmi.launch_data':{'mod':'r', 'writeerror':'403'},
'cmi.comments':{'format':CMIString4096, 'mod':'rw', 'writeerror':'405'},
'cmi.comments_from_lms':{'mod':'r', 'writeerror':'403'},
'cmi.objectives._children':{'defaultvalue':objectives_children, 'mod':'r', 'writeerror':'403'},
'cmi.objectives._count':{'mod':'r', 'defaultvalue':'0', 'writeerror':'402'},
'cmi.objectives.n.id':{'pattern':CMIIndex, 'format':CMIIdentifier, 'mod':'rw', 'writeerror':'405'},
'cmi.objectives.n.score._children':{'pattern':CMIIndex, 'defaultvalue':score_children, 'mod':'r', 'writeerror':'402'},
'cmi.objectives.n.score.raw':{'pattern':CMIIndex, 'format':CMIDecimal, 'range':score_range, 'mod':'rw', 'writeerror':'405'},
'cmi.objectives.n.score.min':{'pattern':CMIIndex, 'format':CMIDecimal, 'range':score_range, 'mod':'rw', 'writeerror':'405'},
'cmi.objectives.n.score.max':{'pattern':CMIIndex, 'format':CMIDecimal, 'range':score_range, 'mod':'rw', 'writeerror':'405'},
'cmi.objectives.n.status':{'pattern':CMIIndex, 'format':CMIStatus, 'mod':'rw', 'writeerror':'405'},
'cmi.student_data._children':{'defaultvalue':student_data_children, 'mod':'r', 'writeerror':'403'},
'cmi.student_data.mastery_score':{'mod':'r', 'writeerror':'403'},
'cmi.student_data.max_time_allowed':{'mod':'r', 'writeerror':'403'},
'cmi.student_data.time_limit_action':{'mod':'r', 'writeerror':'403'},
'cmi.student_preference._children':{'defaultvalue':student_preference_children, 'mod':'r', 'writeerror':'403'},
'cmi.student_preference.audio':{'format':CMISInteger, 'range':audio_range, 'mod':'rw', 'writeerror':'405'},
'cmi.student_preference.language':{'format':CMIString255, 'mod':'rw', 'writeerror':'405'},
'cmi.student_preference.speed':{'format':CMISInteger, 'range':speed_range, 'mod':'rw', 'writeerror':'405'},
'cmi.student_preference.text':{'format':CMISInteger, 'range':text_range, 'mod':'rw', 'writeerror':'405'},
'cmi.interactions._children':{'defaultvalue':interactions_children, 'mod':'r', 'writeerror':'403'},
'cmi.interactions._count':{'mod':'r', 'defaultvalue':'0', 'writeerror':'402'},
'cmi.interactions.n.id':{'pattern':CMIIndex, 'format':CMIIdentifier, 'mod':'w', 'readerror':'404', 'writeerror':'405'},
'cmi.interactions.n.objectives._count':{'pattern':CMIIndex, 'mod':'r', 'defaultvalue':'0', 'writeerror':'402'},
'cmi.interactions.n.objectives.n.id':{'pattern':CMIIndex, 'format':CMIIdentifier, 'mod':'w', 'readerror':'404', 'writeerror':'405'},
'cmi.interactions.n.time':{'pattern':CMIIndex, 'format':CMITime, 'mod':'w', 'readerror':'404', 'writeerror':'405'},
'cmi.interactions.n.type':{'pattern':CMIIndex, 'format':CMIType, 'mod':'w', 'readerror':'404', 'writeerror':'405'},
'cmi.interactions.n.correct_responses._count':{'pattern':CMIIndex, 'mod':'r', 'defaultvalue':'0', 'writeerror':'402'},
'cmi.interactions.n.correct_responses.n.pattern':{'pattern':CMIIndex, 'format':CMIFeedback, 'mod':'w', 'readerror':'404', 'writeerror':'405'},
'cmi.interactions.n.weighting':{'pattern':CMIIndex, 'format':CMIDecimal, 'mod':'w', 'readerror':'404', 'writeerror':'405'},
'cmi.interactions.n.student_response':{'pattern':CMIIndex, 'format':CMIFeedback, 'mod':'w', 'readerror':'404', 'writeerror':'405'},
'cmi.interactions.n.result':{'pattern':CMIIndex, 'format':CMIResult, 'mod':'w', 'readerror':'404', 'writeerror':'405'},
'cmi.interactions.n.latency':{'pattern':CMIIndex, 'format':CMITimespan, 'mod':'w', 'readerror':'404', 'writeerror':'405'}
};
//
// Datamodel inizialization
//
var cmi = new Object();
cmi.core = new Object();
cmi.core.score = new Object();
cmi.objectives = new Object();
cmi.student_data = new Object();
cmi.student_preference = new Object();
cmi.interactions = new Object();
cmi.core = new Object();
cmi.core.score = new Object();
cmi.objectives = new Object();
cmi.student_data = new Object();
cmi.student_preference = new Object();
cmi.interactions = new Object();
var nav = new Object();
for (element in datamodel) {
if (element.match(/\.n\./) == null) {
//alert (element+' = '+eval('datamodel["'+element+'"].defaultvalue'));
if ((typeof eval('datamodel["'+element+'"].defaultvalue')) != 'undefined') {
eval(element+' = datamodel["'+element+'"].defaultvalue;');
} else {
eval(element+' = "";');
}
//alert (element+' = '+eval(element));
}
if (element.match(/\.n\./) == null) {
//alert (element+' = '+eval('datamodel["'+element+'"].defaultvalue'));
if ((typeof eval('datamodel["'+element+'"].defaultvalue')) != 'undefined') {
eval(element+' = datamodel["'+element+'"].defaultvalue;');
} else {
eval(element+' = "";');
}
//alert (element+' = '+eval(element));
}
}
//
@ -117,12 +117,12 @@ function SCORMapi1_3() {
function Initialize (param) {
if (param == "") {
if (!Initialized) {
Initialized = true;
errorCode = "0";
return "true";
Initialized = true;
errorCode = "0";
return "true";
} else {
errorCode = "101";
}
errorCode = "101";
}
} else {
errorCode = "201";
}
@ -130,131 +130,131 @@ function SCORMapi1_3() {
}
function Terminate (param) {
if (param == "") {
if (param == "") {
if (Initialized) {
LMSCommit("");
Initialized = false;
errorCode = "0";
return "true";
LMSCommit("");
Initialized = false;
errorCode = "0";
return "true";
} else {
errorCode = "301";
errorCode = "301";
}
} else {
errorCode = "201";
}
}
}
function GetValue (element) {
if (Initialized) {
if (element !="") {
expression = new RegExp(CMIIndex,'g');
element = element.replace(expression,'.n.');
if ((typeof eval('datamodel["'+element+'"]')) != "undefined") {
if (eval('datamodel["'+element+'"].mod') != 'w') {
errorCode = "0";
return eval(element);
} else {
errorCode = eval('datamodel["'+element+'"].readerror');
}
} else {
errorCode = "401"
}
} else {
errorCode = "201";
}
} else {
if (Initialized) {
if (element !="") {
expression = new RegExp(CMIIndex,'g');
element = element.replace(expression,'.n.');
if ((typeof eval('datamodel["'+element+'"]')) != "undefined") {
if (eval('datamodel["'+element+'"].mod') != 'w') {
errorCode = "0";
return eval(element);
} else {
errorCode = eval('datamodel["'+element+'"].readerror');
}
} else {
errorCode = "401"
}
} else {
errorCode = "201";
}
} else {
errorCode = "301";
}
return "";
return "";
}
function SetValue (element,value) {
if (Initialized) {
if (element != "") {
expression = new RegExp(CMIIndex,'g');
elementmodel = element.replace(expression,'.n.');
if ((typeof eval('datamodel["'+elementmodel+'"]')) != "undefined") {
if (eval('datamodel["'+elementmodel+'"].mod') != 'r') {
expression.compile(eval('datamodel["'+elementmodel+'"].format'));
value = value+'';
matches = value.match(expression);
if (matches != null) {
//Create dynamic data model element
if (element != elementmodel) {
elementIndexes = element.split('.');
subelement = 'cmi';
for (i=1;i < elementIndexes.length-1;i++) {
elementIndex = elementIndexes[i];
if (elementIndexes[i+1].match(/^\d+$/)) {
//alert(eval(subelement+'.'+elementIndex+'._count')+1.0);
//if (elementIndexes[i+1] > eval(subelement+'.'+elementIndex+'._count')) {
// if (elementIndexes[i+1] == eval(subelement+'.'+elementIndex+'._count')) {
// eval(subelement+'.'+elementIndex+'._count')+1.0;
// }
subelement = subelement.concat('.'+elementIndex+'_'+elementIndexes[i+1]);
i++;
//}
} else {
subelement = subelement.concat('.'+elementIndex);
}
if (Initialized) {
if (element != "") {
expression = new RegExp(CMIIndex,'g');
elementmodel = element.replace(expression,'.n.');
if ((typeof eval('datamodel["'+elementmodel+'"]')) != "undefined") {
if (eval('datamodel["'+elementmodel+'"].mod') != 'r') {
expression.compile(eval('datamodel["'+elementmodel+'"].format'));
value = value+'';
matches = value.match(expression);
if (matches != null) {
//Create dynamic data model element
if (element != elementmodel) {
elementIndexes = element.split('.');
subelement = 'cmi';
for (i=1;i < elementIndexes.length-1;i++) {
elementIndex = elementIndexes[i];
if (elementIndexes[i+1].match(/^\d+$/)) {
//alert(eval(subelement+'.'+elementIndex+'._count')+1.0);
//if (elementIndexes[i+1] > eval(subelement+'.'+elementIndex+'._count')) {
//if (elementIndexes[i+1] == eval(subelement+'.'+elementIndex+'._count')) {
// eval(subelement+'.'+elementIndex+'._count')+1.0;
// }
subelement = subelement.concat('.'+elementIndex+'_'+elementIndexes[i+1]);
i++;
//}
} else {
subelement = subelement.concat('.'+elementIndex);
}
if ((typeof eval(subelement)) == "undefined") {
eval(subelement+' = new Object();');
/*if (elementIndexes[i].match(/^\d+$/)) {
alert(subelement.substring(0,subelement.length-elementIndexes[i]-1));
if ((typeof eval(subelement.substring(0,subelement.length-elementIndexes[i]-1))) == "undefined") {
// create new count
}
} */
}
}
element = subelement.concat('.'+elementIndexes[elementIndexes.length-1]);
//alert('LMSSetValue: '+element+'\nModel: '+elementmodel+'\nValue: '+value+'\nMatches: '+matches);
}
//Store data
if ((typeof eval('datamodel["'+elementmodel+'"].range')) != "undefined") {
range = eval('datamodel["'+elementmodel+'"].range');
ranges = range.split('#');
value = value+0.0;
if ((value >= ranges[0]) && (value <= ranges[1])) {
eval(element+'="'+value+'";');
errorCode = "0";
return "true";
} else {
errorCode = eval('datamodel["'+elementmodel+'"].writeerror');
}
} else {
eval(element+'="'+value+'";');
errorCode = "0";
return "true";
}
} else {
errorCode = eval('datamodel["'+elementmodel+'"].writeerror');
}
} else {
errorCode = eval('datamodel["'+elementmodel+'"].writeerror');
}
} else {
errorCode = "401"
}
} else {
errorCode = "201";
}
} else {
if ((typeof eval(subelement)) == "undefined") {
eval(subelement+' = new Object();');
/*if (elementIndexes[i].match(/^\d+$/)) {
alert(subelement.substring(0,subelement.length-elementIndexes[i]-1));
if ((typeof eval(subelement.substring(0,subelement.length-elementIndexes[i]-1))) == "undefined") {
// create new count
}
} */
}
}
element = subelement.concat('.'+elementIndexes[elementIndexes.length-1]);
//alert('LMSSetValue: '+element+'\nModel: '+elementmodel+'\nValue: '+value+'\nMatches: '+matches);
}
//Store data
if ((typeof eval('datamodel["'+elementmodel+'"].range')) != "undefined") {
range = eval('datamodel["'+elementmodel+'"].range');
ranges = range.split('#');
value = value+0.0;
if ((value >= ranges[0]) && (value <= ranges[1])) {
eval(element+'="'+value+'";');
errorCode = "0";
return "true";
} else {
errorCode = eval('datamodel["'+elementmodel+'"].writeerror');
}
} else {
eval(element+'="'+value+'";');
errorCode = "0";
return "true";
}
} else {
errorCode = eval('datamodel["'+elementmodel+'"].writeerror');
}
} else {
errorCode = eval('datamodel["'+elementmodel+'"].writeerror');
}
} else {
errorCode = "401"
}
} else {
errorCode = "201";
}
} else {
errorCode = "301";
}
alert('LMSSetValue: '+element+'\nValue: '+value+'\nPattern: '+expression+'\nMatches: '+matches+'\nError Code: '+errorCode);
return "false";
alert('LMSSetValue: '+element+'\nValue: '+value+'\nPattern: '+expression+'\nMatches: '+matches+'\nError Code: '+errorCode);
return "false";
}
function Commit (param) {
if (param == "") {
if (param == "") {
if (Initialized) {
errorCode = "0";
return "true";
errorCode = "0";
return "true";
} else {
errorCode = "301";
}
errorCode = "301";
}
} else {
errorCode = "201";
}
@ -262,41 +262,41 @@ function SCORMapi1_3() {
}
function GetLastError () {
return errorCode;
return errorCode;
}
function GetErrorString (param) {
var errorString = new Array();
errorString["0"] = "No error";
errorString["101"] = "General exception";
errorString["102"] = "General Inizialization Failure";
errorString["103"] = "Already Initialized";
errorString["104"] = "Content Instance Terminated";
errorString["111"] = "General Termination Failure";
errorString["112"] = "Termination Before Inizialization";
errorString["113"] = "Termination After Termination";
errorString["122"] = "Retrieve Data Before Initialization";
errorString["123"] = "Retrieve Data After Termination";
errorString["132"] = "Store Data Before Inizialization";
errorString["133"] = "Store Data After Termination";
errorString["142"] = "Commit Before Inizialization";
errorString["143"] = "Commit After Termination";
errorString["201"] = "General Argument Error";
errorString["301"] = "General Get Failure";
errorString["351"] = "General Set Failure";
errorString["391"] = "General Commit Failure";
errorString["401"] = "Undefinited Data Model";
errorString["402"] = "Unimplemented Data Model Element";
errorString["403"] = "Data Model Element Value Not Initialized";
errorString["404"] = "Data Model Element Is Read Only";
errorString["405"] = "Data Model Element Is Write Only";
errorString["406"] = "Data Model Element Type Mismatch";
errorString["407"] = "Data Model Element Value Out Of Range";
errorString["408"] = "Data Model Dependency Not Established";
return errorString[param];
var errorString = new Array();
errorString["0"] = "No error";
errorString["101"] = "General exception";
errorString["102"] = "General Inizialization Failure";
errorString["103"] = "Already Initialized";
errorString["104"] = "Content Instance Terminated";
errorString["111"] = "General Termination Failure";
errorString["112"] = "Termination Before Inizialization";
errorString["113"] = "Termination After Termination";
errorString["122"] = "Retrieve Data Before Initialization";
errorString["123"] = "Retrieve Data After Termination";
errorString["132"] = "Store Data Before Inizialization";
errorString["133"] = "Store Data After Termination";
errorString["142"] = "Commit Before Inizialization";
errorString["143"] = "Commit After Termination";
errorString["201"] = "General Argument Error";
errorString["301"] = "General Get Failure";
errorString["351"] = "General Set Failure";
errorString["391"] = "General Commit Failure";
errorString["401"] = "Undefinited Data Model";
errorString["402"] = "Unimplemented Data Model Element";
errorString["403"] = "Data Model Element Value Not Initialized";
errorString["404"] = "Data Model Element Is Read Only";
errorString["405"] = "Data Model Element Is Write Only";
errorString["406"] = "Data Model Element Type Mismatch";
errorString["407"] = "Data Model Element Value Out Of Range";
errorString["408"] = "Data Model Dependency Not Established";
return errorString[param];
}
function GetDiagnostic (param) {
return SCORM_Call('GetDiagnostic',param);
return SCORM_Call('GetDiagnostic',param);
}
this.Initialize = Initialize;

View file

@ -23,8 +23,8 @@ function scorm_upgrade($oldversion) {
table_column("scorm_scoes", "", "organization", "VARCHAR", "255", "", "", "NOT NULL", "manifest");
}
if ($oldversion < 2004071900) {
table_column("scorm", "", "maxgrade", "FLOAT", "3", "", "0", "NOT NULL", "reference");
table_column("scorm", "", "grademethod", "TINYINT", "2", "", "0", "NOT NULL", "maxgrade");
table_column("scorm", "", "maxgrade", "FLOAT", "3", "", "0", "NOT NULL", "reference");
table_column("scorm", "", "grademethod", "TINYINT", "2", "", "0", "NOT NULL", "maxgrade");
}
if ($oldversion < 2004111200) {
@ -42,57 +42,57 @@ function scorm_upgrade($oldversion) {
}
if ($oldversion < 2005031300) {
table_column("scorm_scoes", "", "prerequisites", "VARCHAR", "200", "", "", "NOT NULL", "title");
table_column("scorm_scoes", "", "maxtimeallowed", "VARCHAR", "13", "", "", "NOT NULL", "prerequisites");
modify_database('',"ALTER TABLE prefix_scorm_scoes ADD timelimitaction SET('exit,message','exit,no message','continue,message','continue,no message') DEFAULT '' AFTER `maxtimeallowed`");
table_column("scorm_scoes", "", "masteryscore", "VARCHAR", "200", "", "", "NOT NULL", "datafromlms");
table_column("scorm_scoes", "", "prerequisites", "VARCHAR", "200", "", "", "NOT NULL", "title");
table_column("scorm_scoes", "", "maxtimeallowed", "VARCHAR", "13", "", "", "NOT NULL", "prerequisites");
modify_database('',"ALTER TABLE prefix_scorm_scoes ADD timelimitaction SET('exit,message','exit,no message','continue,message','continue,no message') DEFAULT '' AFTER `maxtimeallowed`");
table_column("scorm_scoes", "", "masteryscore", "VARCHAR", "200", "", "", "NOT NULL", "datafromlms");
$oldscoes = get_records_select("scorm_scoes","1","id ASC");
modify_database('',"ALTER TABLE prefix_scorm_scoes CHANGE type scormtype SET('sco','asset') DEFAULT '' NOT NULL");
if(!empty($oldscoes)) {
foreach ($oldscoes as $sco) {
$sco->scormtype = $sco->type;
unset($sco->type);
update_record("scorm_scoes",$sco);
}
}
$oldscoes = get_records_select("scorm_scoes","1","id ASC");
modify_database('',"ALTER TABLE prefix_scorm_scoes CHANGE type scormtype SET('sco','asset') DEFAULT '' NOT NULL");
if(!empty($oldscoes)) {
foreach ($oldscoes as $sco) {
$sco->scormtype = $sco->type;
unset($sco->type);
update_record("scorm_scoes",$sco);
}
}
execute_sql("CREATE TABLE {$CFG->prefix}scorm_scoes_track (
id int(10) unsigned NOT NULL auto_increment,
userid int(10) unsigned NOT NULL default '0',
scormid int(10) NOT NULL default '0',
scoid int(10) unsigned NOT NULL default '0',
element varchar(255) NOT NULL default '',
value longtext NOT NULL default '',
PRIMARY KEY (userid, scormid, scoid, element),
UNIQUE (userid, scormid, scoid, element),
KEY userdata (userid, scormid, scoid),
KEY id (id)
) TYPE=MyISAM;",false);
execute_sql("CREATE TABLE {$CFG->prefix}scorm_scoes_track (
id int(10) unsigned NOT NULL auto_increment,
userid int(10) unsigned NOT NULL default '0',
scormid int(10) NOT NULL default '0',
scoid int(10) unsigned NOT NULL default '0',
element varchar(255) NOT NULL default '',
value longtext NOT NULL default '',
PRIMARY KEY (userid, scormid, scoid, element),
UNIQUE (userid, scormid, scoid, element),
KEY userdata (userid, scormid, scoid),
KEY id (id)
) TYPE=MyISAM;",false);
$oldtrackingdata = get_records_select("scorm_sco_users","1","id ASC");
$oldelements = array ('cmi_core_lesson_location','cmi_core_lesson_status','cmi_core_exit','cmi_core_total_time','cmi_core_score_raw','cmi_suspend_data');
$oldtrackingdata = get_records_select("scorm_sco_users","1","id ASC");
$oldelements = array ('cmi_core_lesson_location','cmi_core_lesson_status','cmi_core_exit','cmi_core_total_time','cmi_core_score_raw','cmi_suspend_data');
if(!empty($oldtrackingdata)) {
foreach ($oldtrackingdata as $oldtrack) {
$newtrack = '';
$newtrack->userid = $oldtrack->userid;
$newtrack->scormid = $oldtrack->scormid;
$newtrack->scoid = $oldtrack->scoid;
if(!empty($oldtrackingdata)) {
foreach ($oldtrackingdata as $oldtrack) {
$newtrack = '';
$newtrack->userid = $oldtrack->userid;
$newtrack->scormid = $oldtrack->scormid;
$newtrack->scoid = $oldtrack->scoid;
foreach ( $oldelements as $element) {
$newtrack->element = $element;
$newtrack->value = $oldtrack->$element;
if ($newtrack->value == NULL) {
$newtrack->value = '';
}
insert_record("scorm_scoes_track",$newtrack,false);
}
}
}
foreach ( $oldelements as $element) {
$newtrack->element = $element;
$newtrack->value = $oldtrack->$element;
if ($newtrack->value == NULL) {
$newtrack->value = '';
}
insert_record("scorm_scoes_track",$newtrack,false);
}
}
}
modify_database('',"DROP TABLE prefix_scorm_sco_users");
modify_database('',"INSERT INTO prefix_log_display VALUES ('scorm', 'review', 'resource', 'name')");
modify_database('',"DROP TABLE prefix_scorm_sco_users");
modify_database('',"INSERT INTO prefix_log_display VALUES ('scorm', 'review', 'resource', 'name')");
}
if ($oldversion < 2005040200) {
@ -109,7 +109,7 @@ function scorm_upgrade($oldversion) {
execute_sql("ALTER TABLE {$CFG->prefix}scorm_scoes_track DROP INDEX userid");
modify_database('','ALTER TABLE prefix_scorm_scoes_track ADD UNIQUE track (userid,scormid,scoid,element);');
modify_database('','ALTER TABLE prefix_scorm_scoes_track ADD PRIMARY KEY id (id);');
modify_database('','ALTER TABLE prefix_scorm_scoes_track ADD INDEX scormid (scormid);');
modify_database('','ALTER TABLE prefix_scorm_scoes_track ADD INDEX scormid (scormid);');
modify_database('','ALTER TABLE prefix_scorm_scoes_track ADD INDEX userid (userid);');
modify_database('','ALTER TABLE prefix_scorm_scoes_track ADD INDEX scoid (scoid);');
modify_database('','ALTER TABLE prefix_scorm_scoes_track ADD INDEX element (element);');
@ -123,9 +123,9 @@ function scorm_upgrade($oldversion) {
foreach ($scorms as $scorm) {
if (strlen($scorm->datadir) == 14) {
$basedir = $CFG->dataroot.'/'.$scorm->course;
$scormdir = '/moddata/scorm';
rename($basedir.$scormdir.$scorm->datadir,$basedir.$scormdir.'/'.$scorm->id);
}
$scormdir = '/moddata/scorm';
rename($basedir.$scormdir.$scorm->datadir,$basedir.$scormdir.'/'.$scorm->id);
}
}
}
execute_sql('ALTER TABLE `'.$CFG->prefix.'scorm` DROP `datadir`'); // Old field
@ -136,17 +136,17 @@ function scorm_upgrade($oldversion) {
}
if ($oldversion < 2005042700) {
$trackingdata = get_records_select("scorm_scoes_track","1","id ASC");
if (!empty($trackingdata)) {
$oldelements = array ('cmi_core_lesson_location','cmi_core_lesson_status','cmi_core_exit','cmi_core_total_time','cmi_core_score_raw','cmi_suspend_data');
$newelements = array ('cmi.core.lesson_location','cmi.core.lesson_status','cmi.core.exit','cmi.core.total_time','cmi.core.score.raw','cmi.suspend_data');
foreach ($trackingdata as $track) {
if (($pos = array_search($track->element,$oldelements)) !== false) {
$track->element = $newelements[$pos];
update_record('scorm_scoes_track',$track);
}
}
}
$trackingdata = get_records_select("scorm_scoes_track","1","id ASC");
if (!empty($trackingdata)) {
$oldelements = array ('cmi_core_lesson_location','cmi_core_lesson_status','cmi_core_exit','cmi_core_total_time','cmi_core_score_raw','cmi_suspend_data');
$newelements = array ('cmi.core.lesson_location','cmi.core.lesson_status','cmi.core.exit','cmi.core.total_time','cmi.core.score.raw','cmi.suspend_data');
foreach ($trackingdata as $track) {
if (($pos = array_search($track->element,$oldelements)) !== false) {
$track->element = $newelements[$pos];
update_record('scorm_scoes_track',$track);
}
}
}
}
if ($oldversion < 2005042800) {

View file

@ -42,57 +42,57 @@ function scorm_upgrade($oldversion) {
}
if ($oldversion < 2005031300) {
table_column("scorm_scoes", "", "prerequisites", "VARCHAR", "200", "", "", "NOT NULL", "title");
table_column("scorm_scoes", "", "maxtimeallowed", "VARCHAR", "13", "", "", "NOT NULL", "prerequisites");
table_column("scorm_scoes", "", "timelimitaction", "VARCHAR", "19", "", "", "NOT NULL", "maxtimeallowed");
table_column("scorm_scoes", "", "masteryscore", "VARCHAR", "200", "", "", "NOT NULL", "datafromlms");
table_column("scorm_scoes", "", "prerequisites", "VARCHAR", "200", "", "", "NOT NULL", "title");
table_column("scorm_scoes", "", "maxtimeallowed", "VARCHAR", "13", "", "", "NOT NULL", "prerequisites");
table_column("scorm_scoes", "", "timelimitaction", "VARCHAR", "19", "", "", "NOT NULL", "maxtimeallowed");
table_column("scorm_scoes", "", "masteryscore", "VARCHAR", "200", "", "", "NOT NULL", "datafromlms");
$oldscoes = get_records_select("scorm_scoes",null,"id ASC");
table_column("scorm_scoes", "type", "scormtype", "VARCHAR", "5", "", "", "NOT NULL");
if(!empty($oldscoes)) {
foreach ($oldscoes as $sco) {
$sco->scormtype = $sco->type;
unset($sco->type);
update_record("scorm_scoes",$sco);
}
}
$oldscoes = get_records_select("scorm_scoes",null,"id ASC");
table_column("scorm_scoes", "type", "scormtype", "VARCHAR", "5", "", "", "NOT NULL");
if(!empty($oldscoes)) {
foreach ($oldscoes as $sco) {
$sco->scormtype = $sco->type;
unset($sco->type);
update_record("scorm_scoes",$sco);
}
}
execute_sql("CREATE TABLE {$CFG->prefix}scorm_scoes_track (
id SERIAL,
userid integer NOT NULL default '0',
scormid integer NOT NULL default '0',
scoid integer NOT NULL default '0',
element varchar(255) NOT NULL default '',
value text NOT NULL default '',
PRIMARY KEY (userid, scormid, scoid, element),
UNIQUE (userid, scormid, scoid, element)
);",true);
execute_sql("CREATE TABLE {$CFG->prefix}scorm_scoes_track (
id SERIAL,
userid integer NOT NULL default '0',
scormid integer NOT NULL default '0',
scoid integer NOT NULL default '0',
element varchar(255) NOT NULL default '',
value text NOT NULL default '',
PRIMARY KEY (userid, scormid, scoid, element),
UNIQUE (userid, scormid, scoid, element)
);",true);
modify_database('','CREATE INDEX prefix_scorm_scoes_track_userdata_idx ON prefix_scorm_scoes_track (userid, scormid, scoid);');
modify_database('','CREATE INDEX prefix_scorm_scoes_track_userdata_idx ON prefix_scorm_scoes_track (userid, scormid, scoid);');
$oldtracking = get_records_select('scorm_sco_users',null,'id ASC');
$oldelements = array ('cmi_core_lesson_location','cmi_core_lesson_status','cmi_core_exit','cmi_core_total_time','cmi_core_score_raw','cmi_suspend_data');
$oldtracking = get_records_select('scorm_sco_users',null,'id ASC');
$oldelements = array ('cmi_core_lesson_location','cmi_core_lesson_status','cmi_core_exit','cmi_core_total_time','cmi_core_score_raw','cmi_suspend_data');
if(!empty($oldtrackings)) {
foreach ($oldtrackings as $oldtrack) {
$newtrack = '';
$newtrack->userid = $oldtrack->userid;
$newtrack->scormid = $oldtrack->scormid;
$newtrack->scoid = $oldtrack->scoid;
if(!empty($oldtrackings)) {
foreach ($oldtrackings as $oldtrack) {
$newtrack = '';
$newtrack->userid = $oldtrack->userid;
$newtrack->scormid = $oldtrack->scormid;
$newtrack->scoid = $oldtrack->scoid;
foreach ( $oldelements as $element) {
$newtrack->element = $element;
$newtrack->value = $oldtrack->$element;
if ($newtrack->value == NULL) {
$newtrack->value = '';
}
insert_record('scorm_scoes_track',$newtrack,false);
}
}
}
foreach ( $oldelements as $element) {
$newtrack->element = $element;
$newtrack->value = $oldtrack->$element;
if ($newtrack->value == NULL) {
$newtrack->value = '';
}
insert_record('scorm_scoes_track',$newtrack,false);
}
}
}
modify_database('',"DROP TABLE prefix_scorm_sco_users");
modify_database('',"INSERT INTO prefix_log_display VALUES ('resource', 'review', 'resource', 'name')");
modify_database('',"DROP TABLE prefix_scorm_sco_users");
modify_database('',"INSERT INTO prefix_log_display VALUES ('resource', 'review', 'resource', 'name')");
}
if ($oldversion < 2005040200) {
@ -120,9 +120,9 @@ function scorm_upgrade($oldversion) {
foreach ($scorms as $scorm) {
if (strlen($scorm->datadir) == 14) {
$basedir = $CFG->dataroot.'/'.$scorm->course;
$scormdir = '/moddata/scorm';
rename($basedir.$scormdir.$scorm->datadir,$basedir.$scormdir.'/'.$scorm->id);
}
$scormdir = '/moddata/scorm';
rename($basedir.$scormdir.$scorm->datadir,$basedir.$scormdir.'/'.$scorm->id);
}
}
}
execute_sql('ALTER TABLE '.$CFG->prefix.'scorm DROP datadir'); // Old field
@ -133,17 +133,17 @@ function scorm_upgrade($oldversion) {
}
if ($oldversion < 2005042700) {
$trackingdata = get_records_select("scorm_scoes_track",null,"id ASC");
if (!empty($trackingdata)) {
$oldelements = array ('cmi_core_lesson_location','cmi_core_lesson_status','cmi_core_exit','cmi_core_total_time','cmi_core_score_raw','cmi_suspend_data');
$newelements = array ('cmi.core.lesson_location','cmi.core.lesson_status','cmi.core.exit','cmi.core.total_time','cmi.core.score.raw','cmi.suspend_data');
foreach ($trackingdata as $track) {
if (($pos = array_search($track->element,$oldelements)) !== false) {
$track->element = $newelements[$pos];
update_record('scorm_scoes_track',$track);
}
}
}
$trackingdata = get_records_select("scorm_scoes_track",null,"id ASC");
if (!empty($trackingdata)) {
$oldelements = array ('cmi_core_lesson_location','cmi_core_lesson_status','cmi_core_exit','cmi_core_total_time','cmi_core_score_raw','cmi_suspend_data');
$newelements = array ('cmi.core.lesson_location','cmi.core.lesson_status','cmi.core.exit','cmi.core.total_time','cmi.core.score.raw','cmi.suspend_data');
foreach ($trackingdata as $track) {
if (($pos = array_search($track->element,$oldelements)) !== false) {
$track->element = $newelements[$pos];
update_record('scorm_scoes_track',$track);
}
}
}
}
if ($oldversion < 2005042800) {

File diff suppressed because it is too large Load diff

View file

@ -8,28 +8,28 @@
optional_variable($mode); // lesson mode
if ($id) {
if (! $cm = get_record("course_modules", "id", $id)) {
error("Course Module ID was incorrect");
}
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 (! $course = get_record("course", "id", $cm->course)) {
error("Course is misconfigured");
}
if (! $scorm = get_record("scorm", "id", $cm->instance)) {
error("Course module is incorrect");
}
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");
}
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);
@ -39,25 +39,25 @@
//
// 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>".$sco->id,"id ASC")) {
$sco = current($scoes);
}
}
}
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>".$sco->id,"id ASC")) {
$sco = current($scoes);
}
}
}
} else {
//
// 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);
}
$sco = get_record("scorm_scoes","id",$sco_track->scoid);
}
while ((($sco_track->value == "completed") || ($sco_track->value == "passed") || ($sco_track->value == "failed")) && ($mode == "normal")) {
$sco_track = next($scoes_track);
}
$sco = get_record("scorm_scoes","id",$sco_track->scoid);
}
}
@ -65,8 +65,8 @@
// 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);
$scoes = get_records_select("scorm_scoes","scorm=".$scorm->id." AND launch<>''","id ASC");
$sco = current($scoes);
}
//
@ -75,35 +75,35 @@
$connector = '';
$version = substr($scorm->version,0,4);
if (!empty($sco->parameters) || ($version == 'AICC')) {
if (stripos($sco->launch,'?') !== false) {
$connector = '&';
} else {
if (stripos($sco->launch,'?') !== false) {
$connector = '&';
} else {
$connector = '?';
}
}
if (scorm_external_link($sco->launch)) {
if ($version == 'AICC') {
if (!empty($sco->parameters)) {
$sco->parameters = '&'. $sco->parameters;
}
$result = $sco->launch.$connector.'aicc_sid='.sesskey().'&aicc_url='.$CFG->wwwroot.'/mod/scorm/aicc.php'.$sco->parameters;
} else {
$result = $sco->launch.$connector.$sco->parameters;
}
if ($version == 'AICC') {
if (!empty($sco->parameters)) {
$sco->parameters = '&'. $sco->parameters;
}
$result = $sco->launch.$connector.'aicc_sid='.sesskey().'&aicc_url='.$CFG->wwwroot.'/mod/scorm/aicc.php'.$sco->parameters;
} else {
$result = $sco->launch.$connector.$sco->parameters;
}
} else {
if ($CFG->slasharguments) {
$result = $CFG->wwwroot.'/file.php/'.$scorm->course.'/moddata/scorm/'.$scorm->id.'/'.$sco->launch.$connector.$sco->parameters;
} else {
$result = $CFG->wwwroot.'/file.php?file=/'.$scorm->course.'/moddata/scorm/'.$scorm->id.'/'.$sco->launch.$connector.$sco->parameters;
}
if ($CFG->slasharguments) {
$result = $CFG->wwwroot.'/file.php/'.$scorm->course.'/moddata/scorm/'.$scorm->id.'/'.$sco->launch.$connector.$sco->parameters;
} else {
$result = $CFG->wwwroot.'/file.php?file=/'.$scorm->course.'/moddata/scorm/'.$scorm->id.'/'.$sco->launch.$connector.$sco->parameters;
}
}
?>
<html>
<head>
<title>LoadSCO</title>
<meta http-equiv="refresh" content="1;URL=<?php echo $result ?>" />
<title>LoadSCO</title>
<meta http-equiv="refresh" content="1;URL=<?php echo $result ?>" />
</head>
<body>
&nbsp;
&nbsp;
</body>
</html>

View file

@ -1,16 +1,16 @@
<?php
require_once("$CFG->dirroot/mod/scorm/lib.php");
if (empty($form->name)) {
$form->name = "";
$form->name = "";
}
if (empty($form->reference)) {
$form->reference = "";
$form->reference = "";
}
if (empty($form->summary)) {
$form->summary = "";
$form->summary = "";
}
if (empty($form->launch)) {
$form->launch = "";
$form->launch = "";
}
if (empty($form->auto)) {
$form->auto = "";
@ -55,100 +55,100 @@
var myRequest = NewHttpReq();
result = DoRequest(myRequest,"<?php p($CFG->wwwroot) ?>/mod/scorm/validate.php","id=<?php p($form->course) ?>&reference="+filename+"<?php echo $sessionkey.$scormid.$datadir ?>");
//alert(result);
results = result.split('\n');
result = '';
errorlogs = '';
datadir = '';
for (i=0;i<results.length;i++) {
element = results[i].split('=');
//alert(element);
switch(element[0]) {
case 'result':
result = element[1];
break;
case 'launch':
launch = element[1];
break;
case 'datadir':
datadir = element[1];
break;
case 'pkgtype':
pkgtype = element[1];
break;
case 'errorlogs':
i++;
do {
errorlogs.concat(results[i]+'\n');
i++;
} while (i<results.lenght());
results = result.split('\n');
result = '';
errorlogs = '';
datadir = '';
for (i=0;i<results.length;i++) {
element = results[i].split('=');
//alert(element);
switch(element[0]) {
case 'result':
result = element[1];
break;
case 'launch':
launch = element[1];
break;
case 'datadir':
datadir = element[1];
break;
case 'pkgtype':
pkgtype = element[1];
break;
case 'errorlogs':
i++;
do {
errorlogs.concat(results[i]+'\n');
i++;
} while (i<results.lenght());
break;
}
}
if ((result == "found") || (result == "regular")) {
theform.datadir.value = datadir;
theform.pkgtype.value = pkgtype;
theform.launch.value = launch;
if (launch == 0) {
if ('<?php echo $scormid ?>' != '') {
return confirm('<?php print_string('trackingloose','scorm') ?>');
}
}
return true;
} else {
result = '<?php print_string('validation','scorm') ?>: '+ result + '\n';
if (errorlogs != '') {
result.concat('<?php print_string('errorlogs','scorm') ?>:\n'+errorlogs);
}
alert(result);
return false;
}
break;
}
}
if ((result == "found") || (result == "regular")) {
theform.datadir.value = datadir;
theform.pkgtype.value = pkgtype;
theform.launch.value = launch;
if (launch == 0) {
if ('<?php echo $scormid ?>' != '') {
return confirm('<?php print_string('trackingloose','scorm') ?>');
}
}
return true;
} else {
result = '<?php print_string('validation','scorm') ?>: '+ result + '\n';
if (errorlogs != '') {
result.concat('<?php print_string('errorlogs','scorm') ?>:\n'+errorlogs);
}
alert(result);
return false;
}
}
function checkmethod (grademethod,maxgrade) {
if (grademethod.options[grademethod.selectedIndex].value == 0) {
maxgrade.disabled=true;
} else {
maxgrade.disabled=false;
}
if (grademethod.options[grademethod.selectedIndex].value == 0) {
maxgrade.disabled=true;
} else {
maxgrade.disabled=false;
}
}
</script>
<form name="form" method="post" action="mod.php" onsubmit="return validate_scorm(document.form,document.form.reference.value);">
<table cellpadding="5">
<tr valign="top">
<td align="right"><b><?php print_string("name") ?>:</b></td>
<td>
<input type="text" name="name" size="50" value="<?php p($form->name) ?>" alt="<?php print_string("name") ?>" />
</td>
</tr>
<tr valign="top">
<td align="right"><b><?php print_string("name") ?>:</b></td>
<td>
<input type="text" name="name" size="50" value="<?php p($form->name) ?>" alt="<?php print_string("name") ?>" />
</td>
</tr>
<?php
$strfilename = get_string("coursepacket", "scorm");
$strchooseafile = get_string("chooseapacket", "scorm");
?>
<tr valign="top">
<td align="right"><b><?php print_string("summary") ?>:</b><br />
<font size="1">
<?php helpbutton("summary", get_string("summary"), "scorm", true, true) ?>
<tr valign="top">
<td align="right"><b><?php print_string("summary") ?>:</b><br />
<font size="1">
<?php helpbutton("summary", get_string("summary"), "scorm", true, true) ?>
</font>
</td>
<td>
</td>
<td>
<?php print_textarea($usehtmleditor, 10, 50, 680, 400, "summary", $form->summary); ?>
</td>
</tr>
<tr valign="top">
<td align="right" nowrap="nowrap">
<b><?php echo $strfilename?>:</b>
</td>
<td>
<?php
echo "<input name=\"reference\" size=\"50\" value=\"$form->reference\" alt=\"$strfilename\" />&nbsp;";
button_to_popup_window ("/files/index.php?id=$course->id&amp;choose=form.reference",
"coursefiles", $strchooseafile, 500, 750, $strchooseafile);
helpbutton("package", get_string("coursepacket", "scorm"), "scorm", true);
?>
</td>
</tr>
</td>
</tr>
<tr valign="top">
<td align="right" nowrap="nowrap">
<b><?php echo $strfilename?>:</b>
</td>
<td>
<?php
echo "<input name=\"reference\" size=\"50\" value=\"$form->reference\" alt=\"$strfilename\" />&nbsp;";
button_to_popup_window ("/files/index.php?id=$course->id&amp;choose=form.reference",
"coursefiles", $strchooseafile, 500, 750, $strchooseafile);
helpbutton("package", get_string("coursepacket", "scorm"), "scorm", true);
?>
</td>
</tr>
<tr valign="top">
<td align="right"><b><?php print_string("grademethod", "scorm") ?>:</b></td>
<td>
@ -165,13 +165,13 @@
for ($i=100; $i>=1; $i--) {
$grades[$i] = $i;
}
$disabled = $form->grademethod=='0';
$disabled = $form->grademethod=='0';
choose_from_menu($grades, 'maxgrade', "$form->maxgrade", '','','0',false,$disabled);
helpbutton('maxgrade', get_string('maximumgrade'), 'scorm');
?>
</td>
</tr>
<tr>
<tr>
<td align="right"><b><?php print_string("autocontinue","scorm") ?>:</b></td>
<td>
<?php
@ -181,9 +181,9 @@
choose_from_menu ($options, "auto", $form->auto,'');
helpbutton("autocontinue", get_string("autocontinue", "scorm"), "scorm", true);
?>
</td>
</tr>
<tr>
</td>
</tr>
<tr>
<td align="right"><b><?php print_string("enablebrowse","scorm") ?>:</b></td>
<td>
<?php
@ -193,22 +193,22 @@
choose_from_menu ($options, "browsemode", $form->browsemode, '');
helpbutton("browsemode", get_string("browsemode", "scorm"), "scorm", true);
?>
</td>
</tr>
<tr valign="top">
</td>
</tr>
<tr valign="top">
<td align="right"><b><?php print_string("width","scorm") ?>:</b></td>
<td>
<input type="text" name="width" value="<?php echo $form->width ?>" size="4" />
<td>
<input type="text" name="width" value="<?php echo $form->width ?>" size="4" />
<?php helpbutton("width", get_string("width", "scorm"), "scorm", true); ?>
</td>
</tr>
<tr valign="top">
</td>
</tr>
<tr valign="top">
<td align="right"><b><?php print_string("height","scorm") ?>:</b></td>
<td>
<input type="text" name="height" value="<?php echo $form->height ?>" size="4" />
<td>
<input type="text" name="height" value="<?php echo $form->height ?>" size="4" />
<?php helpbutton("height", get_string("height", "scorm"), "scorm", true); ?>
</td>
</tr>
</td>
</tr>
</table>
<input type="hidden" name="datadir" value="<?php p($form->datadir) ?>" />
<input type="hidden" name="pkgtype" value="<?php p($form->pkgtype) ?>" />
@ -223,7 +223,7 @@
<input type="hidden" name="instance" value="<?php p($form->instance) ?>" />
<input type="hidden" name="mode" value="<?php p($form->mode) ?>" />
<center>
<input type="submit" value="<?php print_string('savechanges') ?>" />
<input type="button" name="cancel" value="<?php print_string('cancel') ?>" onclick="document.location='view.php?id=<?php echo $form->course ?>'" />
<input type="submit" value="<?php print_string('savechanges') ?>" />
<input type="button" name="cancel" value="<?php print_string('cancel') ?>" onclick="document.location='view.php?id=<?php echo $form->course ?>'" />
</center>
</form>

View file

@ -71,8 +71,8 @@
$scoidstring = '&scoid='.$scoid;
}
if (!empty($_POST['currentorg'])) {
$currentorg = $_POST['currentorg'];
$currentorgstring = '&currentorg='.$currentorg;
$currentorg = $_POST['currentorg'];
$currentorgstring = '&currentorg='.$currentorg;
}
$strexpand = get_string('expcoll','scorm');
@ -85,33 +85,33 @@
//$bodyscripts = "onunload='SCOFinish();'";
$bodyscripts = '';
print_header($pagetitle, "$course->fullname",
"$navigation <a target='{$CFG->framename}' href='view.php?id=$cm->id'>".format_string($scorm->name,true)."</a>",
'', '', true, update_module_button($cm->id, $course->id, $strscorm),'',false,$bodyscripts);
"$navigation <a target='{$CFG->framename}' href='view.php?id=$cm->id'>".format_string($scorm->name,true)."</a>",
'', '', true, update_module_button($cm->id, $course->id, $strscorm),'',false,$bodyscripts);
?>
<table width="100%">
<tr><td valign="top">
<p><?php echo format_text($scorm->summary) ?></p>
<p><?php echo $mode == 'browse' ? get_string('browsemode','scorm') : '&nbsp;'; ?></p>
<table class='generalbox' cellpadding='5' cellspacing='0'>
<tr>
<th>
<div style='float: left;'><?php print_string('coursestruct','scorm') ?></div>
<!--<div style='float:right;'>
<a href='#' onClick='popup(main,popupimg);'><img id='popupimg' src="pix/popup.gif" alt="<?php echo $strpopup ?>" title="<?php echo $strpopup ?>"/></a>
</div> -->
</th>
</tr>
<!-- <tr><td width="<?php echo $CFG->scorm_structurewidth ?>%"> -->
<tr><td width="<?php echo $CFG->scorm_structurewidth ?>%">
<table class='generalbox' cellpadding='5' cellspacing='0'>
<tr>
<th>
<div style='float: left;'><?php print_string('coursestruct','scorm') ?></div>
<!--<div style='float:right;'>
<a href='#' onClick='popup(main,popupimg);'><img id='popupimg' src="pix/popup.gif" alt="<?php echo $strpopup ?>" title="<?php echo $strpopup ?>"/></a>
</div> -->
</th>
</tr>
<!-- <tr><td width="<?php echo $CFG->scorm_structurewidth ?>%"> -->
<tr><td width="<?php echo $CFG->scorm_structurewidth ?>%">
<?php
$sco = scorm_display_structure($scorm,'scormlist',$currentorg,$scoid,$mode,true);
if ($mode == 'normal') {
if ($trackdata = scorm_get_tracks($USER->id,$sco->id)) {
if (($trackdata->status == 'completed') || ($trackdata->status == 'passed') || ($trackdata->status == 'failed')) {
$mode = 'review';
}
}
if ($trackdata = scorm_get_tracks($USER->id,$sco->id)) {
if (($trackdata->status == 'completed') || ($trackdata->status == 'passed') || ($trackdata->status == 'failed')) {
$mode = 'review';
}
}
}
add_to_log($course->id, 'scorm', 'view', "playscorm.php?id=$cm->id&scoid=$sco->id", "$scorm->id");
$scoidstring = '&scoid='.$sco->id;
@ -119,18 +119,18 @@
$SESSION->scorm_scoid = $sco->id;
?>
</td></tr>
<tr><td align="center">
<form name="navform" method="post" action="playscorm.php?id=<?php echo $cm->id ?>" target="_top">
<input name="scoid" type="hidden" />
<input name="currentorg" type="hidden" value="<?php echo $currentorg ?>" />
<input name="mode" type="hidden" value="<?php echo $mode ?>" />
<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();" />
<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 />
<input name="exit" type="button" value="<?php print_string('exit','scorm') ?>" onClick="playSCO(0)" />
</form>
</td></tr>
</table>
</td></tr>
<tr><td align="center">
<form name="navform" method="post" action="playscorm.php?id=<?php echo $cm->id ?>" target="_top">
<input name="scoid" type="hidden" />
<input name="currentorg" type="hidden" value="<?php echo $currentorg ?>" />
<input name="mode" type="hidden" value="<?php echo $mode ?>" />
<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();" />
<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 />
<input name="exit" type="button" value="<?php print_string('exit','scorm') ?>" onClick="playSCO(0)" />
</form>
</td></tr>
</table>
</td>
<td valign="top" width="<?php print $scorm->width ?>">
<iframe name="main" width="100%" height="<?php echo $scorm->height ?>" src="loadSCO.php?id=<?php echo $cm->id.$scoidstring.$modestring ?>"></iframe>
@ -153,25 +153,25 @@
}
}
function popup(win,image) {
win = window.open("loadSCO.php?id=<?php echo $cm->id.$scoidstring.$modestring ?>","","width=<?php echo $scorm->width ?>,height=<?php echo $scorm->height ?>,scrollbars=1");
function popup(win,image) {
win = window.open("loadSCO.php?id=<?php echo $cm->id.$scoidstring.$modestring ?>","","width=<?php echo $scorm->width ?>,height=<?php echo $scorm->height ?>,scrollbars=1");
image.src = "pix/popdown.gif";
return win;
}
return win;
}
function prevSCO() {
playSCO(<?php echo $sco->prev ?>);
}
function prevSCO() {
playSCO(<?php echo $sco->prev ?>);
}
function nextSCO() {
playSCO(<?php echo $sco->next ?>);
}
function nextSCO() {
playSCO(<?php echo $sco->next ?>);
}
function expandCollide(which,list) {
var nn=document.ids?true:false
var w3c=document.getElementById?true:false
var beg=nn?"document.ids.":w3c?"document.getElementById(":"document.all.";
var mid=w3c?").style":".style";
var w3c=document.getElementById?true:false
var beg=nn?"document.ids.":w3c?"document.getElementById(":"document.all.";
var mid=w3c?").style":".style";
if (eval(beg+list+mid+".display") != "none") {
which.src = "pix/plus.gif";

View file

@ -58,22 +58,22 @@
$strscorm = get_string("modulename", "scorm");
$strreport = get_string("report", "scorm");
$strname = get_string('name');
if (!empty($id)) {
if (!empty($id)) {
print_header("$course->shortname: ".format_string($scorm->name), "$course->fullname",
"$navigation <a href=\"index.php?id=$course->id\">$strscorms</a>
-> <a href=\"view.php?id=$cm->id\">".format_string($scorm->name,true)."</a> -> $strreport",
"", "", true);
} else {
} else {
print_header("$course->shortname: ".format_string($scorm->name), "$course->fullname",
"$navigation <a href=\"index.php?id=$course->id\">$strscorms</a>
-> <a href=\"view.php?id=$cm->id\">".format_string($scorm->name,true)."</a>
-> <a href=\"report.php?id=$cm->id\">$strreport</a> -> $sco->title",
-> <a href=\"report.php?id=$cm->id\">$strreport</a> -> $sco->title",
"", "", true);
}
}
print_heading(format_string($scorm->name));
}
if (!empty($id)) {
if ($scoes = get_records_select("scorm_scoes","scorm='$scorm->id' ORDER BY id")) {
if ($scoes = get_records_select("scorm_scoes","scorm='$scorm->id' ORDER BY id")) {
if ($scousers=get_records_select("scorm_scoes_track", "scormid='$scorm->id' GROUP BY userid,scormid", "", "userid,scormid")) {
$table->head = array('&nbsp;', $strname);
$table->align = array('center', 'left');
@ -81,88 +81,88 @@
$table->width = '100%';
$table->size = array(10, '*');
foreach ($scoes as $sco) {
if ($sco->launch!='') {
$table->head[]=scorm_string_round($sco->title);
$table->align[] = 'center';
$table->wrap[] = 'nowrap';
$table->size[] = '*';
}
if ($sco->launch!='') {
$table->head[]=scorm_string_round($sco->title);
$table->align[] = 'center';
$table->wrap[] = 'nowrap';
$table->size[] = '*';
}
}
foreach ($scousers as $scouser) {
if ($userdata = scorm_get_user_data($scouser->userid)) {
$row = '';
$row[] = print_user_picture($scouser->userid, $course->id, $userdata->picture, false, true);
$row[] = "<a href=\"$CFG->wwwroot/user/view.php?id=$scouser->userid&course=$course->id\">".
"$userdata->firstname $userdata->lastname</a>";
foreach ($scoes as $sco) {
if ($sco->launch!='') {
$anchorstart = '';
$anchorend = '';
$scoreview = '';
if ($trackdata = scorm_get_tracks($sco->id,$scouser->userid)) {
if ($trackdata->score_raw != '') {
$scoreview = '<br />'.get_string('score','scorm').':&nbsp;'.$trackdata->score_raw;
}
if ($trackdata->status == '') {
$trackdata->status = 'notattempted';
} else {
$anchorstart = '<a href="report.php?b='.$sco->id.'&user='.$scouser->userid.'" title="'.get_string('details','scorm').'">';
$anchorend = '</a>';
}
} else {
$trackdata->status = 'notattempted';
$trackdata->total_time = '';
}
$strstatus = get_string($trackdata->status,'scorm');
$row[] = $anchorstart.'<img src="pix/'.$trackdata->status.'.gif" alt="'.$strstatus.'" title="'.
$strstatus.'">&nbsp;'.$trackdata->total_time.$scoreview.$anchorend;
}
}
$table->data[] = $row;
}
}
print_table($table);
foreach ($scousers as $scouser) {
if ($userdata = scorm_get_user_data($scouser->userid)) {
$row = '';
$row[] = print_user_picture($scouser->userid, $course->id, $userdata->picture, false, true);
$row[] = "<a href=\"$CFG->wwwroot/user/view.php?id=$scouser->userid&course=$course->id\">".
"$userdata->firstname $userdata->lastname</a>";
foreach ($scoes as $sco) {
if ($sco->launch!='') {
$anchorstart = '';
$anchorend = '';
$scoreview = '';
if ($trackdata = scorm_get_tracks($sco->id,$scouser->userid)) {
if ($trackdata->score_raw != '') {
$scoreview = '<br />'.get_string('score','scorm').':&nbsp;'.$trackdata->score_raw;
}
if ($trackdata->status == '') {
$trackdata->status = 'notattempted';
} else {
$anchorstart = '<a href="report.php?b='.$sco->id.'&user='.$scouser->userid.'" title="'.get_string('details','scorm').'">';
$anchorend = '</a>';
}
} else {
$trackdata->status = 'notattempted';
$trackdata->total_time = '';
}
$strstatus = get_string($trackdata->status,'scorm');
$row[] = $anchorstart.'<img src="pix/'.$trackdata->status.'.gif" alt="'.$strstatus.'" title="'.
$strstatus.'">&nbsp;'.$trackdata->total_time.$scoreview.$anchorend;
}
}
$table->data[] = $row;
}
}
print_table($table);
} else {
notice('No users to report');
}
}
}
}
} else {
if (!empty($user)) {
if ($userdata = scorm_get_user_data($user)) {
print_simple_box_start('center');
if (!empty($user)) {
if ($userdata = scorm_get_user_data($user)) {
print_simple_box_start('center');
print_heading(format_string($sco->title));
echo '<div align="center">'."\n";
print_user_picture($user, $course->id, $userdata->picture, false, false);
echo "<a href=\"$CFG->wwwroot/user/view.php?id=$user&course=$course->id\">".
"$userdata->firstname $userdata->lastname</a><br />";
$scoreview = '';
if ($trackdata = scorm_get_tracks($sco->id,$user)) {
if ($trackdata->score_raw != '') {
$scoreview = get_string('score','scorm').':&nbsp;'.$trackdata->score_raw;
}
if ($trackdata->status == '') {
$trackdata->status = 'notattempted';
}
} else {
$trackdata->status = 'notattempted';
$trackdata->total_time = '';
}
$strstatus = get_string($trackdata->status,'scorm');
echo '<img src="pix/'.$trackdata->status.'.gif" alt="'.$strstatus.'" title="'.
$strstatus.'">&nbsp;'.$trackdata->total_time.'<br />'.$scoreview.'<br />';
echo '</div>'."\n";
//print_r($trackdata);
foreach($trackdata as $element => $value) {
if (substr($element,0,3) == 'cmi') {
echo $element.' => '.$value.'<br />';
}
}
print_simple_box_end();
}
} else {
error('Missing script parameter');
}
echo '<div align="center">'."\n";
print_user_picture($user, $course->id, $userdata->picture, false, false);
echo "<a href=\"$CFG->wwwroot/user/view.php?id=$user&course=$course->id\">".
"$userdata->firstname $userdata->lastname</a><br />";
$scoreview = '';
if ($trackdata = scorm_get_tracks($sco->id,$user)) {
if ($trackdata->score_raw != '') {
$scoreview = get_string('score','scorm').':&nbsp;'.$trackdata->score_raw;
}
if ($trackdata->status == '') {
$trackdata->status = 'notattempted';
}
} else {
$trackdata->status = 'notattempted';
$trackdata->total_time = '';
}
$strstatus = get_string($trackdata->status,'scorm');
echo '<img src="pix/'.$trackdata->status.'.gif" alt="'.$strstatus.'" title="'.
$strstatus.'">&nbsp;'.$trackdata->total_time.'<br />'.$scoreview.'<br />';
echo '</div>'."\n";
//print_r($trackdata);
foreach($trackdata as $element => $value) {
if (substr($element,0,3) == 'cmi') {
echo $element.' => '.$value.'<br />';
}
}
print_simple_box_end();
}
} else {
error('Missing script parameter');
}
}
if (empty($noheader)) {
print_footer($course);

View file

@ -4,18 +4,18 @@ function NewHttpReq() {
httpReq = new XMLHttpRequest();
} else {
try {
httpReq = new ActiveXObject("Msxml2.XMLHTTP.4.0");
httpReq = new ActiveXObject("Msxml2.XMLHTTP.4.0");
} catch (e) {
try {
httpReq = new ActiveXObject("Msxml2.XMLHTTP");
} catch (ee) {
try {
httpReq = new ActiveXObject("Microsoft.XMLHTTP");
} catch (eee) {
httpReq = false;
}
}
}
try {
httpReq = new ActiveXObject("Msxml2.XMLHTTP");
} catch (ee) {
try {
httpReq = new ActiveXObject("Microsoft.XMLHTTP");
} catch (eee) {
httpReq = false;
}
}
}
}
return httpReq;
}

View file

@ -95,7 +95,7 @@
for($i = 0; $i < sizeof($scoes); $i++) {
$sub_info = $scoes[$i];
//We'll need this later!!
//We'll need this later!!
$oldid = backup_todb($sub_info['#']['ID']['0']['#']);
//Now, build the scorm_scoes record structure

View file

@ -10,33 +10,33 @@ if (confirm_sesskey()) {
$courseid = $_GET["id"];
$launch = 0;
if (isset($_GET["instance"])) {
$scormid = $_GET["instance"];
if (is_file($CFG->dataroot.'/'.$courseid.'/'.$reference)) {
$scormid = $_GET["instance"];
if (is_file($CFG->dataroot.'/'.$courseid.'/'.$reference)) {
$fp = fopen($CFG->dataroot.'/'.$courseid.'/'.$reference,"r");
$fstat = fstat($fp);
fclose($fp);
if ($scorm = get_record("scorm","id",$scormid)) {
$launch = $scorm->launch;
$launch = $scorm->launch;
if ((($scorm->timemodified < $fstat["mtime"]) && ($scorm->reference == $reference)) || ($scorm->reference != $reference)) {
// This is a new package
$launch = 0;
$launch = 0;
} else {
// Old package already validated
$validation->result = 'found';
if (strpos($scorm->version,'AICC') !== false) {
$validation->pkgtype = 'AICC';
} else {
$validation->pkgtype = 'SCORM';
}
}
$validation->result = 'found';
if (strpos($scorm->version,'AICC') !== false) {
$validation->pkgtype = 'AICC';
} else {
$validation->result = 'badinstance';
$launch = -1;
}
$validation->pkgtype = 'SCORM';
}
}
} else {
$validation->result = 'badinstance';
$launch = -1;
}
} else {
$validation->result = 'badreference';
$launch = -1;
}
$validation->result = 'badreference';
$launch = -1;
}
}
//$launch = 0;
if ($launch == 0) {
@ -47,24 +47,24 @@ if (confirm_sesskey()) {
// Create a temporary directory to unzip package and validate package
$tempdir = '';
$scormdir = '';
if ($scormdir = make_upload_directory("$courseid/$CFG->moddata/scorm")) {
if ($tempdir = scorm_datadir($scormdir)) {
copy ("$CFG->dataroot/$courseid/$reference", $tempdir."/".basename($reference));
$ext = strtolower(substr(basename($reference),strrpos(basename($reference),'.')));
if (($ext == '.zip') || ($ext == '.pif')) {
unzip_file($tempdir."/".basename($reference), $tempdir, false);
$validation = scorm_validate($tempdir);
} else {
$validation->result = "packagefile";
}
} else {
$validation->result = "packagedir";
}
} else {
$validation->result = "datadir";
}
if (($validation->result != "regular") && ($validation->result != "found")) {
$validation->result = get_string($validation->result,'scorm');
if ($scormdir = make_upload_directory("$courseid/$CFG->moddata/scorm")) {
if ($tempdir = scorm_datadir($scormdir)) {
copy ("$CFG->dataroot/$courseid/$reference", $tempdir."/".basename($reference));
$ext = strtolower(substr(basename($reference),strrpos(basename($reference),'.')));
if (($ext == '.zip') || ($ext == '.pif')) {
unzip_file($tempdir."/".basename($reference), $tempdir, false);
$validation = scorm_validate($tempdir);
} else {
$validation->result = "packagefile";
}
} else {
$validation->result = "packagedir";
}
} else {
$validation->result = "datadir";
}
if (($validation->result != "regular") && ($validation->result != "found")) {
$validation->result = get_string($validation->result,'scorm');
if (is_dir($tempdir)) {
// Delete files and temporary directory
scorm_delete_files($tempdir);
@ -82,19 +82,19 @@ if (confirm_sesskey()) {
echo 'result=' . $validation->result . "\n";
echo 'launch=' . $launch . "\n";
if (isset($validation->pkgtype)) {
echo 'pkgtype=' . $validation->pkgtype . "\n";
echo 'pkgtype=' . $validation->pkgtype . "\n";
}
if (isset($datadir)) {
echo 'datadir=' . $datadir . "\n";
echo 'datadir=' . $datadir . "\n";
}
if (isset($validation->errors[1])) {
echo 'errorlogs='."\n";
foreach($validation->errors as $error) {
echo get_string($error->type,"scorm",$error->data) . "\n";
}
echo 'errorlogs='."\n";
foreach($validation->errors as $error) {
echo get_string($error->type,"scorm",$error->data) . "\n";
}
}
/*if ($validation->pkgtype == 'AICC') {
scorm_parse_aicc("$CFG->dataroot/$courseid/$CFG->moddata/scorm$datadir",$scormid);
scorm_parse_aicc("$CFG->dataroot/$courseid/$CFG->moddata/scorm$datadir",$scormid);
}*/
} else {
echo 'result=' . get_string('badrequest','scorm') . "\n";

File diff suppressed because it is too large Load diff

View file

@ -37,7 +37,7 @@
require_login($course->id, false, $cm);
if (isset($SESSION->scorm_scoid)) {
unset($SESSION->scorm_scoid);
unset($SESSION->scorm_scoid);
}
$strscorms = get_string("modulenameplural", "scorm");
@ -59,81 +59,81 @@
//
if (!$cm->visible and !isteacher($course->id)) {
print_header($pagetitle, "$course->fullname", "$navigation ".format_string($scorm->name), "", "", true,
update_module_button($cm->id, $course->id, $strscorm), navmenu($course, $cm));
update_module_button($cm->id, $course->id, $strscorm), navmenu($course, $cm));
notice(get_string("activityiscurrentlyhidden"));
} else {
print_header($pagetitle, "$course->fullname","$navigation <a target=\"{$CFG->framename}\" href=\"view.php?id=$cm->id\">".format_string($scorm->name,true)."</a>",
"", "", true, update_module_button($cm->id, $course->id, $strscorm), navmenu($course, $cm));
print_header($pagetitle, "$course->fullname","$navigation <a target=\"{$CFG->framename}\" href=\"view.php?id=$cm->id\">".format_string($scorm->name,true)."</a>",
"", "", true, update_module_button($cm->id, $course->id, $strscorm), navmenu($course, $cm));
if (isteacher($course->id)) {
if ($trackedusers = get_record('scorm_scoes_track', 'scormid', $scorm->id, '', '', '', '', 'count(distinct(userid)) as c')) {
echo "<div class=\"reportlink\"><a target=\"{$CFG->framename}\" href=\"report.php?id=$cm->id\">".get_string("viewallreports","scorm",$trackedusers->c)."</a></div>";
if (isteacher($course->id)) {
if ($trackedusers = get_record('scorm_scoes_track', 'scormid', $scorm->id, '', '', '', '', 'count(distinct(userid)) as c')) {
echo "<div class=\"reportlink\"><a target=\"{$CFG->framename}\" href=\"report.php?id=$cm->id\">".get_string("viewallreports","scorm",$trackedusers->c)."</a></div>";
} else {
echo "<div class=\"reportlink\">".get_string("noreports","scorm")."</div>";
echo "<div class=\"reportlink\">".get_string("noreports","scorm")."</div>";
}
}
// Print the main part of the page
}
// Print the main part of the page
print_heading(format_string($scorm->name));
print_heading(format_string($scorm->name));
print_simple_box(format_text($scorm->summary), 'center', '70%', '', 5, 'generalbox', 'intro');
print_simple_box(format_text($scorm->summary), 'center', '70%', '', 5, 'generalbox', 'intro');
if (isguest()) {
if (isguest()) {
print_heading(get_string("guestsno", "scorm"));
print_footer($course);
exit;
}
}
echo "<br />";
$liststyle = "style=\"list-style-type:none;\"";
print_simple_box_start("center");
echo "<table>\n";
echo " <tr><th>".get_string("coursestruct","scorm")."</th></tr>\n";
$organization = $scorm->launch;
if ($orgs = get_records_select_menu('scorm_scoes',"scorm='$scorm->id' AND organization='' AND launch=''",'id','id,title')) {
if (count($orgs) > 1) {
if (isset($_POST['organization'])) {
$organization = $_POST['organization'];
}
echo "<tr><td align='center'><form name='changeorg' method='post' action='view.php?id=$cm->id'>".get_string('organizations','scorm').": \n";
choose_from_menu($orgs, 'organization', "$organization", '','submit()');
echo "</form></td></tr>\n";
}
}
$orgidentifier = '';
if ($org = get_record('scorm_scoes','id',$organization)) {
if (($org->organization == '') && ($org->launch == '')) {
$orgidentifier = $org->identifier;
} else {
$orgidentifier = $org->organization;
}
}
echo " <tr><td nowrap=\"nowrap\">\n";
$incomplete = scorm_display_structure($scorm,'scormlist',$orgidentifier);
echo "</td></tr>\n";
echo "</table>\n";
print_simple_box_end();
echo "<form name=\"theform\" method=\"post\" action=\"playscorm.php?id=$cm->id\">\n";
echo "<table align=\"center\">\n<tr>\n<td align=\"center\">";
if ($scorm->browsemode == 1) {
print_string("mode","scorm");
echo ": <input type=\"radio\" id=\"b\" name=\"mode\" value=\"browse\" /><label for=\"b\">".get_string("browse","scorm")."</label>\n";
if ($incomplete === true) {
echo "<input type=\"radio\" id=\"n\" name=\"mode\" value=\"normal\" checked=\"checked\" /><label for=\"n\">".get_string("normal","scorm")."</label>\n";
} else {
echo "<input type=\"radio\" id=\"r\" name=\"mode\" value=\"review\" checked=\"checked\" /><label for=\"r\">".get_string("review","scorm")."</label>\n";
}
} else {
if ($incomplete === true) {
echo '<input type="hidden" name="mode" value="normal" />'."\n";
} else {
echo '<input type="hidden" name="mode" value="review" />'."\n";
}
}
echo "</td>\n</tr>\n<tr><td align=\"center\">";
echo '<input type="hidden" name="scoid" />
<input type="hidden" name="currentorg" value="'.$orgidentifier.'" />
<input type="submit" value="'.get_string("entercourse","scorm").'" />';
echo "\n</td>\n</tr>\n</table>\n</form><br />";
echo "<table>\n";
echo " <tr><th>".get_string("coursestruct","scorm")."</th></tr>\n";
$organization = $scorm->launch;
if ($orgs = get_records_select_menu('scorm_scoes',"scorm='$scorm->id' AND organization='' AND launch=''",'id','id,title')) {
if (count($orgs) > 1) {
if (isset($_POST['organization'])) {
$organization = $_POST['organization'];
}
echo "<tr><td align='center'><form name='changeorg' method='post' action='view.php?id=$cm->id'>".get_string('organizations','scorm').": \n";
choose_from_menu($orgs, 'organization', "$organization", '','submit()');
echo "</form></td></tr>\n";
}
}
$orgidentifier = '';
if ($org = get_record('scorm_scoes','id',$organization)) {
if (($org->organization == '') && ($org->launch == '')) {
$orgidentifier = $org->identifier;
} else {
$orgidentifier = $org->organization;
}
}
echo " <tr><td nowrap=\"nowrap\">\n";
$incomplete = scorm_display_structure($scorm,'scormlist',$orgidentifier);
echo "</td></tr>\n";
echo "</table>\n";
print_simple_box_end();
echo "<form name=\"theform\" method=\"post\" action=\"playscorm.php?id=$cm->id\">\n";
echo "<table align=\"center\">\n<tr>\n<td align=\"center\">";
if ($scorm->browsemode == 1) {
print_string("mode","scorm");
echo ": <input type=\"radio\" id=\"b\" name=\"mode\" value=\"browse\" /><label for=\"b\">".get_string("browse","scorm")."</label>\n";
if ($incomplete === true) {
echo "<input type=\"radio\" id=\"n\" name=\"mode\" value=\"normal\" checked=\"checked\" /><label for=\"n\">".get_string("normal","scorm")."</label>\n";
} else {
echo "<input type=\"radio\" id=\"r\" name=\"mode\" value=\"review\" checked=\"checked\" /><label for=\"r\">".get_string("review","scorm")."</label>\n";
}
} else {
if ($incomplete === true) {
echo '<input type="hidden" name="mode" value="normal" />'."\n";
} else {
echo '<input type="hidden" name="mode" value="review" />'."\n";
}
}
echo "</td>\n</tr>\n<tr><td align=\"center\">";
echo '<input type="hidden" name="scoid" />
<input type="hidden" name="currentorg" value="'.$orgidentifier.'" />
<input type="submit" value="'.get_string("entercourse","scorm").'" />';
echo "\n</td>\n</tr>\n</table>\n</form><br />";
?>
<style type="text/css">
.scormlist {
@ -143,27 +143,27 @@
<script language="javascript" type="text/javascript">
<!--
function playSCO(scoid) {
document.theform.scoid.value = scoid;
document.theform.submit();
document.theform.scoid.value = scoid;
document.theform.submit();
}
function expandCollide(which,list) {
var nn=document.ids?true:false
var w3c=document.getElementById?true:false
var beg=nn?"document.ids.":w3c?"document.getElementById(":"document.all.";
var mid=w3c?").style":".style";
var nn=document.ids?true:false
var w3c=document.getElementById?true:false
var beg=nn?"document.ids.":w3c?"document.getElementById(":"document.all.";
var mid=w3c?").style":".style";
if (eval(beg+list+mid+".display") != "none") {
which.src = "pix/plus.gif";
eval(beg+list+mid+".display='none';");
} else {
which.src = "pix/minus.gif";
eval(beg+list+mid+".display='block';");
}
if (eval(beg+list+mid+".display") != "none") {
which.src = "pix/plus.gif";
eval(beg+list+mid+".display='none';");
} else {
which.src = "pix/minus.gif";
eval(beg+list+mid+".display='block';");
}
}
-->
</script>
<?php
print_footer($course);
print_footer($course);
}
?>