function opigno_scorm_quiz_opigno_scorm_ui_register_cmi_data in Opigno 7
Implements hook_opigno_scorm_ui_register_cmi_data().
File
- modules/
scorm/ quiz/ opigno_scorm_quiz.module, line 65 - Module hook definitions.
Code
function opigno_scorm_quiz_opigno_scorm_ui_register_cmi_data($scorm, $scos, $scorm_version) {
global $user;
switch ($scorm_version) {
case '2004':
$data = array(
'cmi.score.raw' => opigno_scorm_ui_scorm_cmi_get($user->uid, $scorm->id, 'cmi.score.raw', ''),
'cmi.score.min' => opigno_scorm_ui_scorm_cmi_get($user->uid, $scorm->id, 'cmi.score.min', ''),
'cmi.score.max' => opigno_scorm_ui_scorm_cmi_get($user->uid, $scorm->id, 'cmi.score.max', ''),
'cmi.score.scaled' => opigno_scorm_ui_scorm_cmi_get($user->uid, $scorm->id, 'cmi.score.scaled', ''),
'cmi.success_status' => opigno_scorm_ui_scorm_cmi_get($user->uid, $scorm->id, 'cmi.success_status', ''),
'cmi.objectives' => array(),
);
// Get last visited SCO.
$last_sco = opigno_scorm_ui_scorm_cmi_get($user->uid, $scorm->id, 'user.sco', '');
if ($last_sco != '') {
$data['cmi.suspend_data'] = opigno_scorm_ui_scorm_cmi_get($user->uid, $scorm->id, 'cmi.suspend_data.' . $last_sco, '');
}
else {
$data['cmi.suspend_data'] = opigno_scorm_ui_scorm_cmi_get($user->uid, $scorm->id, 'cmi.suspend_data', '');
}
break;
case '1.2':
$data = array(
'cmi.core.score.raw' => opigno_scorm_ui_scorm_cmi_get($user->uid, $scorm->id, 'cmi.core.score.raw', ''),
'cmi.core.score.min' => opigno_scorm_ui_scorm_cmi_get($user->uid, $scorm->id, 'cmi.core.score.min', ''),
'cmi.core.score.max' => opigno_scorm_ui_scorm_cmi_get($user->uid, $scorm->id, 'cmi.core.score.max', ''),
'cmi.core.lesson_status' => opigno_scorm_ui_scorm_cmi_get($user->uid, $scorm->id, 'cmi.core.lesson_status', ''),
'cmi.suspend_data' => opigno_scorm_ui_scorm_cmi_get($user->uid, $scorm->id, 'cmi.suspend_data', ''),
'cmi.core.score._children' => opigno_scorm_ui_scorm_cmi_get($user->uid, $scorm->id, 'cmi.core.score._children', 'raw,min,max'),
'cmi.objectives' => array(),
);
break;
}
// Fetch the objectives.
foreach ($scos as $sco) {
if (!empty($sco->attributes['objectives'])) {
foreach ($sco->attributes['objectives'] as $objective) {
$stored_objective = opigno_scorm_quiz_load_objective($user->uid, $scorm->id, $objective['id']);
if ($scorm_version == '2004') {
$defaults = array(
'id' => $objective['id'],
'score' => array(
'scaled' => 0,
'raw' => 0,
'min' => 0,
'max' => 0,
),
'success_status' => '',
'completion_status' => '',
'progress_measure' => '',
'description' => '',
);
}
else {
$defaults = array(
'id' => $objective['id'],
'score' => array(
'raw' => 0,
'min' => 0,
'max' => 0,
),
'status' => '',
);
}
if (!empty($stored_objective)) {
$stored_objective = (array) $stored_objective;
$stored_objective += $defaults;
}
else {
$stored_objective = $defaults;
}
$data['cmi.objectives'][] = $stored_objective;
}
}
}
return $data;
}