accesslib: get_parent_cats() goes away too...

Not used anymore, and very inefficient.

If you need something like it, use course_category.path
just like we use context.path .
This commit is contained in:
martinlanghoff
2007-09-19 07:24:26 +00:00
parent 8612e194e8
commit 0315aeb02f
-86
View File
@@ -263,92 +263,6 @@ function get_guest_role() {
}
}
/**
* This functions get all the course categories in proper order
* (!)note this only gets course category contexts, and not the site
* context
* @param object $context
* @return array of contextids
*/
function get_parent_cats($context) {
global $COURSE;
switch ($context->contextlevel) {
// a category can be the parent of another category
// there is no limit of depth in this case
case CONTEXT_COURSECAT:
static $categoryparents = null; // cache for parent categories
if (!isset($categoryparents)) {
$categoryparents = array();
}
if (array_key_exists($context->instanceid, $categoryparents)) {
return $categoryparents[$context->instanceid];
}
if (!$cat = get_record('course_categories','id',$context->instanceid)) {
//error?
return array();
}
$parents = array();
while (!empty($cat->parent)) {
if (!$catcontext = get_context_instance(CONTEXT_COURSECAT, $cat->parent)) {
debugging('Incorrect category parent');
break;
}
$parents[] = $catcontext->id;
$cat = get_record('course_categories','id',$cat->parent);
}
return $categoryparents[$context->instanceid] = array_reverse($parents);
break;
// a course always fall into a category, unless it's a site course
// this happens when SITEID == $course->id
// in this case the parent of the course is site context
case CONTEXT_COURSE:
static $courseparents = null; // cache course parents
if (!isset($courseparents)) {
$courseparents = array();
}
if (array_key_exists($context->instanceid, $courseparents)) {
return $courseparents[$context->instanceid];
}
if (count($courseparents) > 1000) {
$courseparents = array(); // max cache size when looping through thousands of courses
}
if ($context->instanceid == SITEID) {
return $courseparents[$context->instanceid] = array(); // frontpage course does not have parent cats
}
if ($context->instanceid == $COURSE->id) {
$course = $COURSE;
} else if (!$course = get_record('course', 'id', $context->instanceid)) {
//error?
return array();;
}
if (empty($course->category)) {
// this should not happen
return $courseparents[$context->instanceid] = array();
}
if (!$catcontext = get_context_instance(CONTEXT_COURSECAT, $course->category)) {
debugging('Incorect course category');
return array();;
}
return $courseparents[$context->instanceid] = array_merge(get_parent_cats($catcontext), array($catcontext->id)); //recursion :-)
break;
default:
// something is very wrong!
return array();
break;
}
}
function has_capability($capability, $context=NULL, $userid=NULL, $doanything=true) {
global $USER, $CONTEXT, $ACCESS, $CFG, $DIRTYCONTEXTS;