From 1c2b2132e5f6e8d3d4a972da628e5ee08cd88dd2 Mon Sep 17 00:00:00 2001 From: Ankit Agarwal Date: Thu, 28 Jun 2012 11:51:06 +0800 Subject: [PATCH 1/4] MDL-33702 scorm: Adding suppport for '2004 SCORM standard' score elements --- mod/scorm/locallib.php | 14 +++++++++++--- mod/scorm/report/graphs/graph.php | 20 +++++--------------- mod/scorm/userreport.php | 21 ++++++--------------- 3 files changed, 22 insertions(+), 33 deletions(-) diff --git a/mod/scorm/locallib.php b/mod/scorm/locallib.php index c48c4670d08..3e792492629 100644 --- a/mod/scorm/locallib.php +++ b/mod/scorm/locallib.php @@ -467,15 +467,23 @@ function scorm_get_tracks($scoid, $userid, $attempt='') { case 'cmi.core.score.raw': case 'cmi.score.raw': $usertrack->score_raw = (float) sprintf('%2.2f', $track->value); - break; + break; + case 'cmi.core.score.max': + case 'cmi.score.max': + $usertrack->score_max = (float) sprintf('%2.2f', $track->value); + break; + case 'cmi.core.score.min': + case 'cmi.score.min': + $usertrack->score_min = (float) sprintf('%2.2f', $track->value); + break; case 'cmi.core.session_time': case 'cmi.session_time': $usertrack->session_time = $track->value; - break; + break; case 'cmi.core.total_time': case 'cmi.total_time': $usertrack->total_time = $track->value; - break; + break; } if (isset($track->timemodified) && ($track->timemodified > $usertrack->timemodified)) { $usertrack->timemodified = $track->timemodified; diff --git a/mod/scorm/report/graphs/graph.php b/mod/scorm/report/graphs/graph.php index 2891739b4b7..1a294dcdf57 100644 --- a/mod/scorm/report/graphs/graph.php +++ b/mod/scorm/report/graphs/graph.php @@ -66,16 +66,6 @@ $params = array(); list($usql, $params) = $DB->get_in_or_equal($allowedlist); $params[] = $scoid; -// Determine Sco keys to be used -if (scorm_version_check($scorm->version, SCORM_13)) { - $maxkey = 'cmi.score.max'; - $minkey = 'cmi.score.min'; - $scorekey = 'cmi.score.raw'; -} else { - $maxkey = 'cmi.core.score.max'; - $minkey = 'cmi.core.score.min'; - $scorekey = 'cmi.core.score.raw'; -} $bands = 11; $bandwidth = 10; @@ -99,16 +89,16 @@ if(!$nostudents) { foreach ($attempts as $attempt) { if ($trackdata = scorm_get_tracks($scoid, $attempt->userid, $attempt->attempt)) { if (isset($trackdata->$scorekey)) { - $score = $trackdata->$scorekey; - if (!isset($trackdata->$minkey) || empty($trackdata->$minkey)) { + $score = $trackdata->score_raw; + if (empty($trackdata->score_min)) { $minmark = 0; } else { - $minmark = $trackdata->$minkey; + $minmark = $trackdata->score_min; } - if (!isset($trackdata->$maxkey) || empty($trackdata->$maxkey)) { + if (empty($trackdata->score_max)) { $maxmark = 100; } else { - $maxmark = $trackdata->$maxkey; + $maxmark = $trackdata->score_max; } $range = ($maxmark - $minmark); if (empty($range)) { diff --git a/mod/scorm/userreport.php b/mod/scorm/userreport.php index 3633b0411c0..fe168945236 100644 --- a/mod/scorm/userreport.php +++ b/mod/scorm/userreport.php @@ -180,21 +180,12 @@ if (!empty($b)) { $table->width = '100%'; $table->size = array('*', '*'); $existelements = false; - if (scorm_version_check($scorm->version, SCORM_13)) { - $elements = array( - 'raw' => 'cmi.score.raw', - 'min' => 'cmi.score.min', - 'max' => 'cmi.score.max', - 'status' => 'cmi.completion_status', - 'time' => 'cmi.total_time'); - } else { - $elements = array( - 'raw' => 'cmi.core.score.raw', - 'min' => 'cmi.core.score.min', - 'max' => 'cmi.core.score.max', - 'status' => 'cmi.core.lesson_status', - 'time' => 'cmi.core.total_time'); - } + $elements = array( + 'min' => 'score_min', + 'raw' => 'score_raw', + 'max' => 'score_max', + 'status' => 'status', + 'time' => 'total_time'); $printedelements = array(); foreach ($elements as $key => $element) { if (isset($trackdata->$element)) { From d875cf9cdf4434d235e49d3b60c304d882f53d3a Mon Sep 17 00:00:00 2001 From: Ankit Agarwal Date: Thu, 28 Jun 2012 14:25:46 +0800 Subject: [PATCH 2/4] MDL-33702 scorm: Adding support for '2004 SCORM' objectives status elements --- mod/scorm/userreport.php | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/mod/scorm/userreport.php b/mod/scorm/userreport.php index fe168945236..6d48cc10c10 100644 --- a/mod/scorm/userreport.php +++ b/mod/scorm/userreport.php @@ -132,6 +132,7 @@ if ($scoes = $DB->get_records_select('scorm_scoes', "scorm=? ORDER BY id", array $detailslink = ''.get_string('details', 'scorm').''; } else { + $trackdata = new stdClass(); $trackdata->status = 'notattempted'; $trackdata->total_time = ' '; $detailslink = ' '; @@ -272,11 +273,26 @@ if (!empty($b)) { while (isset($trackdata->$objectiveid)) { $existobjective = true; $printedelements[]=$objectiveid; + + // Merge 2004 and 1.2 SCORM formats + if (!scorm_version_check($scorm->version, SCORM_13)) { + $sucstatuskey = 'cmi.objectives.'.$i.'.success_status'; + $progstatuskey = 'cmi.objectives.'.$i.'.progress_measure'; + $compstatuskey = 'cmi.objectives.'.$i.'.completion_status'; + $statuskey = 'cmi.objectives.'.$i.'.status'; + if(isset($trackdata->$sucstatuskey)) { + $trackdata->$statuskey = $trackdata->$sucstatuskey; + } elseif(isset($trackdata->$progstatuskey)) { + $trackdata->$statuskey = $trackdata->$progstatuskey; + } elseif(isset($trackdata->$compstatuskey)) { + $trackdata->$statuskey = $trackdata->$compstatuskey; + } + } $elements = array( $objectiveid, 'cmi.objectives.'.$i.'.status', - 'cmi.objectives.'.$i.'.score.raw', 'cmi.objectives.'.$i.'.score.min', + 'cmi.objectives.'.$i.'.score.raw', 'cmi.objectives.'.$i.'.score.max'); $row = array(); foreach ($elements as $element) { From 57a32d3eb6ea3e5a908a7bb4aa3140309bcc2e3f Mon Sep 17 00:00:00 2001 From: Ankit Agarwal Date: Thu, 28 Jun 2012 14:49:47 +0800 Subject: [PATCH 3/4] MDL-33702 scorm: Adding support for '2004 SCORM' progress status elements --- mod/scorm/locallib.php | 11 ++++++++++- mod/scorm/userreport.php | 6 +++++- 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/mod/scorm/locallib.php b/mod/scorm/locallib.php index 3e792492629..3986fe37fc7 100644 --- a/mod/scorm/locallib.php +++ b/mod/scorm/locallib.php @@ -450,6 +450,7 @@ function scorm_get_tracks($scoid, $userid, $attempt='') { // Defined in order to unify scorm1.2 and scorm2004 $usertrack->score_raw = ''; $usertrack->status = ''; + $usertrack->progress = ''; $usertrack->total_time = '00:00:00'; $usertrack->session_time = '00:00:00'; $usertrack->timemodified = 0; @@ -463,7 +464,15 @@ function scorm_get_tracks($scoid, $userid, $attempt='') { $track->value = 'notattempted'; } $usertrack->status = $track->value; - break; + break; + case 'cmi.success_status': + $usertrack->progress = $track->value; + break; + case 'cmi.progress_measure': + if(!empty($track->value) && (empty($usertrack->progress) || $usertrack->progress == 'unknown') ) { + $usertrack->progress = $track->value; + } + break; case 'cmi.core.score.raw': case 'cmi.score.raw': $usertrack->score_raw = (float) sprintf('%2.2f', $track->value); diff --git a/mod/scorm/userreport.php b/mod/scorm/userreport.php index 6d48cc10c10..9379c4f1d33 100644 --- a/mod/scorm/userreport.php +++ b/mod/scorm/userreport.php @@ -127,7 +127,11 @@ if ($scoes = $DB->get_records_select('scorm_scoes', "scorm=? ORDER BY id", array $score = $trackdata->score_raw; } if ($trackdata->status == '') { - $trackdata->status = 'notattempted'; + if (!empty($trackdata->progress)) { + $trackdata->status = $trackdata->progress; + } else { + $trackdata->status = 'notattempted'; + } } $detailslink = ''.get_string('details', 'scorm').''; From 9381c28084115220502bfd37ec7e93ced91491cb Mon Sep 17 00:00:00 2001 From: Ankit Agarwal Date: Thu, 28 Jun 2012 14:53:32 +0800 Subject: [PATCH 4/4] MDL-33702 scorm: refactoring interraction report to use '2004 SCORM' score elements --- mod/scorm/locallib.php | 2 +- mod/scorm/report/interactions/report.php | 9 ++------- mod/scorm/userreport.php | 8 ++++---- 3 files changed, 7 insertions(+), 12 deletions(-) diff --git a/mod/scorm/locallib.php b/mod/scorm/locallib.php index 3986fe37fc7..505905afe3a 100644 --- a/mod/scorm/locallib.php +++ b/mod/scorm/locallib.php @@ -469,7 +469,7 @@ function scorm_get_tracks($scoid, $userid, $attempt='') { $usertrack->progress = $track->value; break; case 'cmi.progress_measure': - if(!empty($track->value) && (empty($usertrack->progress) || $usertrack->progress == 'unknown') ) { + if (!empty($track->value) && (empty($usertrack->progress) || $usertrack->progress == 'unknown') ) { $usertrack->progress = $track->value; } break; diff --git a/mod/scorm/report/interactions/report.php b/mod/scorm/report/interactions/report.php index 99204d167df..5cc36de3bd4 100644 --- a/mod/scorm/report/interactions/report.php +++ b/mod/scorm/report/interactions/report.php @@ -456,13 +456,8 @@ class scorm_interactions_report extends scorm_default_report { if ($trackdata->score_raw != '') { $score = $trackdata->score_raw; // add max score if it exists - if ($scorm->version == 'SCORM_1.3') { - $maxkey = 'cmi.score.max'; - } else { - $maxkey = 'cmi.core.score.max'; - } - if (isset($trackdata->$maxkey)) { - $score .= '/'.$trackdata->$maxkey; + if (isset($trackdata->score_max)) { + $score .= '/'.$trackdata->score_max; } // else print out status } else { diff --git a/mod/scorm/userreport.php b/mod/scorm/userreport.php index 9379c4f1d33..daf83913251 100644 --- a/mod/scorm/userreport.php +++ b/mod/scorm/userreport.php @@ -279,16 +279,16 @@ if (!empty($b)) { $printedelements[]=$objectiveid; // Merge 2004 and 1.2 SCORM formats - if (!scorm_version_check($scorm->version, SCORM_13)) { + if (scorm_version_check($scorm->version, SCORM_13)) { $sucstatuskey = 'cmi.objectives.'.$i.'.success_status'; $progstatuskey = 'cmi.objectives.'.$i.'.progress_measure'; $compstatuskey = 'cmi.objectives.'.$i.'.completion_status'; $statuskey = 'cmi.objectives.'.$i.'.status'; - if(isset($trackdata->$sucstatuskey)) { + if (isset($trackdata->$sucstatuskey)) { $trackdata->$statuskey = $trackdata->$sucstatuskey; - } elseif(isset($trackdata->$progstatuskey)) { + } elseif (isset($trackdata->$progstatuskey)) { $trackdata->$statuskey = $trackdata->$progstatuskey; - } elseif(isset($trackdata->$compstatuskey)) { + } elseif (isset($trackdata->$compstatuskey)) { $trackdata->$statuskey = $trackdata->$compstatuskey; } }