Пример #1
0
function scorm_seq_end_attempt($sco, $userid, $seq)
{
    global $DB;
    if (scorm_is_leaf($sco)) {
        if (!isset($sco->tracked) || $sco->tracked == 1) {
            if (!scorm_seq_is('suspended', $sco->id, $userid)) {
                if (!isset($sco->completionsetbycontent) || $sco->completionsetbycontent == 0) {
                    if (!scorm_seq_is('attemptprogressstatus', $sco->id, $userid, $seq->attempt)) {
                        $incomplete = $DB->get_field('scorm_scoes_track', 'value', array('scoid' => $sco->id, 'userid' => $userid, 'element' => 'cmi.completion_status'));
                        if ($incomplete != 'incomplete') {
                            scorm_seq_set('attemptprogressstatus', $sco->id, $userid, $seq->attempt);
                            scorm_seq_set('attemptcompletionstatus', $sco->id, $userid, $seq->attempt);
                        }
                    }
                }
                if (!isset($sco->objectivesetbycontent) || $sco->objectivesetbycontent == 0) {
                    if ($objectives = $DB->get_records('scorm_seq_objective', array('scoid' => $sco->id))) {
                        foreach ($objectives as $objective) {
                            if ($objective->primaryobj) {
                                if (!scorm_seq_is('objectiveprogressstatus', $sco->id, $userid, $seq->attempt)) {
                                    scorm_seq_set('objectiveprogressstatus', $sco->id, $userid, $seq->attempt);
                                    scorm_seq_set('objectivesatisfiedstatus', $sco->id, $userid, $seq->attempt);
                                }
                            }
                        }
                    }
                }
            }
        }
    } else {
        if ($children = scorm_get_children($sco)) {
            $suspended = false;
            foreach ($children as $child) {
                if (scorm_seq_is('suspended', $child, $userid, $seq->attempt)) {
                    $suspended = true;
                    break;
                }
            }
            if ($suspended) {
                scorm_seq_set('suspended', $sco, $userid, $seq->attempt);
            } else {
                scorm_seq_set('suspended', $sco, $userid, $seq->attempt, false);
            }
        }
    }
    scorm_seq_set('active', $sco->id, $userid, $seq->attempt, false);
    scorm_seq_overall_rollup($sco, $userid, $seq);
}
Пример #2
0
function scorm_seq_end_attempt($sco, $userid, $seq)
{
    if (scorm_is_leaf($sco)) {
        if (!isset($sco->tracked) || $sco->tracked == 1) {
            if (!scorm_seq_is('suspended', $sco->id, $userid)) {
                if (!isset($sco->completionsetbycontent) || $sco->completionsetbycontent == 0) {
                    if (!scorm_seq_is('attemptprogressstatus', $sco->id, $userid, $seq->attempt)) {
                        // if (!scorm_seq_is('attemptprogressstatus',$sco->id,$userid)) {
                        scorm_seq_set('attemptprogressstatus', $sco->id, $userid);
                        scorm_seq_set('attemptcompletionstatus', $sco->id, $userid);
                    }
                }
                if (!isset($sco->objectivesetbycontent) || $sco->objectivesetbycontent == 0) {
                    if ($objectives = get_records('scorm_seq_objective', 'scoid', $sco->id)) {
                        foreach ($objectives as $objective) {
                            if ($objective->primaryobj) {
                                //if (!scorm_seq_objective_progress_status($sco,$userid,$objective)) {
                                if (!scorm_seq_is('objectiveprogressstatus', $sco->id, $userid)) {
                                    scorm_seq_set('objectiveprogressstatus', $sco->id, $userid);
                                    scorm_seq_set('objectivesatisfiedstatus', $sco->id, $userid);
                                }
                            }
                        }
                    }
                }
            }
        }
    } else {
        if ($children = scorm_get_children($sco)) {
            $suspended = false;
            foreach ($children as $child) {
                if (scorm_seq_is('suspended', $child, $userid)) {
                    $suspended = true;
                    break;
                }
            }
            if ($suspended) {
                scorm_seq_set('suspended', $sco, $userid);
            } else {
                scorm_seq_set('suspended', $sco, $userid, false);
            }
        }
    }
    scorm_seq_set('active', $sco, $userid, 0, false);
    scorm_seq_overall_rollup($sco, $userid);
}