MDL-11433 Added decimals field to grade_items table
[moodle-pu.git] / group / overview.php
blob463f075fc1cbedb424f9aa6f6ea43b822d9734c9
1 <?php // $Id$
2 /**
3 * Print an overview of groupings & group membership
5 * @author Matt Clarkson mattc@catalyst.net.nz
6 * @version 0.0.1
7 * @license http://www.gnu.org/copyleft/gpl.html GNU Public License
8 * @package groups
9 */
11 require_once('../config.php');
13 $courseid = required_param('id', PARAM_INT);
14 $groupid = optional_param('groupid', 0, PARAM_INT);
15 $groupingid = optional_param('groupingid', 0, PARAM_INT);
17 $returnurl = $CFG->wwwroot.'/group/index.php?id='.$courseid;
19 if (!$course = get_record('course', 'id',$courseid)) {
20 error('invalidcourse');
23 // Make sure that the user has permissions to manage groups.
24 require_login($course);
26 $context = get_context_instance(CONTEXT_COURSE, $courseid);
27 require_capability('moodle/course:managegroups', $context);
31 $strgroups = get_string('groups');
32 $strparticipants = get_string('participants');
33 $stroverview = get_string('overview', 'group');
34 $strgrouping = get_string('grouping', 'group');
35 $strgroup = get_string('group', 'group');
36 $strnotingrouping = get_string('notingrouping', 'group');
37 $strfiltergroups = get_string('filtergroups', 'group');
38 $strnogroups = get_string('nogroups', 'group');
39 $strnogroupsassigned = get_string('nogroupsassigned', 'group');
41 // Print the page and form
42 $navlinks = array(array('name'=>$strparticipants, 'link'=>$CFG->wwwroot.'/user/index.php?id='.$courseid, 'type'=>'misc'),
43 array('name'=>$strgroups, 'link'=>'', 'type'=>'misc'));
44 $navigation = build_navigation($navlinks);
46 /// Print header
47 print_header_simple($strgroups, ': '.$strgroups, $navigation, '', '', true, '', navmenu($course));
50 if (!empty($CFG->enablegroupings)) {
51 // Add tabs
52 $currenttab = 'overview';
53 require('tabs.php');
56 $groupings= array();
58 // Get groupings and child group id's
59 if (!empty($CFG->enablegroupings)) {
60 $sql = "SELECT gs.id, gs.name, gg.groupid " .
61 "FROM {$CFG->prefix}groupings gs " .
62 "LEFT JOIN {$CFG->prefix}groupings_groups gg ON gs.id = gg.groupingid " .
63 "WHERE gs.courseid = {$course->id} " .
64 "ORDER BY gs.name, gs.id ";
66 $rs = get_recordset_sql($sql);
67 while ($row = rs_fetch_next_record($rs)) {
68 $groupings[] = $row;
72 // Get groups & group members
73 $sql = "SELECT g.id AS groupid, g.name, u.id AS userid, u.firstname, u.lastname, u.idnumber, u.username " .
74 "FROM {$CFG->prefix}groups g " .
75 "LEFT JOIN {$CFG->prefix}groups_members gm ON g.id = gm.groupid " .
76 "LEFT JOIN {$CFG->prefix}user u ON gm.userid = u.id " .
77 "WHERE g.courseid = {$course->id} " .
78 "ORDER BY g.name, g.id ";
80 $rs = get_recordset_sql($sql);
82 $groupsmembers = array();
84 // Build a hash of keyed on groupid and userid;
85 while ($row = rs_fetch_next_record($rs)) {
86 $groupsmembers[$row->groupid]->name = $row->name;
87 $groupsmembers[$row->groupid]->groupid = $row->groupid;
88 $groupsmembers[$row->groupid]->users[$row->userid] = $row;
89 $groupsmembers[$row->groupid]->printed = false;
92 if (empty($groupsmembers)) {
93 print_box($strnogroups);
94 } else {
96 /// Print overview filter form
98 echo '<form method="get" action="overview.php">';
99 echo "<input type=\"hidden\" name=\"id\" value=\"{$course->id}\" />";
100 echo "<label for=\"groupingselect\">$strfiltergroups $strgrouping </label>";
101 echo '<select id="groupingselect" name="groupingid" onchange="this.parentNode.submit();">';
102 echo ' <option value=""></option>';
103 $lastgroupingid = false;
104 foreach ($groupings as $grouping) {
105 if ($lastgroupingid === false || $lastgroupingid != $grouping->id) {
106 $selected = $grouping->id == $groupingid ? 'selected="selected"':'';
107 echo "<option value=\"{$grouping->id}\" $selected>".format_string($grouping->name)."</option>\n";
109 $lastgroupingid = $grouping->id;
111 echo '</select>';
113 echo "<label for=\"groupselect\"> $strgroup </label>";
114 echo '<select id="groupselect" name="groupid" onchange="this.parentNode.submit();">';
115 echo ' <option value=""></option>';
116 $lastgroupid = false;
118 foreach ($groupsmembers as $group) {
119 if ($lastgroupid === false || $lastgroupid != $group->groupid) {
120 $selected = $group->groupid == $groupid ? 'selected="selected"':'';
121 echo "<option value=\"{$group->groupid}\" $selected>".format_string($group->name)."</option>\n";
123 $lastgroupid = $group->groupid ;
125 echo '</select>';
127 echo '</form>';
130 /// Print overview
131 print_heading(format_string($course->shortname) .' '.$stroverview, 'center', 3);
135 echo '<div id="grouping-groups-overview"><ul>';
137 if (!empty($CFG->enablegroupings) && isset($groupings)) {
138 $lastgroupingid = false;
139 foreach ($groupings as $grouping) {
140 if (!empty($groupingid) && $groupingid != $grouping->id) {
141 continue;
143 if (!empty($groupid) && $groupid != $grouping->groupid) {
144 continue;
146 if ($lastgroupingid === false || $lastgroupingid != $grouping->id) {
147 if($lastgroupingid !== false) {
148 echo '</ul></li>';
151 echo "<li>$strgrouping: {$grouping->name}<ul>\n";
152 $lastgroupingid = $grouping->id;
154 if (isset($groupsmembers[$grouping->groupid])) {
155 echo "<li>{$strgroup}: ".format_string($groupsmembers[$grouping->groupid]->name)."<ul>\n";
156 foreach ($groupsmembers[$grouping->groupid]->users as $user) {
157 echo "<li><a href=\"{$CFG->wwwroot}/user/view.php?id={$user->userid}\">".fullname($user)."</a></li>\n";
159 echo "</ul></li>";
161 else {
162 echo "<li>$strnogroupsassigned</li>";
164 if (isset($groupsmembers[$grouping->groupid])) {
165 $groupsmembers[$grouping->groupid]->printed = true;
169 if ($lastgroupingid !== false) {
170 echo '</ul></li>';
172 echo '</ul>';
174 // Print Groups not in a grouping
177 if (empty($groupingid)) {
179 $labelprinted = false;
180 foreach($groupsmembers as $groupmembers) {
181 if ($groupmembers->printed) {
182 continue;
184 if (!empty($groupid) && $groupid != $groupmembers->groupid) {
185 continue;
187 if ($labelprinted === false) {
188 echo "<ul><li>$strnotingrouping<ul>";
189 $labelprinted = true;
192 echo '<li>'.format_string($groupmembers->name).'<ul>';
194 foreach ($groupmembers->users as $user) {
195 echo "<li><a href=\"{$CFG->wwwroot}/user/view.php?id={$user->userid}\">".fullname($user)."</a></li>\n";
197 echo "</ul></li>";
199 if ($labelprinted !== false) {
200 echo '</ul></li></ul>';
203 echo '</div>';
206 print_footer($course);