fixed typos in $string['configshowtimes']
[moodle.git] / course / groups.php
blob33394ff6f4409b44bdeccf0f7536338cebec3adf
1 <?php // $Id$
3 ///////////////////////////////////////////////////////////////////////////
4 // //
5 // NOTICE OF COPYRIGHT //
6 // //
7 // Moodle - Modular Object-Oriented Dynamic Learning Environment //
8 // http://moodle.org //
9 // //
10 // Copyright (C) 1999-2004 Martin Dougiamas http://dougiamas.com //
11 // //
12 // This program is free software; you can redistribute it and/or modify //
13 // it under the terms of the GNU General Public License as published by //
14 // the Free Software Foundation; either version 2 of the License, or //
15 // (at your option) any later version. //
16 // //
17 // This program is distributed in the hope that it will be useful, //
18 // but WITHOUT ANY WARRANTY; without even the implied warranty of //
19 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the //
20 // GNU General Public License for more details: //
21 // //
22 // http://www.gnu.org/copyleft/gpl.html //
23 // //
24 ///////////////////////////////////////////////////////////////////////////
26 /// Editing interface to edit all the groups in a course
28 require_once('../config.php');
29 require_once('lib.php');
31 $courseid = required_param('id', PARAM_INT); // Course id
32 $selectedgroup = optional_param('group', NULL, PARAM_INT); // Current group id
34 if (! $course = get_record('course', 'id', $courseid) ) {
35 error("That's an invalid course id");
38 require_login($course->id);
40 if (!isteacheredit($course->id)) {
41 redirect("group.php?id=$course->id"); // Not allowed to see all groups
44 /// Get the current list of groups and check the selection is valid
46 $groups = get_groups($course->id);
48 if ($selectedgroup and !isset($groups[$selectedgroup])) {
49 $selectedgroup = NULL;
53 /// Print the header of the page
55 $strgroup = get_string('group');
56 $strgroups = get_string('groups');
57 $streditgroupprofile = get_string('editgroupprofile');
58 $strgroupmembers = get_string('groupmembers');
59 $strgroupmemberssee = get_string('groupmemberssee');
60 $strparticipants = get_string('participants');
62 print_header("$course->shortname: $strgroups", "$course->fullname",
63 "<a href=\"$CFG->wwwroot/course/view.php?id=$course->id\">$course->shortname</a> ".
64 "-> <a href=\"$CFG->wwwroot/user/index.php?id=$course->id\">$strparticipants</a> ".
65 "-> $strgroups", "", "", true, '', user_login_string($course, $USER));
68 /// First, process any inputs there may be.
70 if ($data = data_submitted() and confirm_sesskey()) {
72 // Clean ALL incoming parameters which go in SQL queries here for good measure
73 $data->id = required_param('id', PARAM_INT);
74 $data->groups = optional_param('groups', 0, PARAM_INT);
75 $data->groupid = optional_param('groupid', 0, PARAM_INT);
76 $data->members = optional_param('members', array(), PARAM_INT);
78 if (!empty($data->nonmembersadd)) { /// Add people to a group
79 if (!empty($data->nonmembers) and !empty($data->groupid)) {
80 $groupmodified = false;
81 foreach ($data->nonmembers as $userid) {
82 //since we allow people to be in more than 1 group, this has to go.
83 if (!ismember($data->groupid,$userid)) {// Just to make sure (another teacher could be editing)
84 $record->groupid = $data->groupid;
85 $record->userid = $userid;
86 $record->timeadded = time();
87 if (!insert_record('groups_members', $record)) {
88 notify("Error occurred while adding user $userid to group $data->groupid");
90 $groupmodified = true;
93 if ($groupmodified) {
94 set_field('groups', 'timemodified', time(), 'id', $data->groupid);
97 $selectedgroup = $data->groupid;
100 } else if (!empty($data->nonmembersrandom)) { /// Add all non members to groups
101 notify("Random adding of people into groups is not functional yet.");
103 } else if (!empty($data->nonmembersinfo)) { /// Return info about the selected users
104 notify("You must turn Javascript on");
106 } else if (!empty($data->groupsremove)) { /// Remove a group, all members become nonmembers
107 if (!empty($data->groups)) {
108 if(!isset($groups[$data->groups])) {
109 error("This is not a valid group to remove");
111 delete_records("groups", "id", $data->groups);
112 delete_records("groups_members", "groupid", $data->groups);
113 unset($groups[$data->groups]);
117 } else if (!empty($data->groupsinfo)) { /// Display full info for a group
118 notify("You must turn Javascript on");
120 } else if (!empty($data->groupsadd)) { /// Create a new group
121 if (!empty($data->newgroupname)) {
122 $newgroup->name = $data->newgroupname;
123 $newgroup->courseid = $course->id;
124 $newgroup->lang = current_language();
125 $newgroup->timecreated = time();
126 if (!insert_record("groups", $newgroup)) {
127 notify("Could not insert the new group '$newgroup->name'");
129 $groups = get_groups($course->id);
132 } else if (!empty($data->membersremove)) { /// Remove selected people from a particular group
134 if (!empty($data->members) and !empty($data->groupid)) {
135 foreach ($data->members as $userid) {
136 delete_records('groups_members', 'userid', $userid, "groupid", $data->groupid);
138 set_field('groups', 'timemodified', time(), 'id', $data->groupid);
140 $selectedgroup = $data->groupid;
142 } else if (!empty($data->membersinfo)) { /// Return info about the selected users
143 notify("You must turn Javascript on");
149 /// Calculate data ready to create the editing interface
151 $strmemberincourse = get_string('memberincourse');
152 $strgroupnonmembers = get_string('groupnonmembers');
153 $strgroupmembersselected = get_string('groupmembersselected');
154 $strgroupremovemembers = get_string('groupremovemembers');
155 $strgroupinfomembers = get_string('groupinfomembers');
156 $strgroupadd = get_string('groupadd');
157 $strgroupremove = get_string('groupremove');
158 $strgroupinfo = get_string('groupinfo');
159 $strgroupinfoedit = get_string('groupinfoedit');
160 $strgroupinfopeople = get_string('groupinfopeople');
161 $strgrouprandomassign = get_string('grouprandomassign');
162 $strgroupaddusers = get_string('groupaddusers');
163 $courseid = $course->id;
164 $listgroups = array();
165 $listmembers = array();
166 $nonmembers = array();
167 $groupcount = count($groups);
170 /// First, get everyone into the nonmembers array
172 if ($students = get_course_students($course->id)) {
173 foreach ($students as $student) {
174 $nonmembers[$student->id] = fullname($student, true);
176 unset($students);
179 if ($teachers = get_course_teachers($course->id)) {
180 foreach ($teachers as $teacher) {
181 $prefix = '- ';
182 if (isteacheredit($course->id, $teacher->id)) {
183 $prefix = '# ';
185 $nonmembers[$teacher->id] = $prefix.fullname($teacher, true);
187 unset($teachers);
190 /// Pull out all the members into little arrays
192 if ($groups) {
193 foreach ($groups as $group) {
194 $countusers = 0;
195 $listmembers[$group->id] = array();
196 if ($groupusers = get_group_users($group->id)) {
197 foreach ($groupusers as $groupuser) {
198 $listmembers[$group->id][$groupuser->id] = $nonmembers[$groupuser->id];
199 //we do not remove people from $nonmembers, everyone is displayed
200 //this is to enable people to be registered in multiple groups
201 //unset($nonmembers[$groupuser->id]);
202 $countusers++;
204 natcasesort($listmembers[$group->id]);
206 $listgroups[$group->id] = $group->name." ($countusers)";
208 natcasesort($listgroups);
211 natcasesort($nonmembers);
213 if (empty($selectedgroup)) { // Choose the first group by default
214 if ($selectedgroup = array_shift($temparr = array_keys($listgroups))) {
215 $members = $listmembers[$selectedgroup];
217 } else {
218 $members = $listmembers[$selectedgroup];
221 $sesskey = !empty($USER->id) ? $USER->sesskey : '';
223 /// Print out the complete form
225 include('groups-edit.html');
227 print_footer($course);