3 * Print an overview of groupings & group membership
5 * @author Matt Clarkson mattc@catalyst.net.nz
7 * @license http://www.gnu.org/copyleft/gpl.html GNU Public License
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);
47 print_header_simple($strgroups, ': '.$strgroups, $navigation, '', '', true, '', navmenu($course));
50 if (!empty($CFG->enablegroupings
)) {
52 $currenttab = 'overview';
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)) {
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);
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
;
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
;
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
) {
143 if (!empty($groupid) && $groupid != $grouping->groupid
) {
146 if ($lastgroupingid === false ||
$lastgroupingid != $grouping->id
) {
147 if($lastgroupingid !== false) {
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";
162 echo "<li>$strnogroupsassigned</li>";
164 if (isset($groupsmembers[$grouping->groupid
])) {
165 $groupsmembers[$grouping->groupid
]->printed
= true;
169 if ($lastgroupingid !== false) {
174 // Print Groups not in a grouping
177 if (empty($groupingid)) {
179 $labelprinted = false;
180 foreach($groupsmembers as $groupmembers) {
181 if ($groupmembers->printed
) {
184 if (!empty($groupid) && $groupid != $groupmembers->groupid
) {
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";
199 if ($labelprinted !== false) {
200 echo '</ul></li></ul>';
206 print_footer($course);