--- scorm_12lib.php Fri Nov 16 10:58:52 2007 +++ scorm_12lib.php Mon Dec 17 19:20:09 2007 @@ -193,6 +193,7 @@ // Retrieve user tracking data for each learning object // $usertracks = array(); + $prerequsertracks = array(); foreach ($scoes as $sco) { if (!empty($sco->launch)) { if ($usertrack=scorm_get_tracks($sco->id,$user->id,$attempt)) { @@ -200,6 +201,11 @@ $usertrack->status = 'notattempted'; } $usertracks[$sco->identifier] = $usertrack; + $prerequsertracks[$sco->identifier] = $usertrack; + } else { + // set default 'notattempted' status for scoes have never been seen. + $usertrack->status = 'notattempted'; + $prerequsertracks[$sco->identifier] = $usertrack; } } } @@ -253,8 +259,8 @@ } $nextsco = next($scoes); $nextisvisible = false; - if (($nextsco !== false) && ($optionaldatas = scorm_get_sco($nextsco->id, SCO_DATA))) { - if (!isset($optionaldatas->isvisible) || (isset($optionaldatas->isvisible) && ($optionaldatas->isvisible == 'true'))) { + if (($nextsco !== false) && ($nextoptionaldatas = scorm_get_sco($nextsco->id, SCO_DATA))) { + if (!isset($nextoptionaldatas->isvisible) || (isset($nextoptionaldatas->isvisible) && ($nextoptionaldatas->isvisible == 'true'))) { $nextisvisible = true; } } @@ -326,8 +332,7 @@ $previd = $sco->id; } } - if (empty($sco->prerequisites) || scorm_eval_prerequisites($sco->prerequisites,$usertracks)) { - if ($sco->id == $scoid) { + if (empty($optionaldatas->prerequisites) || scorm_eval_prerequisites(stripslashes($optionaldatas->prerequisites),$prerequsertracks)) { if ($sco->id == $scoid) { $result->prerequisites = true; } $url = $CFG->wwwroot.'/mod/scorm/player.php?a='.$scorm->id.'&currentorg='.$currentorg.$modestr.'&scoid='.$sco->id; --- scormlib.php Wed Jan 17 10:02:26 2007 +++ scormlib.php Mon Dec 17 19:32:55 2007 @@ -462,10 +462,6 @@ $xmltext = file_get_contents($manifestfile); - $pattern = '/&(?!\w{2,6};)/'; - $replacement = '&'; - $xmltext = preg_replace($pattern, $replacement, $xmltext); - $objXML = new xml2Array(); $manifests = $objXML->parse($xmltext); //print_object($manifests);