X-Git-Url: http://git.polytechnique.org/?a=blobdiff_plain;f=modules%2Femail.php;h=52f2aef01c9c1fc561d258bbadf2b4e340dec45e;hb=b71f7275d0abe31614da74e05524ac08033bbe18;hp=96485343bec3731aff1f428e6c77e3d8e68db48c;hpb=1f07f6c2992974b03505467c394941cc573cce8d;p=platal.git diff --git a/modules/email.php b/modules/email.php index 9648534..52f2aef 100644 --- a/modules/email.php +++ b/modules/email.php @@ -31,10 +31,11 @@ class EmailModule extends PLModule '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'), ); } @@ -64,9 +65,9 @@ class EmailModule extends PLModule ORDER BY LENGTH(alias)"; $page->assign('aliases', XDB::iterator($sql, $uid)); - $homonyme = XDB::query("SELECT alias FROM aliases INNER JOIN homonymes ON (id = homonyme_id) WHERE user_id = {?} AND type = 'homonyme'", $uid); - $page->assign('homonyme', $homonyme->fetchOneCell()); - + $homonyme = XDB::query("SELECT alias FROM aliases INNER JOIN homonymes ON (id = homonyme_id) WHERE user_id = {?} AND type = 'homonyme'", $uid); + $page->assign('homonyme', $homonyme->fetchOneCell()); + $sql = "SELECT email FROM emails WHERE uid = {?} AND FIND_IN_SET('active', flags)"; @@ -209,20 +210,20 @@ class EmailModule extends PLModule $retour = $redirect->delete_email($email); $page->assign('retour', $retour); } - - if ($action == 'active' && $email) { - $redirect->modify_one_email($email, true); - } - - if ($action == 'inactive' && $email) { - $redirect->modify_one_email($email, false); - } - - if ($action == 'rewrite' && $email) { - $rewrite = @func_get_arg(3); - $redirect->modify_one_email_redirect($email, $rewrite); - } - + + if ($action == 'active' && $email) { + $redirect->modify_one_email($email, true); + } + + if ($action == 'inactive' && $email) { + $redirect->modify_one_email($email, false); + } + + if ($action == 'rewrite' && $email) { + $rewrite = @func_get_arg(3); + $redirect->modify_one_email_redirect($email, $rewrite); + } + if (Env::has('emailop')) { $actifs = Env::v('emails_actifs', Array()); print_r(Env::v('emails_rewrite')); @@ -254,6 +255,7 @@ class EmailModule extends PLModule FROM aliases WHERE id={?} AND (type='a_vie' OR type='alias') ORDER BY !FIND_IN_SET('usage',flags), LENGTH(alias)", $uid); + $page->assign('alias', $res->fetchAllAssoc()); $page->assign('emails',$redirect->emails); } @@ -313,8 +315,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)) { @@ -334,6 +345,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')); @@ -374,8 +388,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( @@ -389,6 +411,31 @@ class EmailModule extends PLModule $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/test.mail.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'; @@ -575,12 +622,12 @@ L'équipe d'administration mail->domain . '>'; $page->changeTpl('emails/lost.tpl'); $page->assign('lost_emails', XDB::iterator(' - SELECT u.user_id, a.alias - FROM auth_user_md5 AS u - INNER JOIN aliases AS a ON (a.id = u.user_id AND a.type = "a_vie") - LEFT JOIN emails AS e ON (u.user_id=e.uid AND FIND_IN_SET("active",e.flags)) - WHERE e.uid IS NULL AND u.deces = 0 - ORDER BY u.promo DESC, u.nom, u.prenom')); + SELECT u.user_id, a.alias + FROM auth_user_md5 AS u + INNER JOIN aliases AS a ON (a.id = u.user_id AND a.type = "a_vie") + LEFT JOIN emails AS e ON (u.user_id=e.uid AND FIND_IN_SET("active",e.flags)) + WHERE e.uid IS NULL AND u.deces = 0 + ORDER BY u.promo DESC, u.nom, u.prenom')); } }