diff --git a/course/lib.php b/course/lib.php index 6d3089a5954..190eaeace07 100644 --- a/course/lib.php +++ b/course/lib.php @@ -4041,32 +4041,36 @@ function course_get_user_navigation_options($context, $course = null) { // We are in a course, so make sure we use the proper capability (course:viewparticipants). $options->participants = course_can_view_participants($context); - // Only display badges if the current user can manage them or if they can view them and have, at least, one available badge. - require_once($CFG->dirroot.'/lib/badgeslib.php'); - $canmanage = has_any_capability([ - 'moodle/badges:createbadge', - 'moodle/badges:awardbadge', - 'moodle/badges:configurecriteria', - 'moodle/badges:configuremessages', - 'moodle/badges:configuredetails', - 'moodle/badges:deletebadge', - ], - $context - ); - $totalbadges = []; - $canview = false; - if (!$canmanage) { - // This only needs to be calculated if the user can't manage badges (to improve performance). - $canview = has_capability('moodle/badges:viewbadges', $context); - if (is_null($course)) { - $totalbadges = count(badges_get_badges(BADGE_TYPE_SITE, 0, '', '', 0, 0, $USER->id)); - } else { - $totalbadges = count(badges_get_badges(BADGE_TYPE_COURSE, $course->id, '', '', 0, 0, $USER->id)); + // Only display badges if they are enabled and the current user can manage them or if they can view them and have, + // at least, one available badge. + if (!empty($CFG->enablebadges) && !empty($CFG->badges_allowcoursebadges)) { + $canmanage = has_any_capability([ + 'moodle/badges:createbadge', + 'moodle/badges:awardbadge', + 'moodle/badges:configurecriteria', + 'moodle/badges:configuremessages', + 'moodle/badges:configuredetails', + 'moodle/badges:deletebadge', + ], + $context + ); + $totalbadges = []; + $canview = false; + if (!$canmanage) { + // This only needs to be calculated if the user can't manage badges (to improve performance). + $canview = has_capability('moodle/badges:viewbadges', $context); + if ($canview) { + require_once($CFG->dirroot.'/lib/badgeslib.php'); + if (is_null($course)) { + $totalbadges = count(badges_get_badges(BADGE_TYPE_SITE, 0, '', '', 0, 0, $USER->id)); + } else { + $totalbadges = count(badges_get_badges(BADGE_TYPE_COURSE, $course->id, '', '', 0, 0, $USER->id)); + } + } } - } - $options->badges = !empty($CFG->enablebadges) && !empty($CFG->badges_allowcoursebadges) && - ($canmanage || ($canview && $totalbadges > 0)); + $options->badges = ($canmanage || ($canview && $totalbadges > 0)); + } // Add view grade report is permitted. $grades = false;