>>>> SCO goi Rollup la ".$scoidchild);
$scochild = get_record("scorm_scoes","id",$scoidchild);
$scoparent = get_record("scorm_scoes","scorm",$scormid,"identifier",$scochild->parent);
//Danh sach cac con cua cha
$scochildren = get_records_select("scorm_scoes","scorm =".$scormid." and parent ='".$scoparent->identifier."'");
//Lay gia tri last attempt
//fwrite($ft,"\n >>>>> Bat dau xu ly Rollup SCO cha ".$scoparent->id);
$attempt = scorm_get_last_attempt($scormid,$userid);
if(!empty($scoparent)){
$scoid = $scoparent->id;
$rolluprules = get_record("scorm_sequencing_rolluprules","scormid",$scormid,"scoid",$scoid);
if (!empty($rolluprules)){
$idrolluprules = $rolluprules->id;
$rules = get_records_select('scorm_sequencing_rolluprule','scoid ='.$scoid.' and rolluprulesid ='. $idrolluprules);
foreach ($rules as $rule){
$ruleid = $rule->id;
$ruleConditions = get_record("scorm_sequencing_rollupruleconditions","scoid",$scoid,"rollupruleid",$ruleid);
$idruleConditions = $ruleConditions->id;
$conditions = get_records_select('scorm_sequencing_rolluprulecondition','scoid ='.$scoid.' and ruleconditionsid ='.$idruleConditions);
//Truong hop 1: childactivitySet = all
// conditioncombination = any
if (($rule->childactivityset == 'all') && ($ruleConditions->conditioncombination=='any')){
foreach($conditions as $condition){
$conditionOK = false;
//Condition 1: condition = attempted operator = 'noOp'
// Thuc hien rollupaction
if (($condition->condition == 'attempted') && ($condition->operator=='noOp')){
$conditionOK = true;
foreach ($scochildren as $sco){
//fwrite($ft,"\n >>>>> Xu ly Rollup voi dieu kien attempt \n");
$usertrack = scorm_get_tracks($sco->id,$userid);
if ($usertrack->attempt_status != 'attempted'){
//fwrite($ft,"\n >>>>> Co SCO con chua attempted \n");
$conditionOK = false;
}
}
}
//Condition 2: condition = attempted operator = 'not'
// Thuc hien rollupaction
if (($condition->condition == 'attempted') && ($condition->operator=='not')){
$conditionOK = true;
foreach ($scochildren as $sco){
//fwrite($ft,"\n >>>>> Xu ly Rollup voi dieu kien not attempt \n");
$usertrack = scorm_get_tracks($sco->id,$userid);
if ($usertrack->attempt_status != 'notattempted'){
$conditionOK = false;
}
}
}
//Condition 3: condition = satisfied operator = 'noOp'
// Thuc hien rollupaction
if (($condition->condition == 'satisfied') && ($condition->operator=='noOp')){
$conditionOK = true;
foreach ($scochildren as $sco){
$usertrack = scorm_get_tracks($sco->id,$userid);
if ($usertrack->satisfied_status != 'satisfied'){
$conditionOK = false;
}
}
}
//Condition 4: condition = satisfied operator = 'not'
// Thuc hien rollupaction
if (($condition->condition == 'satisfied') && ($condition->operator=='not')){
$conditionOK = true;
foreach ($scochildren as $sco){
$usertrack = scorm_get_tracks($sco->id,$userid);
if ($usertrack->satisfied_status != 'notSatisfied'){
$conditionOK = false;
}
}
}
//Condition 5: condition = completed operator = 'noOp'
// Thuc hien rollupaction
if (($condition->condition == 'completed') && ($condition->operator=='noOp')){
$conditionOK = true;
foreach ($scochildren as $sco){
$usertrack = scorm_get_tracks($sco->id,$userid);
if ($usertrack->attempt_status != 'completed'){
$conditionOK = false;
}
}
}
//Condition 6: condition = completed operator = 'not'
// Thuc hien rollupaction
if (($condition->condition == 'completed') && ($condition->operator=='not')){
$conditionOK = true;
foreach ($scochildren as $sco){
$usertrack = scorm_get_tracks($sco->id,$userid);
if ($usertrack->attempt_status != 'notcompleted'){
$conditionOK = false;
}
}
}
//Neu dieu kien van dung sau khi xem xet thi thuc hien action
if ($conditionOK == true){
if ($ruleConditions->rollupruleaction == 'completed')
{
scorm_insert_track($userid,$scormid,$scoid,$attempt,'cmi.completion_status','completed');
//fwrite($ft,"\n >>>>> Xu ly Rollup thanh cong voi completed cho SCO ".$scoid);
}
if ($ruleConditions->rollupruleaction == 'satisfied')
{
scorm_insert_track($userid,$scormid,$scoid,$attempt,'cmi.success_status','passed');
//fwrite($ft,"\n >>>>> Xu ly Rollup thanh cong voi satisfied\n");
}
if ($ruleConditions->rollupruleaction == 'notSatisfied')
{
scorm_insert_track($userid,$scormid,$scoid,$attempt,'cmi.success_status','failed');
//fwrite($ft,"\n >>>>> Xu ly Rollup thanh cong voi notSatisfied\n");
}
//echo "";
$sequencingResult->rule = 'exit';
$sequencingResult->action = 'exit';
}
if ($sequencingrule->preconditionruleaction=='disabled')
{
//fwrite($ft,"\n >>>>> Xu ly Sequencing thanh cong -- Thuc hien su kien disable \n");
echo "";
$sequencingResult->rule = 'pre';
$sequencingResult->action = 'disable';
}
}
}
}
}
return $sequencingResult;
}
function get_sco_after_exit($scoid,$scormid){
$scochild = get_record("scorm_scoes","id",$scoid);
$scoparent = get_record("scorm_scoes","scorm",$scormid,"identifier",$scochild->parent);
$exitscoid = $scoid++;
$exitscochild = get_record("scorm_scoes","id",$exitscoid,"scorm",$scormid);
if (empty($exitscochild)){
//Da ra ngoai vung scoid. Hay day chinh la sco cuoi cung
return 0;
}
else{
$exitscoparent = get_record("scorm_scoes","scorm",$scormid,"identifier",$exitscochild->parent);
//Neu chua ra khoi activity do thi tiep tuc
while ($exitscoparent->id == $scoparent->id){
$exitscoid++;
$exitscochild = get_record("scorm_scoes","id",$exitscoid);
if (empty($exitscochild)){
//Da ra ngoai vung scoid. Hay day chinh la sco cuoi cung
return 0;
}
else{
$exitscoparent = get_record("scorm_scoes","scorm",$scormid,"identifier",$exitscochild->parent);
}
}
}
return $exitscoid;
}
?>