Exemple #1
0
function scorm_seq_flow($candidate, $direction, $seq, $childrenflag, $userid)
{
    //$PREVDIRECTION NOT DEFINED YET
    $activity = $candidate;
    $deliverable = false;
    $previdirection = null;
    $seq = scorm_seq_flow_tree_traversal($activity, $direction, $childrenflag, $prevdirection, $seq, $userid);
    if ($seq->identifiedactivity == null) {
        //if identifies
        $seq->identifiedactivity = $candidate;
        $seq->deliverable = false;
        return $seq;
    } else {
        $activity = $seq->identifiedactivity;
        $seq = scorm_seq_flow_activity_traversal($activity, $userid, $direction, $childrenflag, $prevdirection, $seq, $userid);
        //
        return $seq;
    }
}
function scorm_seq_flow($activity, $direction, $seq, $childrenflag, $userid)
{
    // TODO: $PREVDIRECTION NOT DEFINED YET.
    $prevdirection = null;
    $seq = scorm_seq_flow_tree_traversal($activity, $direction, $childrenflag, $prevdirection, $seq, $userid);
    if ($seq->nextactivity == null) {
        $seq->nextactivity = $activity;
        $seq->deliverable = false;
        return $seq;
    } else {
        $activity = $seq->nextactivity;
        $seq = scorm_seq_flow_activity_traversal($activity, $userid, $direction, $childrenflag, null, $seq, $userid);
        return $seq;
    }
}
Exemple #3
0
function scorm_seq_flow_activity_traversal ($activity, $userid, $direction, $childrenflag, $prevdirection, $seq,$userid){//returns the next activity on the tree, traversal direction, control returned to the LTS, (may) exception
    $activity = scorm_get_sco ($activity);
    $parent = scorm_get_parent ($activity);
   if (!isset($parent->flow) || ($parent->flow == false)) {
        $seq->deliverable = false;
        $seq->exception = 'SB.2.2-1';
        $seq->nextactivity = $activity;
        return $seq;
    }

    $rulch = scorm_seq_rules_check($sco, 'skipped'); // TODO: undefined
    if ($rulch != null){
        $seq = scorm_seq_flow_tree_traversal ($activity, $direction, false, $prevdirection, $seq,$userid);//endsession and exception
        if ($seq->identifiedactivity == null){
            $seq->deliverable = false;
            $seq->nextactivity = $activity;
            return $seq;
        }
        else{

            if ($prevdirection = 'backward' && $seq->traversaldir == 'backward'){
                $seq = scorm_seq_flow_tree_traversal ($activity,$direction,false,null,$seq,$userid);
                $seq = scorm_seq_flow_activity_traversal($seq->identifiedactivity, $userid, $direction, $childrenflag, $prevdirection, $seq,$userid);
            }
            else{
                $seq = scorm_seq_flow_tree_traversal ($activity,$direction,false,null,$seq,$userid);
                $seq = scorm_seq_flow_activity_traversal($seq->identifiedactivity, $userid, $direction, $childrenflag, $prevdirection, $seq,$userid);
            }
            return $seq;
        }
    }

    $ch=scorm_check_activity ($activity,$userid);

    if ($ch){

        $seq->deliverable = false;
        $seq->exception = 'SB.2.2-2';
        $seq->nextactivity = $activity;
        return $seq;

    }

    if (!scorm_is_leaf($activity)){

        $seq = scorm_seq_flow_tree_traversal ($activity,$direction,true,null,$seq,$userid);

        if ($seq->identifiedactivity == null){
            $seq->deliverable = false;
            $seq->nextactivity = $activity;
            return $seq;
        }

        else{
            if($direction == 'backward' && $seq->traversaldir == 'forward'){
                $seq = scorm_seq_flow_activity_traversal($seq->identifiedactivity, $userid, 'forward', $childrenflag, 'backward', $seq,$userid);
            }
            else{
                scorm_seq_flow_activity_traversal($seq->identifiedactivity, $userid, $direction, $childrenflag, null, $seq,$userid);
            }
            return $seq;
        }

    }

    $seq->deliverable = true;
    $seq->nextactivity = $activity;
    return $seq;

}