if ($this->rewrite == $rew) {
return;
}
+ if (!$rew || !isvalid_email($rew)) {
+ $rew = '';
+ }
XDB::execute('UPDATE emails SET rewrite={?} WHERE uid={?} AND email={?}', $rew, $uid, $this->email);
$this->rewrite = $rew;
return;
unset($this->emails[$i]);
}
}
+ check_redirect($this);
return SUCCESS;
}
$this->emails[] = new Email(array($email, 'active', '', '0000-00-00', '0000-00-00', 0));
// security stuff
- check_email($email, "Ajout d'une adresse surveillée aux redirections de " . $this->uid);
+ check_email($email, "Ajout d'une adresse surveillée aux redirections de " . $this->uid);
+ check_redirect($this);
return SUCCESS;
}
}
$this->emails[$i]->rewrite($emails_rewrite[$mail->email], $this->uid);
}
+ check_redirect($this);
}
- function modify_one_email($email, $activate) {
+ function modify_one_email($email, $activate)
+ {
$allinactive = true;
$thisone = false;
foreach ($this->emails as $i=>$mail) {
if ($thisone === false) {
return ERROR_INVALID_EMAIL;
}
- if ($allinactive || $activate)
+ if ($allinactive || $activate) {
$this->emails[$thisone]->activate($this->uid);
- else
+ } else {
$this->emails[$thisone]->deactivate($this->uid);
+ }
+ check_redirect($this);
if ($allinactive && !$activate) {
return ERROR_INACTIVE_REDIRECTION;
} else {
foreach ($this->emails as $i=>$mail) {
if ($mail->email == $email) {
$this->emails[$i]->rewrite($redirect, $this->uid);
- return;
+ check_redirect($this);
+ return;
}
}
}
// }}}
+ // {{{ function get_broken_mx()
+
+ function get_broken_mx()
+ {
+ $res = XDB::query("SELECT host, text
+ FROM mx_watch
+ WHERE state != 'ok'");
+ if (!$res->numRows()) {
+ return array();
+ }
+ $mxs = $res->fetchAllAssoc();
+ $mails = array();
+ foreach ($this->emails as &$mail) {
+ if ($mail->active) {
+ list(,$domain) = explode('@', $mail->email);
+ getmxrr($domain, $lcl_mxs);
+ if (empty($lcl_mxs)) {
+ $lcl_mxs = array($domain);
+ }
+ $broken = false;
+ foreach ($mxs as &$mx) {
+ foreach ($lcl_mxs as $lcl) {
+ if (fnmatch($mx['host'], $lcl)) {
+ $broken = $mx['text'];
+ break;
+ }
+ }
+ if ($broken) {
+ $mails[] = array('mail' => $mail->email, 'text' => $broken);
+ }
+ }
+ }
+ }
+ return $mails;
+ }
+
+ // }}}
}
// }}}
-// vim:set et sw=4 sts=4 sws=4 foldmethod=marker:
+// vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8:
?>