X-Git-Url: http://git.polytechnique.org/?a=blobdiff_plain;f=modules%2Femail.php;h=c280f1491807887afd68ea38ed0e230355284ae7;hb=b74ba781e50409b7eed9e0f038e3b10b1d515149;hp=b73581633acb05ab428ccc295df4f927f4aff44b;hpb=1d55fe45fa148bbe6209f82f97d19dcd26455eeb;p=platal.git diff --git a/modules/email.php b/modules/email.php index b735816..c280f14 100644 --- a/modules/email.php +++ b/modules/email.php @@ -79,7 +79,7 @@ class EmailModule extends PLModule "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()); @@ -115,7 +115,7 @@ class EmailModule extends PLModule 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(); @@ -154,7 +154,7 @@ class EmailModule extends PLModule //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 ; @@ -200,6 +200,11 @@ class EmailModule extends PLModule $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); @@ -236,7 +241,7 @@ class EmailModule extends PLModule 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) { @@ -308,8 +313,17 @@ class EmailModule extends PLModule $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)) { @@ -329,6 +343,9 @@ class EmailModule extends PLModule } } + 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')); @@ -369,8 +386,16 @@ class EmailModule extends PLModule } } } 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( @@ -449,7 +474,7 @@ L'équipe d'administration mail->domain . '>'; "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) @@ -541,7 +566,7 @@ L'équipe d'administration mail->domain . '>'; $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 = {?} @@ -568,7 +593,7 @@ L'équipe d'administration mail->domain . '>'; 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