Commit | Line | Data |
---|---|---|
4ca6cfbf | 1 | <?php |
4d8e2417 AG |
2 | // This file is part of Moodle - http://moodle.org/ |
3 | // | |
4 | // Moodle is free software: you can redistribute it and/or modify | |
5 | // it under the terms of the GNU General Public License as published by | |
6 | // the Free Software Foundation, either version 3 of the License, or | |
7 | // (at your option) any later version. | |
8 | // | |
9 | // Moodle is distributed in the hope that it will be useful, | |
10 | // but WITHOUT ANY WARRANTY; without even the implied warranty of | |
11 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
12 | // GNU General Public License for more details. | |
13 | // | |
14 | // You should have received a copy of the GNU General Public License | |
15 | // along with Moodle. If not, see <http://www.gnu.org/licenses/>. | |
16 | ||
17 | ||
62d63838 | 18 | /** |
19 | * Add/remove members from group. | |
20 | * | |
4d8e2417 AG |
21 | * @copyright 2006 The Open University and others, N.D.Freear AT open.ac.uk, J.White AT open.ac.uk and others |
22 | * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later | |
23 | * @package core_group | |
62d63838 | 24 | */ |
1fcf0ca8 RS |
25 | require_once(__DIR__ . '/../config.php'); |
26 | require_once(__DIR__ . '/lib.php'); | |
97873016 | 27 | require_once($CFG->dirroot . '/user/selector/lib.php'); |
558fce9c | 28 | require_once($CFG->dirroot . '/course/lib.php'); |
99d19c13 | 29 | require_once($CFG->libdir . '/filelib.php'); |
62d63838 | 30 | |
aa9671c9 | 31 | $groupid = required_param('group', PARAM_INT); |
4f0c2d00 | 32 | $cancel = optional_param('cancel', false, PARAM_BOOL); |
62d63838 | 33 | |
4f0c2d00 | 34 | $group = $DB->get_record('groups', array('id'=>$groupid), '*', MUST_EXIST); |
74df2951 | 35 | $course = $DB->get_record('course', array('id'=>$group->courseid), '*', MUST_EXIST); |
62d63838 | 36 | |
0ac9d19a | 37 | $PAGE->set_url('/group/members.php', array('group'=>$groupid)); |
d91750bc | 38 | $PAGE->set_pagelayout('admin'); |
849185ce | 39 | |
62d63838 | 40 | require_login($course); |
bf0f06b1 | 41 | $context = context_course::instance($course->id); |
62d63838 | 42 | require_capability('moodle/course:managegroups', $context); |
43 | ||
4f0c2d00 | 44 | $returnurl = $CFG->wwwroot.'/group/index.php?id='.$course->id.'&group='.$group->id; |
62d63838 | 45 | |
4f0c2d00 | 46 | if ($cancel) { |
97873016 | 47 | redirect($returnurl); |
48 | } | |
62d63838 | 49 | |
4f0c2d00 | 50 | $groupmembersselector = new group_members_selector('removeselect', array('groupid' => $groupid, 'courseid' => $course->id)); |
4f0c2d00 | 51 | $potentialmembersselector = new group_non_members_selector('addselect', array('groupid' => $groupid, 'courseid' => $course->id)); |
6f5e0852 | 52 | |
97873016 | 53 | if (optional_param('add', false, PARAM_BOOL) && confirm_sesskey()) { |
54 | $userstoadd = $potentialmembersselector->get_selected_users(); | |
55 | if (!empty($userstoadd)) { | |
56 | foreach ($userstoadd as $user) { | |
57 | if (!groups_add_member($groupid, $user->id)) { | |
62d63838 | 58 | print_error('erroraddremoveuser', 'group', $returnurl); |
59 | } | |
97873016 | 60 | $groupmembersselector->invalidate_selected_users(); |
61 | $potentialmembersselector->invalidate_selected_users(); | |
62d63838 | 62 | } |
62d63838 | 63 | } |
62d63838 | 64 | } |
65 | ||
97873016 | 66 | if (optional_param('remove', false, PARAM_BOOL) && confirm_sesskey()) { |
67 | $userstoremove = $groupmembersselector->get_selected_users(); | |
68 | if (!empty($userstoremove)) { | |
69 | foreach ($userstoremove as $user) { | |
1d1917ae | 70 | if (!groups_remove_member_allowed($groupid, $user->id)) { |
71 | print_error('errorremovenotpermitted', 'group', $returnurl, | |
72 | $user->fullname); | |
73 | } | |
97873016 | 74 | if (!groups_remove_member($groupid, $user->id)) { |
75 | print_error('erroraddremoveuser', 'group', $returnurl); | |
e254aa34 | 76 | } |
97873016 | 77 | $groupmembersselector->invalidate_selected_users(); |
78 | $potentialmembersselector->invalidate_selected_users(); | |
62d63838 | 79 | } |
62d63838 | 80 | } |
81 | } | |
82 | ||
83 | // Print the page and form | |
84 | $strgroups = get_string('groups'); | |
85 | $strparticipants = get_string('participants'); | |
0be6f678 | 86 | $stradduserstogroup = get_string('adduserstogroup', 'group'); |
acf000b0 | 87 | $strusergroupmembership = get_string('usergroupmembership', 'group'); |
62d63838 | 88 | |
89 | $groupname = format_string($group->name); | |
90 | ||
9dec75db | 91 | $PAGE->requires->js('/group/clientlib.js'); |
4f0c2d00 PS |
92 | $PAGE->navbar->add($strparticipants, new moodle_url('/user/index.php', array('id'=>$course->id))); |
93 | $PAGE->navbar->add($strgroups, new moodle_url('/group/index.php', array('id'=>$course->id))); | |
b87573d7 | 94 | $PAGE->navbar->add($stradduserstogroup); |
95 | ||
96 | /// Print header | |
97 | $PAGE->set_title("$course->shortname: $strgroups"); | |
98 | $PAGE->set_heading($course->fullname); | |
b87573d7 | 99 | echo $OUTPUT->header(); |
74feb96a MD |
100 | echo $OUTPUT->heading(get_string('adduserstogroup', 'group').": $groupname", 3); |
101 | ||
1b377fa2 MN |
102 | // Store the rows we want to display in the group info. |
103 | $groupinforow = array(); | |
104 | ||
1b377fa2 | 105 | // Check if there is a description to display. |
1b377fa2 | 106 | if (!empty($group->description)) { |
349b705d AG |
107 | $grouprenderer = $PAGE->get_renderer('core_group'); |
108 | $groupdetailpage = new \core_group\output\group_details($groupid); | |
109 | echo $grouprenderer->group_details($groupdetailpage); | |
74feb96a | 110 | } |
74feb96a MD |
111 | |
112 | /// Print the editing form | |
62d63838 | 113 | ?> |
acf000b0 | 114 | |
62d63838 | 115 | <div id="addmembersform"> |
aa9671c9 | 116 | <form id="assignform" method="post" action="<?php echo $CFG->wwwroot; ?>/group/members.php?group=<?php echo $groupid; ?>"> |
62d63838 | 117 | <div> |
118 | <input type="hidden" name="sesskey" value="<?php p(sesskey()); ?>" /> | |
62d63838 | 119 | |
97873016 | 120 | <table class="generaltable generalbox groupmanagementtable boxaligncenter" summary=""> |
62d63838 | 121 | <tr> |
6cab02ac | 122 | <td id='existingcell'> |
acf000b0 | 123 | <p> |
97873016 | 124 | <label for="removeselect"><?php print_string('groupmembers', 'group'); ?></label> |
acf000b0 | 125 | </p> |
97873016 | 126 | <?php $groupmembersselector->display(); ?> |
127 | </td> | |
128 | <td id='buttonscell'> | |
62d63838 | 129 | <p class="arrow_button"> |
09028f32 AA |
130 | <input class="btn btn-secondary" name="add" id="add" |
131 | type="submit" value="<?php echo $OUTPUT->larrow().' '.get_string('add'); ?>" | |
132 | title="<?php print_string('add'); ?>" /><br /> | |
133 | <input class="btn btn-secondary" name="remove" id="remove" | |
134 | type="submit" value="<?php echo get_string('remove').' '.$OUTPUT->rarrow(); ?>" | |
135 | title="<?php print_string('remove'); ?>" /> | |
62d63838 | 136 | </p> |
137 | </td> | |
6cab02ac | 138 | <td id='potentialcell'> |
acf000b0 | 139 | <p> |
97873016 | 140 | <label for="addselect"><?php print_string('potentialmembs', 'group'); ?></label> |
acf000b0 | 141 | </p> |
97873016 | 142 | <?php $potentialmembersselector->display(); ?> |
143 | </td> | |
bf1ac6d9 AD |
144 | <td> |
145 | <p><?php echo($strusergroupmembership) ?></p> | |
146 | <div id="group-usersummary"></div> | |
147 | </td> | |
62d63838 | 148 | </tr> |
97873016 | 149 | <tr><td colspan="3" id='backcell'> |
09028f32 AA |
150 | <input class="btn btn-secondary" type="submit" name="cancel" |
151 | value="<?php print_string('backtogroups', 'group'); ?>" /> | |
62d63838 | 152 | </td></tr> |
153 | </table> | |
154 | </div> | |
155 | </form> | |
156 | </div> | |
157 | ||
158 | <?php | |
bf1ac6d9 AD |
159 | //outputs the JS array used to display the other groups users are in |
160 | $potentialmembersselector->print_user_summaries($course->id); | |
161 | ||
4c459d6c | 162 | //this must be after calling display() on the selectors so their setup JS executes first |
f19497f2 | 163 | $PAGE->requires->js_init_call('init_add_remove_members_page', null, false, $potentialmembersselector->get_js_module()); |
4c459d6c | 164 | |
653468d4 | 165 | echo $OUTPUT->footer(); |