Merge branch 'MDL-44677_scorm_commit' of git://github.com/davosmith/moodle
This commit is contained in:
@@ -54,11 +54,15 @@ if (confirm_sesskey() && (!empty($scoid))) {
|
||||
$result = true;
|
||||
$request = null;
|
||||
if (has_capability('mod/scorm:savetrack', context_module::instance($cm->id))) {
|
||||
// Preload all current tracking data.
|
||||
$trackdata = $DB->get_records('scorm_scoes_track', array('userid' => $USER->id, 'scormid' => $scorm->id, 'scoid' => $scoid,
|
||||
'attempt' => $attempt), '', 'element, id, value, timemodified');
|
||||
foreach (data_submitted() as $element => $value) {
|
||||
$element = str_replace('__', '.', $element);
|
||||
if (substr($element, 0, 3) == 'cmi') {
|
||||
$netelement = preg_replace('/\.N(\d+)\./', "\.\$1\.", $element);
|
||||
$result = scorm_insert_track($USER->id, $scorm->id, $scoid, $attempt, $element, $value, $scorm->forcecompleted) && $result;
|
||||
$result = scorm_insert_track($USER->id, $scorm->id, $scoid, $attempt, $element, $value, $scorm->forcecompleted,
|
||||
$trackdata) && $result;
|
||||
}
|
||||
if (substr($element, 0, 15) == 'adl.nav.request') {
|
||||
// SCORM 2004 Sequencing Request
|
||||
|
||||
+16
-6
@@ -415,7 +415,7 @@ function scorm_get_scoes($id, $organisation=false) {
|
||||
}
|
||||
}
|
||||
|
||||
function scorm_insert_track($userid, $scormid, $scoid, $attempt, $element, $value, $forcecompleted=false) {
|
||||
function scorm_insert_track($userid, $scormid, $scoid, $attempt, $element, $value, $forcecompleted=false, $trackdata = null) {
|
||||
global $DB, $CFG;
|
||||
|
||||
$id = null;
|
||||
@@ -497,15 +497,25 @@ function scorm_insert_track($userid, $scormid, $scoid, $attempt, $element, $valu
|
||||
|
||||
}
|
||||
|
||||
if ($track = $DB->get_record('scorm_scoes_track', array('userid' => $userid,
|
||||
$track = null;
|
||||
if ($trackdata !== null) {
|
||||
if (isset($trackdata[$element])) {
|
||||
$track = $trackdata[$element];
|
||||
}
|
||||
} else {
|
||||
$track = $DB->get_record('scorm_scoes_track', array('userid' => $userid,
|
||||
'scormid' => $scormid,
|
||||
'scoid' => $scoid,
|
||||
'attempt' => $attempt,
|
||||
'element' => $element))) {
|
||||
'element' => $element));
|
||||
}
|
||||
if ($track) {
|
||||
if ($element != 'x.start.time' ) { // Don't update x.start.time - keep the original value.
|
||||
$track->value = $value;
|
||||
$track->timemodified = time();
|
||||
$DB->update_record('scorm_scoes_track', $track);
|
||||
if ($track->value != $value) {
|
||||
$track->value = $value;
|
||||
$track->timemodified = time();
|
||||
$DB->update_record('scorm_scoes_track', $track);
|
||||
}
|
||||
$id = $track->id;
|
||||
}
|
||||
} else {
|
||||
|
||||
Reference in New Issue
Block a user