]> git.mjollnir.org Git - moodle.git/commitdiff
More defensive get_parent_cats()
authormoodler <moodler>
Thu, 31 Aug 2006 05:06:30 +0000 (05:06 +0000)
committermoodler <moodler>
Thu, 31 Aug 2006 05:06:30 +0000 (05:06 +0000)
lib/accesslib.php

index 0bc3698a735f756ba833604ccfa8aa23e4bb23c9..15eef0f8a8b0682febb2e84501c0191450be9c99 100755 (executable)
@@ -43,14 +43,18 @@ function get_parent_cats($context, $type) {
     
     $parents = array();
     
-    switch($type) {
+    switch ($type) {
 
         case CONTEXT_COURSECAT:
             
-            $cat = get_record('course_categories','id',$context->instanceid);
-            while ($cat->parent) {
-              
-                $context = get_context_instance(CONTEXT_COURSECAT, $cat->parent);
+            if (!$cat = get_record('course_categories','id',$context->instanceid)) {
+                break;
+            }
+
+            while (!empty($cat->parent)) {
+                if (!$context = get_context_instance(CONTEXT_COURSECAT, $cat->parent)) {
+                    break;
+                }
                 $parents[] = $context->id;
                 $cat = get_record('course_categories','id',$cat->parent);
             }
@@ -59,14 +63,23 @@ function get_parent_cats($context, $type) {
         
         case CONTEXT_COURSE:
         
-            $course = get_record('course', 'id', $context->instanceid);
-            $cat = get_record('course_categories','id',$course->category);        
-            $catinstance = get_context_instance(CONTEXT_COURSECAT, $course->category);
+            if (!$course = get_record('course', 'id', $context->instanceid)) {
+                break;
+            }
+            if (!$catinstance = get_context_instance(CONTEXT_COURSECAT, $course->category)) {
+                break;
+            }
+
             $parents[] = $catinstance->id;
-            
-            // what to do with cat 0?
-            while ($cat->parent) {
-                $context = get_context_instance(CONTEXT_COURSECAT, $cat->parent);
+
+            if (!$cat = get_record('course_categories','id',$course->category)) {
+                break;
+            }
+
+            while (!empty($cat->parent)) {
+                if (!$context = get_context_instance(CONTEXT_COURSECAT, $cat->parent)) {
+                    break;
+                }
                 $parents[] = $context->id;
                 $cat = get_record('course_categories','id',$cat->parent);
             }
@@ -1482,7 +1495,7 @@ function get_parent_contexts($context) {
         
         case CONTEXT_COURSECAT: // Coursecat -> coursecat or site
             $coursecat = get_record('course_categories','id',$context->instanceid);
-            if ($coursecat->parent) { // return parent value if exist
+            if (!empty($coursecat->parent)) { // return parent value if exist
                 $parent = get_context_instance(CONTEXT_COURSECAT, $coursecat->parent);
                 return array_merge(array($parent->id), get_parent_contexts($parent));
             } else { // else return site value