diff --git a/course/lib.php b/course/lib.php index 97b16b3fa32..33978affb8c 100644 --- a/course/lib.php +++ b/course/lib.php @@ -1692,11 +1692,15 @@ function make_categories_list(&$list, &$parents, $requiredcapability = '', } // Add this category to $list, if the permissions check out. - if ($requiredcapability) { - ensure_context_subobj_present($category, CONTEXT_COURSECAT); - } - if (!$requiredcapability || has_all_capabilities($requiredcapability, $category->context)) { + if (empty($requiredcapability)) { $list[$category->id] = $path; + + } else { + ensure_context_subobj_present($category, CONTEXT_COURSECAT); + $requiredcapability = (array)$requiredcapability; + if (has_all_capabilities($requiredcapability, $category->context)) { + $list[$category->id] = $path; + } } } diff --git a/lib/accesslib.php b/lib/accesslib.php index a94c7a550d6..71364524a84 100755 --- a/lib/accesslib.php +++ b/lib/accesslib.php @@ -518,6 +518,10 @@ function has_any_capability($capabilities, $context, $userid=NULL, $doanything=t * @return bool */ function has_all_capabilities($capabilities, $context, $userid=NULL, $doanything=true) { + if (!is_array($capabilities)) { + debugging('Incorrect $capabilities parameter in has_all_capabilities() call - must be an array'); + return false; + } foreach ($capabilities as $capability) { if (!has_capability($capability, $context, $userid, $doanything)) { return false;