. /** * Lets you site administrators * * @package core * @subpackage role * @copyright 2010 Petr Skoda (skodak) http://skodak.org * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later */ require_once(dirname(__FILE__) . '/../../config.php'); require_once($CFG->dirroot . '/' . $CFG->admin . '/roles/lib.php'); $confirmadd = optional_param('confirmadd', 0, PARAM_INT); $confirmdel = optional_param('confirmdel', 0, PARAM_INT); $PAGE->set_url('/admin/roles/admins.php'); admin_externalpage_setup('admins'); if (!is_siteadmin()) { die; } $admisselector = new admins_existing_selector(); $admisselector->set_extra_fields(array('username', 'email')); $potentialadmisselector = new admins_potential_selector(); $potentialadmisselector->set_extra_fields(array('username', 'email')); if (optional_param('add', false, PARAM_BOOL) and confirm_sesskey()) { if ($userstoadd = $potentialadmisselector->get_selected_users()) { $user = reset($userstoadd); $username = fullname($user) . " ($user->username, $user->email)"; echo $OUTPUT->header(); echo $OUTPUT->confirm(get_string('confirmaddadmin', 'role', $username), new moodle_url('/admin/roles/admins.php', array('confirmadd'=>$user->id, 'sesskey'=>sesskey())), $PAGE->url); echo $OUTPUT->footer(); die; } } else if (optional_param('remove', false, PARAM_BOOL) and confirm_sesskey()) { if ($userstoremove = $admisselector->get_selected_users()) { $user = reset($userstoremove); if ($USER->id == $user->id) { //can not remove self } else { $username = fullname($user) . " ($user->username, $user->email)"; echo $OUTPUT->header(); echo $OUTPUT->confirm(get_string('confirmdeladmin', 'role', $username), new moodle_url('/admin/roles/admins.php', array('confirmdel'=>$user->id, 'sesskey'=>sesskey())), $PAGE->url); echo $OUTPUT->footer(); die; } } } else if (optional_param('main', false, PARAM_BOOL) and confirm_sesskey()) { if ($newmain = $admisselector->get_selected_users()) { $newmain = reset($newmain); $newmain = $newmain->id; $admins = array(); foreach(explode(',', $CFG->siteadmins) as $admin) { $admin = (int)$admin; if ($admin) { $admins[$admin] = $admin; } } if (isset($admins[$newmain])) { unset($admins[$newmain]); array_unshift($admins, $newmain); set_config('siteadmins', implode(',', $admins)); redirect($PAGE->url); } } } else if ($confirmadd and confirm_sesskey()) { $admins = array(); foreach(explode(',', $CFG->siteadmins) as $admin) { $admin = (int)$admin; if ($admin) { $admins[$admin] = $admin; } } $admins[$confirmadd] = $confirmadd; set_config('siteadmins', implode(',', $admins)); redirect($PAGE->url); } else if ($confirmdel and confirm_sesskey() and $confirmdel != $USER->id) { $admins = array(); foreach(explode(',', $CFG->siteadmins) as $admin) { $admin = (int)$admin; if ($admin) { $admins[$admin] = $admin; } } unset($admins[$confirmdel]); set_config('siteadmins', implode(',', $admins)); redirect($PAGE->url); } /// Print header echo $OUTPUT->header(); ?>