- $newemail = $newuser->forlifeEmail();
- if (!$newemail && $this->forlifeEmail()) {
- XDB::execute("UPDATE accounts
- SET email = {?}
- WHERE uid = {?} AND email IS NULL",
- $this->forlifeEmail(), $newuser->id());
- $newemail = $this->forlifeEmail();
- }
-
- // change email used in aliases and mailing lists
- if ($this->forlifeEmail() != $newemail && $this->forlifeEmail()) {
- // virtual_redirect (email aliases)
- XDB::execute("DELETE v1
- FROM virtual_redirect AS v1, virtual_redirect AS v2
- WHERE v1.vid = v2.vid AND v1.redirect = {?} AND v2.redirect = {?}",
- $this->forlifeEmail(), $newemail);
- XDB::execute("UPDATE virtual_redirect
- SET redirect = {?}
- WHERE redirect = {?}",
- $newemail, $this->forlifeEmail());
-
- // require_once 'mmlist.php';
-
- // group mailing lists
- $group_domains = XDB::fetchColumn("SELECT g.mail_domain
- FROM groups AS g
- INNER JOIN group_members AS gm ON(g.id = gm.asso_id)
- WHERE g.mail_domain != '' AND gm.uid = {?}",
- $this->id());
- foreach ($group_domains as $mail_domain) {
- $mmlist = new MMList($this, $mail_domain);
- $mmlist->replace_email_in_all($this->forlifeEmail(), $newmail);
+ if ($this->forlifeEmail()) {
+ // If the new user is not registered and does not have already an email address,
+ // we need to give him the old user's email address if he has any.
+ if (!$newuser->perms) {
+ XDB::execute('UPDATE accounts
+ SET email = {?}
+ WHERE uid = {?} AND email IS NULL',
+ $this->forlifeEmail(), $newuser->id());