echo "\n";
}
+/*
+ * Updates imap settings for users with no active redirection. Their emails
+ * must go to imap and bounce.
+ */
+XDB::execute("UPDATE email_redirect_account AS r
+ LEFT JOIN email_redirect_account AS a ON (r.uid = a.uid AND a.flags = 'active' AND a.type != 'imap')
+ SET r.action = 'imap_and_bounce'
+ WHERE r.type = 'imap' AND a.redirect IS NULL");
+
+
// vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8:
?>
}
}
check_redirect($this);
+ $this->update_imap();
return SUCCESS;
}
// security stuff
check_email($email, "Ajout d'une adresse surveillée aux redirections de " . $this->user->login());
check_redirect($this);
+ $this->update_imap();
return SUCCESS;
}
$email->set_rewrite($emails_rewrite[$email->email]);
}
check_redirect($this);
+ $this->update_imap();
return SUCCESS;
}
$this->emails[$thisone]->deactivate();
}
check_redirect($this);
+ $this->update_imap();
if ($allinactive && !$activate) {
return ERROR_INACTIVE_REDIRECTION;
}
if ($mail->email == $email) {
$mail->set_rewrite($redirect);
check_redirect($this);
+ $this->update_imap();
return;
}
}
foreach ($this->emails as &$mail) {
if ($mail->email == $email) {
check_redirect($this);
+ $this->update_imap();
return $mail->clean_errors();
}
}
}
}
check_redirect($this);
+ $this->update_imap();
}
public function enable()
}
check_redirect($this);
}
+ $this->update_imap();
}
public function get_broken_mx()
{
return $this->user->id();
}
+
+ private function update_imap()
+ {
+ // Imaps must bounce if and only if the user has no active redirection.
+ if (!$this->other_active('')) {
+ XDB::execute('UPDATE email_redirect_account
+ SET action = \'imap_and_bounce\'
+ WHERE type = \'imap\' AND uid = {?}',
+ $this->user->id());
+ } else {
+ XDB::execute('UPDATE email_redirect_account
+ SET action = \'let_spams\'
+ WHERE type = \'imap\' AND uid = {?}',
+ $this->user->id());
+ }
+ }
}
// vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8: