From 35079f539ce5416b6e58b903088044f28f4ddd98 Mon Sep 17 00:00:00 2001
From: skodak <skodak>
Date: Thu, 30 Apr 2009 08:07:43 +0000
Subject: [PATCH] MDL-18951 standardised group support in grader report (not
 complete yet)

---
 grade/report/grader/lib.php              | 17 ++++-------------
 grade/report/grader/preferences_form.php |  1 -
 grade/report/grader/settings.php         |  3 ---
 grade/report/lib.php                     | 22 +++++++++++++++-------
 lib/db/upgrade.php                       |  5 +++++
 version.php                              |  2 +-
 6 files changed, 25 insertions(+), 25 deletions(-)

diff --git a/grade/report/grader/lib.php b/grade/report/grader/lib.php
index ae6d98d526..a8b95db6bb 100644
--- a/grade/report/grader/lib.php
+++ b/grade/report/grader/lib.php
@@ -144,10 +144,7 @@ class grade_report_grader extends grade_report {
 
         $this->pbarurl = 'index.php?id='.$this->courseid.$perpage.'&amp;';
 
-        // Setup groups if requested
-        if ($this->get_pref('showgroups')) {
-            $this->setup_groups();
-        }
+        $this->setup_groups();
 
         $this->setup_sortitemid();
     }
@@ -430,12 +427,6 @@ class grade_report_grader extends grade_report {
             $html .= $this->print_toggle('averages', true);
         }
 
-        if (has_capability('moodle/grade:viewall', $this->context)
-         and has_capability('moodle/site:accessallgroups', $this->context)
-         and ($course_has_groups = true)) { // TODO replace that last condition with proper check
-            $html .= $this->print_toggle('groups', true);
-        }
-
         $html .= $this->print_toggle('ranges', true);
         if (!empty($CFG->enableoutcomes)) {
             $html .= $this->print_toggle('nooutcomes', true);
@@ -1024,10 +1015,10 @@ class grade_report_grader extends grade_report {
             // Averages heading
 
             $straverage_group = get_string('groupavg', 'grades');
-            $showaverages_group = $this->currentgroup && $this->get_pref('showgroups');
             $straverage = get_string('overallaverage', 'grades');
             $showaverages = $this->get_pref('showaverages');
-
+            $showaverages_group = $this->currentgroup && $showaverages;
+            
             if ($showaverages_group) {
                 $studentshtml .= '<tr class="groupavg r'.$this->rowcount++.'"><th class="header c0" '.$colspan.'scope="row">'.$straverage_group.'</th></tr>';
             }
@@ -1075,7 +1066,7 @@ class grade_report_grader extends grade_report {
 
         if ($grouponly) {
             $straverage = get_string('groupavg', 'grades');
-            $showaverages = $this->currentgroup && $this->get_pref('showgroups');
+            $showaverages = $this->currentgroup && $this->get_pref('showaverages');
             $groupsql = $this->groupsql;
             $groupwheresql = $this->groupwheresql;
             $groupwheresql_params = $this->groupwheresql_params;
diff --git a/grade/report/grader/preferences_form.php b/grade/report/grader/preferences_form.php
index 1fded3d5cc..bbd6041b51 100644
--- a/grade/report/grader/preferences_form.php
+++ b/grade/report/grader/preferences_form.php
@@ -72,7 +72,6 @@ class grader_report_preferences_form extends moodleform {
             if ($canviewhidden) {
                 $preferences['prefshow']['showaverages']  = $checkbox_default;
             }
-            $preferences['prefshow']['showgroups']        = $checkbox_default;
             $preferences['prefshow']['showlocks']         = $checkbox_default;
 
             $preferences['prefrows'] = array(
diff --git a/grade/report/grader/settings.php b/grade/report/grader/settings.php
index e7031b0312..dd9254be31 100644
--- a/grade/report/grader/settings.php
+++ b/grade/report/grader/settings.php
@@ -65,9 +65,6 @@ $settings->add(new admin_setting_configcheckbox('grade_report_showeyecons', get_
 $settings->add(new admin_setting_configcheckbox('grade_report_showaverages', get_string('showaverages', 'grades'),
                                             get_string('configshowaverages', 'grades'), 1));
 
-$settings->add(new admin_setting_configcheckbox('grade_report_showgroups', get_string('showgroups', 'grades'),
-                                            get_string('configshowgroups', 'grades'), 0));
-
 $settings->add(new admin_setting_configcheckbox('grade_report_showlocks', get_string('showlocks', 'grades'),
                                             get_string('configshowlocks', 'grades'), 0));
 
diff --git a/grade/report/lib.php b/grade/report/lib.php
index b733d80104..28fac73180 100755
--- a/grade/report/lib.php
+++ b/grade/report/lib.php
@@ -108,6 +108,12 @@ abstract class grade_report {
      */
     public $currentgroup;
 
+    /**
+     * Current course group mode
+     * @var int $groupmode
+     */
+    var $groupmode;
+
     /**
      * A HTML select element used to select the current group.
      * @var string $group_selector
@@ -298,13 +304,15 @@ abstract class grade_report {
      */
     protected function setup_groups() {
         /// find out current groups mode
-        $this->group_selector = groups_print_course_menu($this->course, $this->pbarurl, true);
-        $this->currentgroup   = groups_get_course_group($this->course);
-
-        if ($this->currentgroup) {
-            $this->groupsql             = " JOIN {groups_members} gm ON gm.userid = u.id ";
-            $this->groupwheresql        = " AND gm.groupid = :gr_grpid ";
-            $this->groupwheresql_params = array('gr_grpid'=>$this->currentgroup);
+        if ($this->groupmode = groups_get_course_groupmode($this->course)) {
+            $this->group_selector = groups_print_course_menu($this->course, $this->pbarurl, true);
+            $this->currentgroup   = groups_get_course_group($this->course);
+
+            if ($this->currentgroup) {
+                $this->groupsql             = " JOIN {groups_members} gm ON gm.userid = u.id ";
+                $this->groupwheresql        = " AND gm.groupid = :gr_grpid ";
+                $this->groupwheresql_params = array('gr_grpid'=>$this->currentgroup);
+            }
         }
     }
 
diff --git a/lib/db/upgrade.php b/lib/db/upgrade.php
index 9100388e2b..394e1ff12e 100644
--- a/lib/db/upgrade.php
+++ b/lib/db/upgrade.php
@@ -1703,6 +1703,11 @@ WHERE gradeitemid IS NOT NULL AND grademax IS NOT NULL");
         upgrade_main_savepoint($result, 2009042700);
     }
 
+    if ($result && $oldversion < 2009043000) {
+        unset_config('grade_report_showgroups');
+        upgrade_main_savepoint($result, 2009043000);
+    }
+
     return $result;
 }
 
diff --git a/version.php b/version.php
index fd6be69fd2..ef8ab18ce7 100644
--- a/version.php
+++ b/version.php
@@ -6,7 +6,7 @@
 // This is compared against the values stored in the database to determine
 // whether upgrades should be performed (see lib/db/*.php)
 
-    $version = 2009042700;  // YYYYMMDD   = date of the last version bump
+    $version = 2009043000;  // YYYYMMDD   = date of the last version bump
                             //         XX = daily increments
 
     $release = '2.0 dev (Build: 20090430)';  // Human-friendly version name
-- 
2.39.5