Merge branch 'w39_MDL-41437_m26_mia' of https://github.com/skodak/moodle
[moodle.git] / admin / auth.php
1 <?php
3 /**
4  * Allows admin to edit all auth plugin settings.
5  *
6  * JH: copied and Hax0rd from admin/enrol.php and admin/filters.php
7  *
8  */
10 require_once('../config.php');
11 require_once($CFG->libdir.'/adminlib.php');
12 require_once($CFG->libdir.'/tablelib.php');
13 require_once($CFG->libdir.'/pluginlib.php');
15 require_login();
16 require_capability('moodle/site:config', context_system::instance());
18 $returnurl = new moodle_url('/admin/settings.php', array('section'=>'manageauths'));
20 $PAGE->set_url($returnurl);
22 $action = optional_param('action', '', PARAM_ALPHANUMEXT);
23 $auth   = optional_param('auth', '', PARAM_PLUGIN);
25 get_enabled_auth_plugins(true); // fix the list of enabled auths
26 if (empty($CFG->auth)) {
27     $authsenabled = array();
28 } else {
29     $authsenabled = explode(',', $CFG->auth);
30 }
32 if (!empty($auth) and !exists_auth_plugin($auth)) {
33     print_error('pluginnotinstalled', 'auth', $returnurl, $auth);
34 }
36 ////////////////////////////////////////////////////////////////////////////////
37 // process actions
39 if (!confirm_sesskey()) {
40     redirect($returnurl);
41 }
43 switch ($action) {
44     case 'disable':
45         // remove from enabled list
46         $key = array_search($auth, $authsenabled);
47         if ($key !== false) {
48             unset($authsenabled[$key]);
49             set_config('auth', implode(',', $authsenabled));
50         }
52         if ($auth == $CFG->registerauth) {
53             set_config('registerauth', '');
54         }
55         \core\session\manager::gc(); // Remove stale sessions.
56         plugin_manager::reset_caches();
57         break;
59     case 'enable':
60         // add to enabled list
61         if (!in_array($auth, $authsenabled)) {
62             $authsenabled[] = $auth;
63             $authsenabled = array_unique($authsenabled);
64             set_config('auth', implode(',', $authsenabled));
65         }
66         \core\session\manager::gc(); // Remove stale sessions.
67         plugin_manager::reset_caches();
68         break;
70     case 'down':
71         $key = array_search($auth, $authsenabled);
72         // check auth plugin is valid
73         if ($key === false) {
74             print_error('pluginnotenabled', 'auth', $returnurl, $auth);
75         }
76         // move down the list
77         if ($key < (count($authsenabled) - 1)) {
78             $fsave = $authsenabled[$key];
79             $authsenabled[$key] = $authsenabled[$key + 1];
80             $authsenabled[$key + 1] = $fsave;
81             set_config('auth', implode(',', $authsenabled));
82         }
83         break;
85     case 'up':
86         $key = array_search($auth, $authsenabled);
87         // check auth is valid
88         if ($key === false) {
89             print_error('pluginnotenabled', 'auth', $returnurl, $auth);
90         }
91         // move up the list
92         if ($key >= 1) {
93             $fsave = $authsenabled[$key];
94             $authsenabled[$key] = $authsenabled[$key - 1];
95             $authsenabled[$key - 1] = $fsave;
96             set_config('auth', implode(',', $authsenabled));
97         }
98         break;
100     default:
101         break;
104 redirect($returnurl);