{
Platal::assert(!is_null($user), 'User cannot be null.');
- return !$user->checkPerms(User::PERM_MAIL) && strtolower($new_email) != strtolower($user->forlifeEmail());
+ $is_new = !$user->checkPerms(User::PERM_MAIL) && $new_email != strtolower($user->email);
+ if ($new_email && $is_new) {
+ $already = XDB::fetchOneCell('SELECT hruid
+ FROM accounts
+ WHERE email = {?} AND uid != {?}',
+ $new_email, $user->id());
+ if ($already) {
+ Platal::page()->trigError("L'email ne peut pas être utilisé pour ce compte car il correspond déjà au compte : "
+ . $already . ". Si l'utilisateur courant et cette personne ne sont en fait qu'une "
+ . "seul et même personne, ou en cas de problème, contacter : contact@polytechnique.org");
+ return false;
+ }
+ }
+ return $is_new;
}
function format_email_alias($email)
if (Post::t('comment') != $user->comment) {
$to_update['comment'] = Post::blank('comment') ? null : Post::t('comment');
}
- if (require_email_update($user, Post::t('email'))) {
- $to_update['email'] = Post::t('email');
- $listClient->change_user_email($user->forlifeEmail(), Post::t('email'));
- update_alias_user($user->forlifeEmail(), Post::t('email'));
+ $new_email = strtolower(Post::t('email'));
+ if (require_email_update($user, $new_email)) {
+ $to_update['email'] = $new_email;
+ $listClient->change_user_email($user->forlifeEmail(), $new_email);
+ update_alias_user($user->forlifeEmail(), $new_email);
}
}
if (!empty($to_update)) {
$directory_name = mb_strtoupper(Post::t('lastname')) . ' ' . Post::t('firstname');
XDB::query('UPDATE accounts
SET full_name = {?}, directory_name = {?}, display_name = {?},
- firstname = {?}, lastname = {?}, sex = {?}, email = {?}
+ firstname = {?}, lastname = {?}, sex = {?}
WHERE uid = {?}',
$full_name, $directory_name, Post::t('display_name'),
Post::t('firstname'), Post::t('lastname'),
- (Post::t('sex') == 'male') ? 'male' : 'female', Post::t('email'), $user->id());
- if (XDB::affectedRows()) {
- require_once 'emails.inc.php';
- if (require_email_update($user, Post::t('email'))) {
+ (Post::t('sex') == 'male') ? 'male' : 'female', $user->id());
+
+ // Updates email.
+ require_once 'emails.inc.php';
+ $new_email = strtolower(Post::t('email'));
+ if (require_email_update($user, $new_email)) {
+ XDB::query('UPDATE accounts
+ SET email = {?}
+ WHERE uid = {?}',
+ $new_email, $user->id());
$listClient = new MMList(S::user());
- $listClient->change_user_email($user->forlifeEmail(), Post::t('email'));
- update_alias_user($user->forlifeEmail(), Post::t('email'));
- }
- $user = User::getWithUID($user->id());
- S::set('user', $user);
- $page->trigSuccess('Données mises à jour.');
+ $listClient->change_user_email($user->forlifeEmail(), $new_email);
+ update_alias_user($user->forlifeEmail(), $new_email);
}
+ $user = User::getWithUID($user->id());
+ S::set('user', $user);
+ $page->trigSuccess('Données mises à jour.');
}
$page->addJsLink('password.js');
}
XDB::query('UPDATE accounts
SET full_name = {?}, directory_name = {?}, display_name = {?},
- firstname = {?}, lastname = {?}, sex = {?}, email = {?}, type = {?}
+ firstname = {?}, lastname = {?}, sex = {?}, type = {?}
WHERE uid = {?}',
$full_name, $directory_name, Post::t('display_name'), $firstname, $lastname,
- (Post::t('sex') == 'male') ? 'male' : 'female', Post::t('email'),
+ (Post::t('sex') == 'male') ? 'male' : 'female',
(Post::t('type') == 'xnet') ? 'xnet' : 'virtual', $user->id());
- } else if (!$user->perms && Post::has('email') && require_email_update($user, Post::t('email'))) {
+ }
+
+ // Updates email.
+ $new_email = strtolower(Post::t('email'));
+ if (!$user->perms && require_email_update($user, $new_email)) {
XDB::query('UPDATE accounts
SET email = {?}
WHERE uid = {?}',
- Post::t('email'), $user->id());
+ $new_email, $user->id());
$listClient = new MMList(S::user());
- $listClient->change_user_email($user->forlifeEmail(), Post::t('email'));
- update_alias_user($user->forlifeEmail(), Post::t('email'));
+ $listClient->change_user_email($user->forlifeEmail(), $new_email);
+ update_alias_user($user->forlifeEmail(), $new_email);
}
if (XDB::affectedRows()) {
$page->trigSuccess('Données de l\'utilisateur mises à jour.');