diff --git a/grade/report/grader/lib.php b/grade/report/grader/lib.php
index 21bb72a64d0..0ea6cf737b8 100644
--- a/grade/report/grader/lib.php
+++ b/grade/report/grader/lib.php
@@ -863,7 +863,7 @@ class grade_report_grader extends grade_report {
foreach ($this->items as $item) {
// If the user shouldn't see this grade_item, hide the average as well
// MDL-11576 If any of the grades are hidden and the user doesn't have permission to view them, hide average as well
- if (($item->is_hidden() || $item->has_hidden_grades()) && !$canviewhidden) {
+ if (($item->is_hidden() || $item->has_hidden_grades($groupsql, $groupwheresql)) && !$canviewhidden) {
$avghtml .= '
- | ';
continue;
}
diff --git a/lib/grade/grade_item.php b/lib/grade/grade_item.php
index a6387b29bd2..7dcea7a033f 100644
--- a/lib/grade/grade_item.php
+++ b/lib/grade/grade_item.php
@@ -569,8 +569,10 @@ class grade_item extends grade_object {
* Returns the number of grades that are hidden.
* @param return int Number of hidden grades
*/
- function has_hidden_grades() {
- return count_records('grade_grades', 'itemid', $this->id, 'hidden', 1);
+ function has_hidden_grades($groupsql = null, $groupwheresql = null) {
+ global $CFG;
+ return get_field_sql("SELECT COUNT(*) FROM {$CFG->prefix}grade_grades g LEFT JOIN "
+ ."{$CFG->prefix}user u ON g.userid = u.id$groupsql WHERE itemid = $this->id AND hidden = 1 $groupwheresql");
}
/**