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"); } /**