Index: lib/accesslib.php
===================================================================
RCS file: /cvsroot/moodle/moodle/lib/accesslib.php,v
retrieving revision 1.253
diff -u -r1.253 accesslib.php
--- lib/accesslib.php   9 Apr 2007 11:11:31 -0000   1.253
+++ lib/accesslib.php   16 Apr 2007 02:42:58 -0000
@@ -2914,20 +2914,24 @@
         break;
 
         case CONTEXT_COURSECAT: // Coursecat -> coursecat or site
-            if (!$coursecat = get_record('course_categories','id',$context->instanceid)) {
-                return array();
-            }
-            if (!empty($coursecat->parent)) { // return parent value if exist
-                $parent = get_context_instance(CONTEXT_COURSECAT, $coursecat->parent);
-                $res = array_merge(array($parent->id), get_parent_contexts($parent));
-                $pcontexts[$context->id] = $res;
-                return $res;
-            } else { // else return site value
-                $parent = get_context_instance(CONTEXT_SYSTEM);
-                $res = array($parent->id);
-                $pcontexts[$context->id] = $res;
-                return $res;
-            }
+            $qry = '
+                    SELECT
+                        c2.*
+                    FROM
+                        '.$CFG->prefix.'course_categories c1,
+                        '.$CFG->prefix.'course_categories c2
+                    WHERE
+
+                        c1.path like c2.path || \'%\' AND
+                        c2.id != c1.id AND
+                        c1.id='.$context->instanceid;
+            $records = get_records_sql($qry);
+            if (empty($records)) {
+                $records = array();
+            }
+            $res = array_merge(get_context_instance(CONTEXT_SYSTEM), $records);
+            $pcontexts[$context->id] = $res;
+            return $res;
         break;
 
         case CONTEXT_COURSE: // 1 to 1 to course cat

