]> git.mjollnir.org Git - moodle.git/commitdiff
MDL-13093 "Continue" link jumps over items; merged from MOODLE_19_STABLE
authorskodak <skodak>
Sat, 15 Mar 2008 15:05:06 +0000 (15:05 +0000)
committerskodak <skodak>
Sat, 15 Mar 2008 15:05:06 +0000 (15:05 +0000)
mod/scorm/datamodels/aicclib.php
mod/scorm/datamodels/scorm_12lib.php
mod/scorm/datamodels/scorm_13lib.php
mod/scorm/lib.php

index 4c6faa5e2d4b49d3f92f0a32a532ed994592e682..1753e1d78c91a4bc815f19d387e7c60330c76e2a 100644 (file)
@@ -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<li>";
             }
-            $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'))) {
index 83235e230fd80262bc0d92515bf0bc3f4bb5940b..d001e7d834a3f7234b8adbf5c5a492e466fc0e6d 100644 (file)
@@ -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<li>";
             }
-            $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'))) {
index 4ddf69ff364922dbcedd8feef621a921a384388f..376266505a2a1741997f617c3e0411334c5415de 100644 (file)
@@ -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) || 
index 0c9c75075b51cae681b94ff2df75f038199df841..3361e65aa3feb4d8ac22d7d1daa6ceb37746a0fa 100755 (executable)
@@ -257,10 +257,12 @@ function scorm_user_complete($course, $user, $mod, $scorm) {
             }
             $report .= "<ul id='0' class='$liststyle'>";
             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); 
                 $level=0;
                 $sublist=1;
                 $parents[$level]='/';
-                foreach ($scoes as $sco) {
+                foreach ($scoes as $pos=>$sco) {
                     if ($parents[$level]!=$sco->parent) {
                         if ($level>0 && $parents[$level-1]==$sco->parent) {
                             $report .= "\t\t</ul></li>\n";
@@ -283,7 +285,11 @@ function scorm_user_complete($course, $user, $mod, $scorm) {
                         }
                     }
                     $report .= "\t\t<li>";
-                    $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 {