<?php
/***************************************************************************
- * Copyright (C) 2003-2011 Polytechnique.org *
+ * Copyright (C) 2003-2014 Polytechnique.org *
* http://opensource.polytechnique.org/ *
* *
* This program is free software; you can redistribute it and/or modify *
{
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)
// Activates the email address as a redirection.
public function activate()
{
- if ($this->inactive) {
+ if (!$this->active) {
if (in_array($this->type, self::get_allowed_storages($this->user))) {
self::activate_storage($this->user, $this->type, $this->action);
} else {
$this->user->id(), $this->email);
}
S::logger()->log('email_on', $this->email . ($this->user->id() != S::v('uid') ? "(admin on {$this->user->login()})" : ''));
+ $this->disabled = false;
+ $this->broken = false;
$this->inactive = false;
$this->active = true;
}
XDB::execute('REPLACE INTO email_redirect_account (uid, redirect, flags, action)
VALUES ({?}, {?}, \'active\', {?})',
$this->user->id(), $email, $filter);
+ // Replace this email by forlife email, if present in aliases and MLs.
+ $listClient = new MMList(S::user());
+ $listClient->change_user_email($email, $this->user->forlifeEmail());
+ update_alias_user($email, $this->user->forlifeEmail());
if ($logger = S::v('log', null)) { // may be absent --> step4.php
S::logger()->log('email_add', $email . ($this->user->id() != S::v('uid') ? " (admin on {$this->user->login()})" : ""));
}
}
}
-// vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8:
+// vim:set et sw=4 sts=4 sws=4 foldmethod=marker fenc=utf-8:
?>