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; } }
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; }