Merge branch 'MDL-62597-master' of https://github.com/HuongNV13/moodle
[moodle.git] / admin / roles / admins.php
1 <?php
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/>.
17 /**
18  * Select site administrators.
19  *
20  * @package    core_role
21  * @copyright  2010 Petr Skoda {@link http://skodak.org}
22  * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
23  */
25 require_once(__DIR__ . '/../../config.php');
26 require_once($CFG->libdir.'/adminlib.php');
28 $confirmadd = optional_param('confirmadd', 0, PARAM_INT);
29 $confirmdel = optional_param('confirmdel', 0, PARAM_INT);
31 $PAGE->set_url('/admin/roles/admins.php');
33 admin_externalpage_setup('admins');
34 if (!is_siteadmin()) {
35     die;
36 }
38 $admisselector = new core_role_admins_existing_selector();
39 $admisselector->set_extra_fields(array('username', 'email'));
41 $potentialadmisselector = new core_role_admins_potential_selector();
42 $potentialadmisselector->set_extra_fields(array('username', 'email'));
44 if (optional_param('add', false, PARAM_BOOL) and confirm_sesskey()) {
45     if ($userstoadd = $potentialadmisselector->get_selected_users()) {
46         $user = reset($userstoadd);
47         $username = fullname($user) . " ($user->username, $user->email)";
48         echo $OUTPUT->header();
49         $yesurl = new moodle_url('/admin/roles/admins.php', array('confirmadd'=>$user->id, 'sesskey'=>sesskey()));
50         echo $OUTPUT->confirm(get_string('confirmaddadmin', 'core_role', $username), $yesurl, $PAGE->url);
51         echo $OUTPUT->footer();
52         die;
53     }
55 } else if (optional_param('remove', false, PARAM_BOOL) and confirm_sesskey()) {
56     if ($userstoremove = $admisselector->get_selected_users()) {
57         $user = reset($userstoremove);
58         if ($USER->id == $user->id) {
59             // Can not remove self.
60         } else {
61             $username = fullname($user) . " ($user->username, $user->email)";
62             echo $OUTPUT->header();
63             $yesurl = new moodle_url('/admin/roles/admins.php', array('confirmdel'=>$user->id, 'sesskey'=>sesskey()));
64             echo $OUTPUT->confirm(get_string('confirmdeladmin', 'core_role', $username), $yesurl, $PAGE->url);
65             echo $OUTPUT->footer();
66             die;
67         }
68     }
70 } else if (optional_param('main', false, PARAM_BOOL) and confirm_sesskey()) {
71     if ($newmain = $admisselector->get_selected_users()) {
72         $newmain = reset($newmain);
73         $newmain = $newmain->id;
74         $admins = array();
75         foreach (explode(',', $CFG->siteadmins) as $admin) {
76             $admin = (int)$admin;
77             if ($admin) {
78                 $admins[$admin] = $admin;
79             }
80         }
82         if (isset($admins[$newmain])) {
83             $logstringold = implode(', ', $admins);
85             unset($admins[$newmain]);
86             array_unshift($admins, $newmain);
88             $logstringnew = implode(', ', $admins);
90             set_config('siteadmins', implode(',', $admins));
91             add_to_config_log('siteadmins', $logstringold, $logstringnew, null);
93             redirect($PAGE->url);
94         }
95     }
97 } else if ($confirmadd and confirm_sesskey()) {
98     $admins = array();
99     foreach (explode(',', $CFG->siteadmins) as $admin) {
100         $admin = (int)$admin;
101         if ($admin) {
102             $admins[$admin] = $admin;
103         }
104     }
106     $logstringold = implode(', ', $admins);
108     $admins[$confirmadd] = $confirmadd;
110     $logstringnew = implode(', ', $admins);
112     set_config('siteadmins', implode(',', $admins));
113     add_to_config_log('siteadmins', $logstringold, $logstringnew, 'core');
115     redirect($PAGE->url);
117 } else if ($confirmdel and confirm_sesskey() and $confirmdel != $USER->id) {
118     $admins = array();
119     foreach (explode(',', $CFG->siteadmins) as $admin) {
120         $admin = (int)$admin;
121         if ($admin) {
122             $admins[$admin] = $admin;
123         }
124     }
126     $logstringold = implode(', ', $admins);
128     unset($admins[$confirmdel]);
130     $logstringnew = implode(', ', $admins);
132     set_config('siteadmins', implode(',', $admins));
133     add_to_config_log('siteadmins', $logstringold, $logstringnew, 'core');
135     redirect($PAGE->url);
138 // Print header.
139 echo $OUTPUT->header();
140 ?>
142 <div id="addadmisform">
143     <h3 class="main"><?php print_string('manageadmins', 'core_role'); ?></h3>
145     <form id="assignform" method="post" action="<?php echo $PAGE->url ?>">
146     <div>
147     <input type="hidden" name="sesskey" value="<?php p(sesskey()); ?>" />
149     <table class="generaltable generalbox groupmanagementtable boxaligncenter" summary="">
150     <tr>
151       <td id='existingcell'>
152           <p>
153             <label for="removeselect"><?php print_string('existingadmins', 'core_role'); ?></label>
154           </p>
155           <?php $admisselector->display(); ?>
156           </td>
157       <td id="buttonscell">
158         <p class="arrow_button">
159             <input name="add" id="add" type="submit" value="<?php echo $OUTPUT->larrow().'&nbsp;'.get_string('add'); ?>"
160                    title="<?php print_string('add'); ?>" class="btn btn-secondary"/><br />
161             <input name="remove" id="remove" type="submit" value="<?php echo get_string('remove').'&nbsp;'.$OUTPUT->rarrow(); ?>"
162                    title="<?php print_string('remove'); ?>" class="btn btn-secondary"/><br />
163             <input name="main" id="main" type="submit" value="<?php echo get_string('mainadminset', 'core_role'); ?>"
164                    title="<?php print_string('mainadminset', 'core_role'); ?>" class="btn btn-secondary"/>
165         </p>
166       </td>
167       <td id="potentialcell">
168           <p>
169             <label for="addselect"><?php print_string('users'); ?></label>
170           </p>
171           <?php $potentialadmisselector->display(); ?>
172       </td>
173     </tr>
174     </table>
175     </div>
176     </form>
177 </div>
179 <?php
181 echo $OUTPUT->footer();