From: skodak Date: Sat, 15 Mar 2008 15:05:06 +0000 (+0000) Subject: MDL-13093 "Continue" link jumps over items; merged from MOODLE_19_STABLE X-Git-Url: http://git.mjollnir.org/gw?a=commitdiff_plain;h=9fb2de4ea717dfa513ef6500eaeedaaac67fa0b9;p=moodle.git MDL-13093 "Continue" link jumps over items; merged from MOODLE_19_STABLE --- diff --git a/mod/scorm/datamodels/aicclib.php b/mod/scorm/datamodels/aicclib.php index 4c6faa5e2d..1753e1d78c 100644 --- a/mod/scorm/datamodels/aicclib.php +++ b/mod/scorm/datamodels/aicclib.php @@ -333,6 +333,8 @@ function scorm_get_toc($user,$scorm,$liststyle,$currentorg='',$scoid='',$mode='n } $result->attemptleft = $scorm->maxattempt - $attempt; if ($scoes = get_records_select('scorm_scoes',"scorm='$scorm->id' $organizationsql order by id ASC")){ + // drop keys so that we can access array sequentially + $scoes = array_values($scoes); // // Retrieve user tracking data for each learning object // @@ -355,7 +357,7 @@ function scorm_get_toc($user,$scorm,$liststyle,$currentorg='',$scoid='',$mode='n $findnext = false; $parents[$level]='/'; - foreach ($scoes as $sco) { + foreach ($scoes as $pos=>$sco) { $isvisible = false; $sco->title = stripslashes($sco->title); if ($optionaldatas = scorm_get_sco($sco->id, SCO_DATA)) { @@ -395,7 +397,11 @@ function scorm_get_toc($user,$scorm,$liststyle,$currentorg='',$scoid='',$mode='n if ($isvisible) { $result->toc .= "\t\t
  • "; } - $nextsco = next($scoes); + if (isset($scoes[$pos+1])) { + $nextsco = $scoes[$pos+1]; + } else { + $nextsco = false; + } $nextisvisible = false; if (($nextsco !== false) && ($optionaldatas = scorm_get_sco($nextsco->id, SCO_DATA))) { if (!isset($optionaldatas->isvisible) || (isset($optionaldatas->isvisible) && ($optionaldatas->isvisible == 'true'))) { diff --git a/mod/scorm/datamodels/scorm_12lib.php b/mod/scorm/datamodels/scorm_12lib.php index 83235e230f..d001e7d834 100644 --- a/mod/scorm/datamodels/scorm_12lib.php +++ b/mod/scorm/datamodels/scorm_12lib.php @@ -189,9 +189,11 @@ function scorm_get_toc($user,$scorm,$liststyle,$currentorg='',$scoid='',$mode='n } $result->attemptleft = $scorm->maxattempt - $attempt; if ($scoes = get_records_select('scorm_scoes',"scorm='$scorm->id' $organizationsql order by id ASC")){ + // drop keys so that we can access array sequentially + $scoes = array_values($scoes); // // Retrieve user tracking data for each learning object - // + // $usertracks = array(); foreach ($scoes as $sco) { if (!empty($sco->launch)) { @@ -211,7 +213,7 @@ function scorm_get_toc($user,$scorm,$liststyle,$currentorg='',$scoid='',$mode='n $findnext = false; $parents[$level]='/'; - foreach ($scoes as $sco) { + foreach ($scoes as $pos=>$sco) { $isvisible = false; $sco->title = stripslashes($sco->title); if ($optionaldatas = scorm_get_sco($sco->id, SCO_DATA)) { @@ -252,7 +254,11 @@ function scorm_get_toc($user,$scorm,$liststyle,$currentorg='',$scoid='',$mode='n if ($isvisible) { $result->toc .= "\t\t
  • "; } - $nextsco = next($scoes); + if (isset($scoes[$pos+1])) { + $nextsco = $scoes[$pos+1]; + } else { + $nextsco = false; + } $nextisvisible = false; if (($nextsco !== false) && ($optionaldatas = scorm_get_sco($nextsco->id, SCO_DATA))) { if (!isset($optionaldatas->isvisible) || (isset($optionaldatas->isvisible) && ($optionaldatas->isvisible == 'true'))) { diff --git a/mod/scorm/datamodels/scorm_13lib.php b/mod/scorm/datamodels/scorm_13lib.php index 4ddf69ff36..376266505a 100644 --- a/mod/scorm/datamodels/scorm_13lib.php +++ b/mod/scorm/datamodels/scorm_13lib.php @@ -35,6 +35,8 @@ function scorm_get_toc($user,$scorm,$liststyle,$currentorg='',$scoid='',$mode='n } $result->attemptleft = $scorm->maxattempt - $attempt; if ($scoes = get_records_select('scorm_scoes',"scorm='$scorm->id' $organizationsql order by id ASC")){ + // drop keys so that we can access array sequentially + $scoes = array_values($scoes); // // Retrieve user tracking data for each learning object // @@ -61,7 +63,7 @@ function scorm_get_toc($user,$scorm,$liststyle,$currentorg='',$scoid='',$mode='n $nextid = 0; $findnext = false; $parents[$level]='/'; - foreach ($scoes as $sco) { + foreach ($scoes as $pos=>$sco) { $isvisible = false; $sco->title = stripslashes($sco->title); if (isset($optionaldatas[$sco->identifier])) { @@ -97,7 +99,11 @@ function scorm_get_toc($user,$scorm,$liststyle,$currentorg='',$scoid='',$mode='n $parents[$level]=$sco->parent; } } - $nextsco = next($scoes); + if (isset($scoes[$pos+1])) { + $nextsco = $scoes[$pos+1]; + } else { + $nextsco = false; + } $nextisvisible = false; if (($nextsco !== false) && (isset($optionaldatas[$nextsco->identifier]))) { if (!isset($optionaldatas[$nextsco->identifier]->isvisible) || diff --git a/mod/scorm/lib.php b/mod/scorm/lib.php index 0c9c75075b..3361e65aa3 100755 --- a/mod/scorm/lib.php +++ b/mod/scorm/lib.php @@ -257,10 +257,12 @@ function scorm_user_complete($course, $user, $mod, $scorm) { } $report .= "
  • \n"; @@ -283,7 +285,11 @@ function scorm_user_complete($course, $user, $mod, $scorm) { } } $report .= "\t\t
  • "; - $nextsco = next($scoes); + if (isset($scoes[$pos+1])) { + $nextsco = $scoes[$pos+1]; + } else { + $nextsco = false; + } if (($nextsco !== false) && ($sco->parent != $nextsco->parent) && (($level==0) || (($level>0) && ($nextsco->parent == $sco->identifier)))) { $sublist++; } else {