From 3446013d45fe847b7e5d0a9474435e300a6f9da7 Mon Sep 17 00:00:00 2001
From: toyomoyo <toyomoyo>
Date: Wed, 18 Jul 2007 08:03:38 +0000
Subject: [PATCH] MDL-10480, implement average grade selection

---
 grade/report/grader/lib.php | 22 +++++++++++++++++++---
 1 file changed, 19 insertions(+), 3 deletions(-)

diff --git a/grade/report/grader/lib.php b/grade/report/grader/lib.php
index 41f836d751..68057d9772 100644
--- a/grade/report/grader/lib.php
+++ b/grade/report/grader/lib.php
@@ -755,8 +755,16 @@ class grade_report_grader extends grade_report {
         global $CFG, $USER;
 
         $averagesdisplaytype = $this->get_pref('averagesdisplaytype');
-
+        $mean_pref = get_user_preferences('grade_report_meanselection', $CFG->grade_report_meanselection);
         $groupavghtml = '';
+
+        if ($mean_pref == 2) {
+            // non empty grades
+            $meanstr = "AND NOT g.finalgrade IS NULL";
+        } else {
+            $meanstr = "";
+        }
+
         if ($this->currentgroup && $this->get_pref('showgroups')) {
 
         /** SQL for finding group sum */
@@ -772,6 +780,7 @@ class grade_report_grader extends grade_report {
                 AND ra.roleid in ($this->gradebookroles)
                 AND ra.contextid ".get_related_contexts_string($this->context)."
                 AND NOT g.finalgradeIS NULL
+                $notnullstr
                 GROUP BY g.itemid";
 
             $groupsum = array();
@@ -844,8 +853,15 @@ class grade_report_grader extends grade_report {
 
         $averagesdisplaytype = $this->get_pref('averagesdisplaytype');
         $meanselection = $this->get_pref('meanselection');
-
+        $mean_pref = get_user_preferences('grade_report_meanselection', $CFG->grade_report_meanselection);
         $gradeavghtml = '';
+        
+        if ($mean_pref == 2) {
+            // non empty grades
+            $meanstr = "AND NOT g.finalgrade IS NULL";
+        } else {
+            $meanstr = "";
+        }
         if ($this->get_pref('showaverages')) {
 
             /** SQL for finding the SUM grades of all visible users ($CFG->gradebookroles) */
@@ -858,7 +874,7 @@ class grade_report_grader extends grade_report {
                 WHERE gi.courseid = $this->courseid
                 AND ra.roleid in ($this->gradebookroles)
                 AND ra.contextid ".get_related_contexts_string($this->context)."
-                AND NOT g.finalgrade IS NULL
+                $meanstr
                 GROUP BY g.itemid";
 
             $classsum = array();
-- 
2.39.5