'emails/redirect' => $this->make_hook('redirect', AUTH_MDP),
'emails/send' => $this->make_hook('send', AUTH_MDP),
'emails/antispam/submit' => $this->make_hook('submit', AUTH_COOKIE),
+ 'emails/test' => $this->make_hook('test', AUTH_COOKIE, 'user', NO_AUTH),
'admin/emails/duplicated' => $this->make_hook('duplicated', AUTH_MDP, 'admin'),
'admin/emails/watch' => $this->make_hook('duplicated', AUTH_MDP, 'admin'),
- 'admin/emails/lost' => $this->make_hook('lost', AUTH_MDP, 'admin'),
+ 'admin/emails/lost' => $this->make_hook('lost', AUTH_MDP, 'admin'),
);
}
"SELECT alias
FROM virtual AS v
INNER JOIN virtual_redirect AS vr USING(vid)
- WHERE (redirect={?} OR redirect={?})
+ WHERE (redirect={?} OR redirect={?})
AND alias LIKE '%@{$globals->mail->alias_dom}'",
$forlife.'@'.$globals->mail->domain, $forlife.'@'.$globals->mail->domain2);
$page->assign('melix', $res->fetchOneCell());
FROM auth_user_quick, virtual
INNER JOIN virtual_redirect USING(vid)
WHERE ( redirect={?} OR redirect= {?} )
- AND alias LIKE '%@{$globals->mail->alias_dom}' AND user_id = {?}",
+ AND alias LIKE '%@{$globals->mail->alias_dom}' AND user_id = {?}",
$forlife.'@'.$globals->mail->domain,
$forlife.'@'.$globals->mail->domain2, S::v('uid'));
list($alias, $visibility) = $res->fetchOneRow();
//vérifier que l'alias n'est pas déja en demande
$it = new ValidateIterator ();
while($req = $it->next()) {
- if ($req->type == "alias" and $req->alias == $alias) {
+ if ($req->type == "alias" and $req->alias == $alias . '@' . $globals->mail->alias_dom) {
$page->trig("L'alias $alias@{$globals->mail->alias_dom} a déja été demandé.
Tu ne peux donc pas l'obtenir pour l'instant.");
return ;
$redirect = new Redirect(S::v('uid'));
+ // FS#703 : $_GET is urldecoded twice, hence
+ // + (the data) => %2B (in the url) => + (first decoding) => ' ' (second decoding)
+ // Since there can be no spaces in emails, we can fix this with :
+ $email = str_replace(' ', '+', $email);
+
if ($action == 'remove' && $email) {
$retour = $redirect->delete_email($email);
$page->assign('retour', $retour);
FROM virtual
INNER JOIN virtual_redirect USING(vid)
WHERE (redirect={?} OR redirect={?})
- AND alias LIKE '%@{$globals->mail->alias_dom}'",
+ AND alias LIKE '%@{$globals->mail->alias_dom}'",
$forlife.'@'.$globals->mail->domain, $forlife.'@'.$globals->mail->domain2);
$melix = $res->fetchOneCell();
if ($melix) {
$page->assign('xorg_title','Polytechnique.org - Envoyer un email');
// action si on recoit un formulaire
- if (Env::v('submit') == 'Envoyer')
- {
+ if (Post::has('save')) {
+ unset($_POST['save']);
+ if (trim(preg_replace('/-- .*/', '', Post::v('contenu'))) != "") {
+ $_POST['to_contacts'] = explode(';', @$_POST['to_contacts']);
+ $_POST['cc_contacts'] = explode(';', @$_POST['cc_contacts']);
+ $data = serialize($_POST);
+ XDB::execute("REPLACE INTO email_send_save
+ VALUES ({?}, {?})", S::i('uid'), $data);
+ }
+ exit;
+ } else if (Env::v('submit') == 'Envoyer') {
function getEmails($aliases)
{
if (!is_array($aliases)) {
}
}
+ XDB::execute("DELETE FROM email_send_save
+ WHERE uid = {?}", S::i('uid'));
+
$to2 = getEmails(Env::v('to_contacts'));
$cc2 = getEmails(Env::v('cc_contacts'));
$txt = str_replace('^M', '', Env::v('contenu'));
}
}
} else {
- PlUpload::clear(S::v('forlife'), 'emails.send');
- $_REQUEST['bcc'] = S::v('bestalias').'@'.$globals->mail->domain;
+ $res = XDB::query("SELECT data
+ FROM email_send_save
+ WHERE uid = {?}", S::i('uid'));
+ if ($res->numRows() == 0) {
+ PlUpload::clear(S::v('forlife'), 'emails.send');
+ $_REQUEST['bcc'] = S::v('bestalias').'@'.$globals->mail->domain;
+ } else {
+ $data = unserialize($res->fetchOneCell());
+ $_REQUEST = array_merge($_REQUEST, $data);
+ }
}
$res = XDB::query(
$page->assign('maxsize', ini_get('post_max_size') . 'o');
}
+ function handler_test(&$page, $forlife = null)
+ {
+ global $globals;
+ if (!S::has_perms() || !$forlife) {
+ $forlife = S::v('bestalias');
+ }
+ $mailer = new PlMailer('emails/mail.test.tpl');
+ $mailer->assign('email', $forlife . '@' . $globals->mail->domain);
+ $iterator = XDB::iterator("SELECT email
+ FROM emails AS e
+ INNER JOIN aliases AS a ON (e.uid = a.id)
+ WHERE FIND_IN_SET('active', e.flags) AND a.alias = {?}",
+ $forlife);
+ $mailer->assign('redirects', $iterator);
+ $res = XDB::query("SELECT FIND_IN_SET('femme', u.flags), prenom
+ FROM auth_user_md5 AS u
+ INNER JOIN aliases AS a ON (a.id = u.user_id)
+ WHERE a.alias = {?}", $forlife);
+ list($sexe, $prenom) = $res->fetchOneRow();
+ $mailer->assign('sexe', $sexe);
+ $mailer->assign('prenom', $prenom);
+ $mailer->send();
+ exit;
+ }
+
function handler_broken(&$page, $warn = null, $email = null)
{
require_once 'emails.inc.php';
A bientôt sur Polytechnique.org !
-L'équipe d'administration <support@polytechnique.org>";
+L'équipe d'administration <support@" . $globals->mail->domain . '>';
$mail = new PlMailer();
- $mail->setFrom('"Polytechnique.org" <support@polytechnique.org>');
- $mail->addTo("$dest@polytechnique.org");
+ $mail->setFrom('"Polytechnique.org" <support@' . $globals->mail->domain . '>');
+ $mail->addTo("$dest@" . $globals->mail->domain);
$mail->setSubject("Une de tes adresse de redirection Polytechnique.org ne marche plus !!");
$mail->setTxtBody($message);
$mail->send();
"SELECT e1.uid, e1.panne != 0 AS panne, count(e2.uid) AS nb_mails,
u.nom, u.prenom, u.promo, a.alias AS forlife
FROM emails as e1
- LEFT JOIN emails as e2 ON(e1.uid = e2.uid
+ LEFT JOIN emails as e2 ON(e1.uid = e2.uid
AND FIND_IN_SET('active', e2.flags)
AND e1.email != e2.email)
INNER JOIN auth_user_md5 as u ON(e1.uid = u.user_id)
$sql = "SELECT w.detection, w.state, w.last, w.description,
a1.alias AS edit, a2.alias AS forlife
FROM emails_watch AS w
- LEFT JOIN aliases AS a1 ON (a1.id = w.uid AND a1.type = 'a_vie')
+ LEFT JOIN aliases AS a1 ON (a1.id = w.uid AND a1.type = 'a_vie')
LEFT JOIN emails AS e ON (w.email = e.email)
LEFT JOIN aliases AS a2 ON (a2.id = e.uid AND a2.type = 'a_vie')
WHERE w.email = {?}
function handler_lost(&$page, $action = 'list', $email = null)
{
$page->changeTpl('emails/lost.tpl');
-
+
$page->assign('lost_emails', XDB::iterator('
SELECT u.user_id, a.alias
FROM auth_user_md5 AS u