mirror of
https://github.com/moodle/moodle.git
synced 2025-08-04 16:36:37 +02:00
Tabs are out.
Please don't use tabs in source code. Set your editor to 4 cc per tab.!
This commit is contained in:
parent
87dddc1445
commit
5e5b6b7f19
16 changed files with 2799 additions and 2799 deletions
|
@ -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;
|
||||
}
|
||||
?>
|
||||
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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";
|
||||
}
|
||||
}
|
||||
?>
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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) {
|
||||
|
|
|
@ -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
|
@ -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>
|
||||
|
||||
|
||||
</body>
|
||||
</html>
|
||||
|
|
|
@ -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\" /> ";
|
||||
button_to_popup_window ("/files/index.php?id=$course->id&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\" /> ";
|
||||
button_to_popup_window ("/files/index.php?id=$course->id&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>
|
||||
|
|
|
@ -71,8 +71,8 @@
|
|||
$scoidstring = '&scoid='.$scoid;
|
||||
}
|
||||
if (!empty($_POST['currentorg'])) {
|
||||
$currentorg = $_POST['currentorg'];
|
||||
$currentorgstring = '¤torg='.$currentorg;
|
||||
$currentorg = $_POST['currentorg'];
|
||||
$currentorgstring = '¤torg='.$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') : ' '; ?></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";
|
||||
|
|
|
@ -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(' ', $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').': '.$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.'"> '.$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').': '.$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.'"> '.$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').': '.$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.'"> '.$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').': '.$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.'"> '.$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);
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
@ -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);
|
||||
}
|
||||
?>
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue