diff --git a/blocks/admin/block_admin.php b/blocks/admin/block_admin.php
index bd963d86e99..19b03475d39 100644
--- a/blocks/admin/block_admin.php
+++ b/blocks/admin/block_admin.php
@@ -70,10 +70,20 @@ class block_admin extends block_list {
}
/// View course grades (or just your own grades, same link)
- if ((has_capability('moodle/grade:viewall', $context) or
- (has_capability('moodle/grade:view', $context) && $course->showgrades)) && ($course->id!==SITEID)) {
- $this->content->items[]=''.get_string('grades').'';
- $this->content->icons[]='';
+ /// find all accessible reports
+ if ($course->id!==SITEID) {
+ if ($reports = get_list_of_plugins('grade/report', 'CVS')) { // Get all installed reports
+ foreach ($reports as $key => $plugin) { // Remove ones we can't see
+ if (!has_capability('gradereport/'.$plugin.':view', $context)) {
+ unset($reports[$key]);
+ }
+ }
+ }
+
+ if (!empty($reports)) {
+ $this->content->items[]=''.get_string('grades').'';
+ $this->content->icons[]='';
+ }
}
/// Course outcomes (to help give it more prominence because it's important)