3 require_once('../config.php');
4 require_once($CFG->libdir
.'/adminlib.php');
5 require_once($CFG->dirroot
.'/user/editlib.php');
7 $key = required_param('key', PARAM_ALPHANUM
);
8 $id = required_param('id', PARAM_INT
);
10 if (!$user = get_record('user', 'id', $id)) {
11 error("Unknown user ID");
14 $preferences = get_user_preferences(null, null, $user->id
);
16 $a->fullname
= fullname($user, true);
17 $stremailupdate = get_string('auth_emailupdate', 'auth', $a);
18 print_header(format_string($SITE->fullname
) . ": $stremailupdate", format_string($SITE->fullname
) . ": $stremailupdate");
20 if (empty($preferences['newemailattemptsleft'])) {
21 redirect("$CFG->wwwroot/user/view.php?id=$user->id");
23 } elseif ($preferences['newemailattemptsleft'] < 1) {
24 cancel_email_update($user->id
);
25 $stroutofattempts = get_string('auth_outofnewemailupdateattempts', 'auth');
26 print_box($stroutofattempts, 'center');
28 } elseif ($key == $preferences['newemailkey']) {
29 $olduser = clone($user);
30 cancel_email_update($user->id
);
31 $user->email
= $preferences['newemail'];
33 // Detect duplicate before saving
34 if (get_record('user', 'email', addslashes($user->email
))) {
35 $stremailnowexists = get_string('auth_emailnowexists', 'auth');
36 print_box($stremailnowexists, 'center');
37 print_continue("$CFG->wwwroot/user/view.php?id=$user->id");
40 if (!set_field('user', 'email', addslashes($user->email
), 'id', $user->id
)) {
41 error('Error updating user record');
44 $authplugin = get_auth_plugin($user->auth
);
45 $authplugin->user_update($olduser, $user);
46 events_trigger('user_updated', $user);
47 $a->email
= $user->email
;
48 $stremailupdatesuccess = get_string('auth_emailupdatesuccess', 'auth', $a);
49 print_box($stremailupdatesuccess, 'center');
50 print_continue("$CFG->wwwroot/user/view.php?id=$user->id");
55 $preferences['newemailattemptsleft']--;
56 set_user_preference('newemailattemptsleft', $preferences['newemailattemptsleft'], $user->id
);
57 $strinvalidkey = get_string('auth_invalidnewemailkey', 'auth');
58 print_box($strinvalidkey, 'center');