} } } } // // If no sco was found get the first of udutu package // if (!isset($sco)) { $scoes = get_records_select('udutu_scoes', 'udutu=' . $udutu->id . " AND launch<>''", 'id ASC'); $sco = current($scoes); } if ($sco->udututype == 'asset') { $attempt = udutu_get_last_attempt($udutu->id, $USER->id); $element = $udutu->version == 'udutu_13' ? 'cmi.completion_status' : 'cmi.core.lesson_status'; $value = 'completed'; $result = udutu_insert_track($USER->id, $udutu->id, $sco->id, $attempt, $element, $value); } // // Forge SCO URL // $connector = ''; $version = substr($udutu->version, 0, 4); if (isset($sco->parameters) && !empty($sco->parameters) || $version == 'AICC') { if (stripos($sco->launch, '?') !== false) { $connector = '&'; } else { $connector = '?'; } if (isset($sco->parameters) && !empty($sco->parameters) && $sco->parameters[0] == '?') { $sco->parameters = substr($sco->parameters, 1); }
function udutu_seq_set($what, $scoid, $userid, $attempt = 0, $value = 'true') { /// set passed activity to active or not if ($value == false) { delete_record('udutu_scoes_track', 'scoid', $scoid, 'userid', $userid, 'element', $what); } else { $sco = udutu_get_sco($scoid); udutu_insert_track($userid, $sco->udutu, $sco->id, 0, $what, $value); } }
error("Course Module ID was incorrect"); } } else { error('A required parameter is missing'); } } require_login($course->id, false, $cm); //if (confirm_sesskey() && (!empty($scoid))) { $result = true; $request = null; //if (has_capability('mod/udutu:savetrack', get_context_instance(CONTEXT_MODULE,$cm->id))) { foreach ($_POST as $element => $value) { $element = str_replace('__', '.', $element); if (substr($element, 0, 3) == 'cmi') { $netelement = preg_replace('/\\.N(\\d+)\\./', "\\.\$1\\.", $element); $result = udutu_insert_track($USER->id, $udutu->id, $scoid, $attempt, $netelement, $value) && $result; } if (substr($element, 0, 15) == 'adl.nav.request') { // udutu 2004 Sequencing Request require_once 'datamodels/sequencinglib.php'; $search = array('@continue@', '@previous@', '@\\{target=(\\S+)\\}choice@', '@exit@', '@exitAll@', '@abandon@', '@abandonAll@'); $replace = array('continue_', 'previous_', '\\1', 'exit_', 'exitall_', 'abandon_', 'abandonall'); $action = preg_replace($search, $replace, $value); if ($action != $value) { // Evaluating navigation request $valid = udutu_sequencing_overall($scoid, $USER->id, $action); $valid = 'true'; // Set valid request $search = array('@continue@', '@previous@', '@\\{target=(\\S+)\\}choice@'); $replace = array('true', 'true', 'true'); $matched = preg_replace($search, $replace, $value);
$id = udutu_insert_track($USER->id, $udutu->id, $sco->id, $attempt, $element, $value); } } } if ($mode == 'browse' && $initlessonstatus == 'not attempted') { $lessonstatus = 'browsed'; $id = udutu_insert_track($USER->id, $udutu->id, $sco->id, $attempt, 'cmi.core.lesson_status', 'browsed'); } if ($mode == 'normal') { if ($lessonstatus == 'completed') { if (!empty($sco->masteryscore) && !empty($score) && $score >= $sco->masteryscore) { $lessonstatus = 'passed'; } else { $lessonstatus = 'failed'; } $id = udutu_insert_track($USER->id, $udutu->id, $sco->id, $attempt, 'cmi.core.lesson_status', $lessonstatus); } } } echo "error = 0\nerror_text = Successful\n"; } else { if ($status == 'Terminated') { echo "error = 1\nerror_text = Terminated\n"; } else { echo "error = 1\nerror_text = Not Initialized\n"; } } break; case 'putcomments': if ($status == 'Running') { echo "error = 0\nerror_text = Successful\n";