source: moodle/trunk/fuentes/admin/auth_config.php @ 136

Last change on this file since 136 was 136, checked in by mabarracus, 3 years ago

Ported code to xenial

File size: 7.5 KB
Line 
1<?php
2/**
3 * Edit configuration for an individual auth plugin
4 */
5
6require_once '../config.php';
7require_once $CFG->libdir.'/adminlib.php';
8
9$auth = required_param('auth', PARAM_PLUGIN);
10$PAGE->set_pagetype('admin-auth-' . $auth);
11
12admin_externalpage_setup('authsetting'.$auth);
13
14$authplugin = get_auth_plugin($auth);
15$err = array();
16
17$returnurl = "$CFG->wwwroot/$CFG->admin/settings.php?section=manageauths";
18
19// save configuration changes
20if ($frm = data_submitted() and confirm_sesskey()) {
21
22    $authplugin->validate_form($frm, $err);
23
24    if (count($err) == 0) {
25
26        // save plugin config
27        if ($authplugin->process_config($frm)) {
28
29            // save field lock configuration
30            foreach ($frm as $name => $value) {
31                if (preg_match('/^lockconfig_(.+?)$/', $name, $matches)) {
32                    $plugin = "auth/$auth";
33                    $name   = $matches[1];
34                    set_config($name, $value, $plugin);
35                }
36            }
37            redirect($returnurl);
38            exit;
39        }
40    } else {
41        foreach ($err as $key => $value) {
42            $focus = "form.$key";
43        }
44    }
45} else {
46    $frmlegacystyle = get_config('auth/'.$auth);
47    $frmnewstyle    = get_config('auth_'.$auth);
48    $frm = (object)array_merge((array)$frmlegacystyle, (array)$frmnewstyle);
49}
50
51$user_fields = $authplugin->userfields;
52//$user_fields = array("firstname", "lastname", "email", "phone1", "phone2", "institution", "department", "address", "city", "country", "description", "idnumber", "lang");
53
54/// Get the auth title (from core or own auth lang files)
55    $authtitle = $authplugin->get_title();
56/// Get the auth descriptions (from core or own auth lang files)
57    $authdescription = $authplugin->get_description();
58
59// output configuration form
60echo $OUTPUT->header();
61
62// choose an authentication method
63echo "<form id=\"authmenu\" method=\"post\" action=\"auth_config.php\">\n";
64echo "<div>\n";
65echo "<input type=\"hidden\" name=\"sesskey\" value=\"".sesskey()."\" />\n";
66echo "<input type=\"hidden\" name=\"auth\" value=\"".$auth."\" />\n";
67
68// auth plugin description
69echo $OUTPUT->box_start();
70echo $OUTPUT->heading($authtitle);
71echo $OUTPUT->box_start('informationbox');
72echo $authdescription;
73echo $OUTPUT->box_end();
74echo "<hr />\n";
75$authplugin->config_form($frm, $err, $user_fields);
76echo $OUTPUT->box_end();
77echo '<p style="text-align: center"><input type="submit" value="' . get_string("savechanges") . "\" /></p>\n";
78echo "</div>\n";
79echo "</form>\n";
80
81$PAGE->requires->string_for_js('unmaskpassword', 'core_form');
82$PAGE->requires->yui_module('moodle-auth-passwordunmask', 'M.auth.passwordunmask');
83
84echo $OUTPUT->footer();
85exit;
86
87/// Functions /////////////////////////////////////////////////////////////////
88
89// Good enough for most auth plugins
90// but some may want a custom one if they are offering
91// other options
92// Note: lockconfig_ fields have special handling.
93function print_auth_lock_options($auth, $user_fields, $helptext, $retrieveopts, $updateopts, $customfields = array()) {
94    global $DB, $OUTPUT;
95    echo '<tr><td colspan="3">';
96    if ($retrieveopts) {
97        echo $OUTPUT->heading(get_string('auth_data_mapping', 'auth'));
98    } else {
99        echo $OUTPUT->heading(get_string('auth_fieldlocks', 'auth'));
100    }
101    echo '</td></tr>';
102
103    $lockoptions = array ('unlocked'        => get_string('unlocked', 'auth'),
104                          'unlockedifempty' => get_string('unlockedifempty', 'auth'),
105                          'locked'          => get_string('locked', 'auth'));
106    $updatelocaloptions = array('oncreate'  => get_string('update_oncreate', 'auth'),
107                                'onlogin'   => get_string('update_onlogin', 'auth'));
108    $updateextoptions = array('0'  => get_string('update_never', 'auth'),
109                              '1'   => get_string('update_onupdate', 'auth'));
110
111    $pluginconfig = get_config("auth/$auth");
112
113    // Helptext is on a field with rowspan.
114    if (empty($helptext)) {
115        $helptext = '&nbsp;';
116    }
117
118    // If we have custom fields then merge them with user fields.
119    if (!empty($customfields)) {
120        $user_fields = array_merge($user_fields, $customfields);
121    }
122
123    if (!empty($customfields)) {
124        $customfieldname = $DB->get_records('user_info_field', null, '', 'shortname, name');
125    }
126    foreach ($user_fields as $field) {
127        // Define some vars we'll work with.
128        if (!isset($pluginconfig->{"field_map_$field"})) {
129            $pluginconfig->{"field_map_$field"} = '';
130        }
131        if (!isset($pluginconfig->{"field_updatelocal_$field"})) {
132            $pluginconfig->{"field_updatelocal_$field"} = '';
133        }
134        if (!isset($pluginconfig->{"field_updateremote_$field"})) {
135            $pluginconfig->{"field_updateremote_$field"} = '';
136        }
137        if (!isset($pluginconfig->{"field_lock_$field"})) {
138            $pluginconfig->{"field_lock_$field"} = '';
139        }
140
141        // Define the fieldname we display to the  user.
142        $fieldname = $field;
143        if ($fieldname === 'lang') {
144            $fieldname = get_string('language');
145        } elseif (!empty($customfields) && in_array($field, $customfields)) {
146            // If custom field then pick name from database.
147            $fieldshortname = str_replace('profile_field_', '', $fieldname);
148            $fieldname = $customfieldname[$fieldshortname]->name;
149        } elseif (preg_match('/^(.+?)(\d+)$/', $fieldname, $matches)) {
150            $fieldname =  get_string($matches[1]) . ' ' . $matches[2];
151        } elseif ($fieldname == 'url') {
152            $fieldname = get_string('webpage');
153        } else {
154            $fieldname = get_string($fieldname);
155        }
156        if ($retrieveopts) {
157            $varname = 'field_map_' . $field;
158
159            echo '<tr valign="top"><td align="right">';
160            echo '<label for="lockconfig_'.$varname.'">'.$fieldname.'</label>';
161            echo '</td><td>';
162
163            echo "<input id=\"lockconfig_{$varname}\" name=\"lockconfig_{$varname}\" type=\"text\" size=\"30\" value=\"{$pluginconfig->$varname}\" />";
164            echo '<div style="text-align: right">';
165            echo '<label for="menulockconfig_field_updatelocal_'.$field.'">'.get_string('auth_updatelocal', 'auth') . '</label>&nbsp;';
166            echo html_writer::select($updatelocaloptions, "lockconfig_field_updatelocal_{$field}", $pluginconfig->{"field_updatelocal_$field"}, false);
167            echo '<br />';
168            if ($updateopts) {
169                echo '<label for="menulockconfig_field_updateremote_'.$field.'">'.get_string('auth_updateremote', 'auth') . '</label>&nbsp;';
170                echo html_writer::select($updateextoptions, "lockconfig_field_updateremote_{$field}", $pluginconfig->{"field_updateremote_$field"}, false);
171                echo '<br />';
172            }
173            echo '<label for="menulockconfig_field_lock_'.$field.'">'.get_string('auth_fieldlock', 'auth') . '</label>&nbsp;';
174            echo html_writer::select($lockoptions, "lockconfig_field_lock_{$field}", $pluginconfig->{"field_lock_$field"}, false);
175            echo '</div>';
176        } else {
177            echo '<tr valign="top"><td align="right">';
178            echo '<label for="menulockconfig_field_lock_'.$field.'">'.$fieldname.'</label>';
179            echo '</td><td>';
180            echo html_writer::select($lockoptions, "lockconfig_field_lock_{$field}", $pluginconfig->{"field_lock_$field"}, false);
181        }
182        echo '</td>';
183        if (!empty($helptext)) {
184            echo '<td rowspan="' . count($user_fields) . '">' . $helptext . '</td>';
185            $helptext = '';
186        }
187        echo '</tr>';
188    }
189}
Note: See TracBrowser for help on using the repository browser.