[ Index ] |
PHP Cross Reference of Unnamed Project |
[Summary view] [Print] [Text view]
1 <?php 2 /** 3 * Edit configuration for an individual auth plugin 4 */ 5 6 require_once '../config.php'; 7 require_once $CFG->libdir.'/adminlib.php'; 8 9 $auth = required_param('auth', PARAM_PLUGIN); 10 $PAGE->set_pagetype('admin-auth-' . $auth); 11 12 admin_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 20 if ($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 60 echo $OUTPUT->header(); 61 62 // choose an authentication method 63 echo "<form id=\"authmenu\" method=\"post\" action=\"auth_config.php\">\n"; 64 echo "<div>\n"; 65 echo "<input type=\"hidden\" name=\"sesskey\" value=\"".sesskey()."\" />\n"; 66 echo "<input type=\"hidden\" name=\"auth\" value=\"".$auth."\" />\n"; 67 // HACK to prevent browsers from automatically inserting the user's password into the wrong fields. 68 echo prevent_form_autofill_password(); 69 70 // auth plugin description 71 echo $OUTPUT->box_start(); 72 echo $OUTPUT->heading($authtitle); 73 echo $OUTPUT->box_start('informationbox'); 74 echo $authdescription; 75 echo $OUTPUT->box_end(); 76 echo "<hr />\n"; 77 $authplugin->config_form($frm, $err, $user_fields); 78 echo $OUTPUT->box_end(); 79 echo '<p style="text-align: center"><input type="submit" value="' . get_string("savechanges") . "\" /></p>\n"; 80 echo "</div>\n"; 81 echo "</form>\n"; 82 83 $PAGE->requires->string_for_js('unmaskpassword', 'core_form'); 84 $PAGE->requires->yui_module('moodle-auth-passwordunmask', 'M.auth.passwordunmask'); 85 86 echo $OUTPUT->footer(); 87 exit; 88 89 /// Functions ///////////////////////////////////////////////////////////////// 90 91 // Good enough for most auth plugins 92 // but some may want a custom one if they are offering 93 // other options 94 // Note: lockconfig_ fields have special handling. 95 function print_auth_lock_options($auth, $user_fields, $helptext, $retrieveopts, $updateopts, $customfields = array()) { 96 global $DB, $OUTPUT; 97 echo '<tr><td colspan="3">'; 98 if ($retrieveopts) { 99 echo $OUTPUT->heading(get_string('auth_data_mapping', 'auth')); 100 } else { 101 echo $OUTPUT->heading(get_string('auth_fieldlocks', 'auth')); 102 } 103 echo '</td></tr>'; 104 105 $lockoptions = array ('unlocked' => get_string('unlocked', 'auth'), 106 'unlockedifempty' => get_string('unlockedifempty', 'auth'), 107 'locked' => get_string('locked', 'auth')); 108 $updatelocaloptions = array('oncreate' => get_string('update_oncreate', 'auth'), 109 'onlogin' => get_string('update_onlogin', 'auth')); 110 $updateextoptions = array('0' => get_string('update_never', 'auth'), 111 '1' => get_string('update_onupdate', 'auth')); 112 113 $pluginconfig = get_config("auth/$auth"); 114 115 // Helptext is on a field with rowspan. 116 if (empty($helptext)) { 117 $helptext = ' '; 118 } 119 120 // If we have custom fields then merge them with user fields. 121 if (!empty($customfields)) { 122 $user_fields = array_merge($user_fields, $customfields); 123 } 124 125 if (!empty($customfields)) { 126 $customfieldname = $DB->get_records('user_info_field', null, '', 'shortname, name'); 127 } 128 foreach ($user_fields as $field) { 129 // Define some vars we'll work with. 130 if (!isset($pluginconfig->{"field_map_$field"})) { 131 $pluginconfig->{"field_map_$field"} = ''; 132 } 133 if (!isset($pluginconfig->{"field_updatelocal_$field"})) { 134 $pluginconfig->{"field_updatelocal_$field"} = ''; 135 } 136 if (!isset($pluginconfig->{"field_updateremote_$field"})) { 137 $pluginconfig->{"field_updateremote_$field"} = ''; 138 } 139 if (!isset($pluginconfig->{"field_lock_$field"})) { 140 $pluginconfig->{"field_lock_$field"} = ''; 141 } 142 143 // Define the fieldname we display to the user. 144 $fieldname = $field; 145 if ($fieldname === 'lang') { 146 $fieldname = get_string('language'); 147 } elseif (!empty($customfields) && in_array($field, $customfields)) { 148 // If custom field then pick name from database. 149 $fieldshortname = str_replace('profile_field_', '', $fieldname); 150 $fieldname = $customfieldname[$fieldshortname]->name; 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> '; 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> '; 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> '; 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 }
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
Generated: Thu Aug 11 10:00:09 2016 | Cross-referenced by PHPXref 0.7.1 |