From 81b5b7466a2fc652e261045a2eecfff6a63107f5 Mon Sep 17 00:00:00 2001 From: x2000habouzit Date: Tue, 4 Jul 2006 07:02:56 +0000 Subject: [PATCH] use nice URI's for the email module more than 7 or 8 files disappear, all is grouped in a single source, *EASIER TO DEBUG* yeah git-svn-id: svn+ssh://murphy/home/svn/platal/trunk@359 839d8a87-29fc-0310-9880-83ba4fa771e5 --- ChangeLog | 3 + hooks/emails.inc.php | 10 +- htdocs/alias.php | 118 --------- htdocs/antispam.php | 35 --- htdocs/emails.php | 60 ----- htdocs/emails/broken.php | 94 ------- htdocs/emails/redirect.php | 65 ----- htdocs/emails/send.php | 71 ------ modules/email.php | 393 +++++++++++++++++++++++++++++ templates/docs/doc_emails.tpl | 2 +- templates/docs/doc_melix.tpl | 2 +- templates/docs/faq.tpl | 2 +- templates/docs/plan.tpl | 6 +- templates/docs/services.tpl | 4 +- templates/{ => emails}/alias.tpl | 7 +- templates/{ => emails}/antispam.tpl | 2 +- templates/emails/broken.tpl | 6 +- templates/{emails.tpl => emails/index.tpl} | 16 +- templates/emails/redirect.tpl | 4 +- templates/emails/send.tpl | 8 +- templates/nomusage.tpl | 2 +- 21 files changed, 426 insertions(+), 484 deletions(-) delete mode 100644 htdocs/alias.php delete mode 100644 htdocs/antispam.php delete mode 100644 htdocs/emails.php delete mode 100644 htdocs/emails/broken.php delete mode 100644 htdocs/emails/redirect.php delete mode 100644 htdocs/emails/send.php create mode 100644 modules/email.php rename templates/{ => emails}/alias.tpl (94%) rename templates/{ => emails}/antispam.tpl (99%) rename templates/{emails.tpl => emails/index.tpl} (92%) diff --git a/ChangeLog b/ChangeLog index 8c356ca..56dbca4 100644 --- a/ChangeLog +++ b/ChangeLog @@ -6,6 +6,9 @@ New: * Core: - Work hard to add nice URI's into Platal. -MC + * Emails: + - Switch to the new URI scheme, into email module. -MC + ================================================================================ VERSION 0.9.10 29 Juin 2006 diff --git a/hooks/emails.inc.php b/hooks/emails.inc.php index bc07326..96cff9f 100644 --- a/hooks/emails.inc.php +++ b/hooks/emails.inc.php @@ -56,13 +56,13 @@ function emails_config() function emails_menu() { global $globals; - $globals->menu->addPrivateEntry(XOM_CUSTOM, 00, 'Mes emails', 'emails.php'); + $globals->menu->addPrivateEntry(XOM_CUSTOM, 00, 'Mes emails', 'emails'); if ($globals->mail->send_form) { - $globals->menu->addPrivateEntry(XOM_SERVICES, 00, 'Envoyer un mail', 'emails/send.php'); + $globals->menu->addPrivateEntry(XOM_SERVICES, 00, 'Envoyer un mail', 'emails/send'); } - $globals->menu->addPrivateEntry(XOM_SERVICES, 40, 'Patte cassée', 'emails/broken.php'); + $globals->menu->addPrivateEntry(XOM_SERVICES, 40, 'Patte cassée', 'emails/broken'); } @@ -74,7 +74,7 @@ function emails_prefs() global $globals; $res[] = Array( - 'url' => 'emails.php', + 'url' => 'emails', 'title' => 'Mes adresses de redirection', 'text' => 'Tu peux configurer tes différentes redirections de mails ici.', 'weight' => 10 @@ -82,7 +82,7 @@ function emails_prefs() if ($globals->mail->alias_dom) { $res [] = Array( - 'url' => 'alias.php', + 'url' => 'emails/alias', 'title' => 'Mon alias mail @'.$globals->mail->alias_dom, 'text' => "Pour choisir un alias @{$globals->mail->alias_dom}/{$globals->mail->alias_dom2} (en choisir un nouveau annule l'ancien).", 'weight' => 20 diff --git a/htdocs/alias.php b/htdocs/alias.php deleted file mode 100644 index 9c9144e..0000000 --- a/htdocs/alias.php +++ /dev/null @@ -1,118 +0,0 @@ -assign('xorg_title','Polytechnique.org - Alias melix.net'); - -$uid = Session::getInt('uid'); -$forlife = Session::get('forlife'); - -$page->assign('demande', AliasReq::get_request($uid)); - -//Suppression d'un alias -if (Env::get('suppr', false)) { - $globals->xdb->execute( - 'DELETE virtual, virtual_redirect - FROM virtual - INNER JOIN virtual_redirect USING (vid) - WHERE alias LIKE {?} AND (redirect = {?} OR redirect = {?})', - Env::get('suppr'), - $forlife.'@'.$globals->mail->domain, $forlife.'@'.$globals->mail->domain2); -} - -//Récupération des alias éventuellement existants -$res = $globals->xdb->query( - "SELECT alias, emails_alias_pub - 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 = {?}", - $forlife.'@'.$globals->mail->domain, $forlife.'@'.$globals->mail->domain2, Session::getInt('uid')); -list($alias, $visibility) = $res->fetchOneRow(); -$page->assign('actuel', $alias); - -//Si l'utilisateur vient de faire une damande -if (Env::has('alias') and Env::has('raison')) { - $alias = Env::get('alias'); - $raison = Env::get('raison'); - $public = (Env::get('public', 'off') == 'on')?"public":"private"; - - $page->assign('r_alias', $alias); - $page->assign('r_raison', $raison); - if ($public == 'public') { - $page->assign('r_public', true); - } - - //Quelques vérifications sur l'alias (caractères spéciaux) - if (!preg_match( "/^[a-zA-Z0-9\-.]{3,20}$/", $alias)) { - $page->trig("L'adresse demandée n'est pas valide. - Vérifie qu'elle comporte entre 3 et 20 caractères - et qu'elle ne contient que des lettres non accentuées, - des chiffres ou les caractères - et ."); - $page->run('error'); - } else { - //vérifier que l'alias n'est pas déja pris - $res = $globals->xdb->query('SELECT COUNT(*) FROM virtual WHERE alias={?}', $alias.'@'.$globals->mail->alias_dom); - if ($res->fetchOneCell() > 0) { - $page->trig("L'alias $alias@{$globals->mail->alias_dom} a déja été attribué. - Tu ne peux donc pas l'obtenir."); - $page->run('error'); - } - - //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) { - $page->trig("L'alias $alias@{$globals->mail->alias_dom} a déja été demandé. - Tu ne peux donc pas l'obtenir pour l'instant."); - $page->run('error'); - } - } - - //Insertion de la demande dans la base, écrase les requêtes précédente - $myalias = new AliasReq($uid, $alias, $raison, $public); - $myalias->submit(); - $page->assign('success',$alias); - $page->run('succes'); - } -} - -// montrer son alias -elseif ((Env::get('visible') == 'public') && ($visibility != 'public')) { - $globals->xdb->execute("UPDATE auth_user_quick SET emails_alias_pub = 'public' WHERE user_id = {?}", Session::getInt('uid')); - $visibility = 'public'; -} - -// cacher son alias -elseif ((Env::get('visible') == 'private') && ($visibility != 'private')) { - $globals->xdb->execute("UPDATE auth_user_quick SET emails_alias_pub = 'private' WHERE user_id = {?}", Session::getInt('uid')); - $visibility = 'private'; -} - -if ($visibility == 'public') { - $page->assign('mail_public', true); -} - -$page->run(); -?> diff --git a/htdocs/antispam.php b/htdocs/antispam.php deleted file mode 100644 index feccb27..0000000 --- a/htdocs/antispam.php +++ /dev/null @@ -1,35 +0,0 @@ -change(Session::getInt('uid'), Env::getInt('statut_filtre')); -} - -$page->assign('filtre',$bogo->level()); - -$page->run(); -?> diff --git a/htdocs/emails.php b/htdocs/emails.php deleted file mode 100644 index 4b441d7..0000000 --- a/htdocs/emails.php +++ /dev/null @@ -1,60 +0,0 @@ -assign('xorg_title','Polytechnique.org - Mes emails'); - -$uid = Session::getInt('uid'); - -if (Post::has('best')) { - // bestalias is the first bit : 1 - // there will be maximum 8 bits in flags : 255 - $globals->xdb->execute("UPDATE aliases SET flags=flags & (255 - 1) WHERE id={?}", $uid); - $globals->xdb->execute("UPDATE aliases SET flags=flags | 1 WHERE id={?} AND alias={?}", $uid, Post::get('best')); -} - -// on regarde si on a affaire à un homonyme -$sql = "SELECT alias, (type='a_vie') AS a_vie, (alias REGEXP '\\\\.[0-9]{2}$') AS cent_ans, FIND_IN_SET('bestalias',flags) AS best, expire - FROM aliases - WHERE id = {?} AND type!='homonyme' - ORDER BY LENGTH(alias)"; -$page->assign('aliases', $globals->xdb->iterator($sql, $uid)); - -$sql = "SELECT email - FROM emails - WHERE uid = {?} AND FIND_IN_SET('active', flags)"; -$page->assign('mails', $globals->xdb->iterator($sql, $uid)); - - -// on regarde si l'utilisateur a un alias et si oui on l'affiche ! -$forlife = Session::get('forlife'); -$res = $globals->xdb->query( - "SELECT alias - FROM virtual AS v - INNER JOIN virtual_redirect AS vr USING(vid) - WHERE (redirect={?} OR redirect={?}) - AND alias LIKE '%@{$globals->mail->alias_dom}'", - $forlife.'@'.$globals->mail->domain, $forlife.'@'.$globals->mail->domain2); -$page->assign('melix', $res->fetchOneCell()); - -$page->run(); -?> diff --git a/htdocs/emails/broken.php b/htdocs/emails/broken.php deleted file mode 100644 index ce1424c..0000000 --- a/htdocs/emails/broken.php +++ /dev/null @@ -1,94 +0,0 @@ -assign('xorg_title','Polytechnique.org - Patte cassée'); -require_once('emails.inc.php'); - -if (Get::has('email') && Get::has('action')) { - $email = valide_email(Get::get('email')); - // vérifications d'usage - $sel = $globals->xdb->query( - "SELECT e.uid, a.alias - FROM emails AS e - INNER JOIN auth_user_md5 AS u ON e.uid = u.user_id - INNER JOIN aliases AS a ON (e.uid = a.id AND type!='homonyme' AND FIND_IN_SET('bestalias',a.flags)) - WHERE e.email={?}", $email); - - if (list($uid, $dest) = $sel->fetchOneRow()) { - // envoi du mail - $message = "Bonjour ! - -Ce mail a été généré automatiquement par le service de patte cassée de -Polytechnique.org car un autre utilisateur, ".Session::get('prenom').' '.Session::get('nom').", -nous a signalé qu'en t'envoyant un mail, il avait reçu un message d'erreur -indiquant que ton adresse de redirection $email -ne fonctionnait plus ! - -Nous te suggérons de vérifier cette adresse, et le cas échéant de mettre -à jour sur le site <{$globals->baseurl}/emails.php> tes adresses -de redirection... - -Pour plus de rensignements sur le service de patte cassée, n'hésites pas à -consulter la page <{$globals->baseurl}/emails/broken.php>. - - -A bientôt sur Polytechnique.org ! -L'équipe d'administration "; - - require_once("diogenes/diogenes.hermes.inc.php"); - $mail = new HermesMailer(); - $mail->setFrom('"Polytechnique.org" '); - $mail->addTo("$dest@polytechnique.org"); - $mail->setSubject("Une de tes adresse de redirection Polytechnique.org ne marche plus !!"); - $mail->setTxtBody($message); - $mail->send(); - $page->trig("Mail envoyé ! :o)"); - } -} elseif (Post::has('email')) { - $email = valide_email(Post::get('email')); - - list(,$fqdn) = explode('@', $email); - $fqdn = strtolower($fqdn); - if ($fqdn == 'polytechnique.org' || $fqdn == 'melix.org' || $fqdn == 'm4x.org' || $fqdn == 'melix.net') { - $page->assign('neuneu', true); - } else { - $page->assign('email',$email); - $sel = $globals->xdb->query( - "SELECT e1.uid, e1.panne != 0 AS panne, count(e2.uid) AS nb_mails, u.nom, u.prenom, u.promo - FROM emails as e1 - 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) - WHERE e1.email = {?} - GROUP BY e1.uid", $email); - if ($x = $sel->fetchOneAssoc()) { - // on écrit dans la base que l'adresse est cassée - if (!$x['panne']) { - $globals->xdb->execute("UPDATE emails SET panne=NOW() WHERE email = {?}", $email); - } - $page->assign_by_ref('x', $x); - } - } -} - -$page->run(); -?> diff --git a/htdocs/emails/redirect.php b/htdocs/emails/redirect.php deleted file mode 100644 index 8f2ee59..0000000 --- a/htdocs/emails/redirect.php +++ /dev/null @@ -1,65 +0,0 @@ -assign('retour', $redirect->delete_email(Env::get('email'))); - } elseif (Env::get('emailop') == "ajouter" && Env::has('email')) { - $page->assign('retour', $redirect->add_email(Env::get('email'))); - } elseif (empty($actifs)) { - $page->assign('retour', ERROR_INACTIVE_REDIRECTION); - } elseif (is_array($actifs)) { - $page->assign('retour', $redirect->modify_email($actifs, Env::getMixed('emails_rewrite',Array()))); - } -} -$res = $globals->xdb->query( - "SELECT alias - FROM virtual - INNER JOIN virtual_redirect USING(vid) - WHERE (redirect={?} OR redirect={?}) - AND alias LIKE '%@{$globals->mail->alias_dom}'", - $forlife.'@'.$globals->mail->domain, $forlife.'@'.$globals->mail->domain2); -$melix = $res->fetchOneCell(); -if ($melix) { - list($melix) = explode('@', $melix); - $page->assign('melix',$melix); -} - -$res = $globals->xdb->query( - "SELECT alias,expire - 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); - -$page->run(); -?> diff --git a/htdocs/emails/send.php b/htdocs/emails/send.php deleted file mode 100644 index 2bc806a..0000000 --- a/htdocs/emails/send.php +++ /dev/null @@ -1,71 +0,0 @@ -assign('xorg_title','Polytechnique.org - Envoyer un email'); - -// action si on recoit un formulaire -if (Env::get('submit') == 'Envoyer') -{ - $to2 = join(', ', Env::getMixed('contacts', Array())); - $txt = str_replace('^M', '', Env::get('contenu')); - $to = Env::get('to'); - $subj = Env::get('sujet'); - $from = Env::get('from'); - $cc = Env::get('cc'); - $bcc = Env::get('bcc'); - - if (empty($to) && empty($cc) && empty($to2)) { - $page->trig("Indique au moins un destinataire."); - } else { - require_once("diogenes/diogenes.hermes.inc.php"); - - $mymail = new HermesMailer(); - $mymail->setFrom($from); - $mymail->setSubject($subj); - if (!empty($to)) { $mymail->addTo($to); } - if (!empty($cc)) { $mymail->addCc($cc); } - if (!empty($bcc)) { $mymail->addBcc($bcc); } - if (!empty($to2)) { $mymail->addTo($to2); } - $mymail->setTxtBody(wordwrap($txt,72,"\n")); - if ($mymail->send()) { - $page->trig("Ton mail a bien été envoyé."); - $_REQUEST = array('bcc' => Session::get('bestalias').'@'.$globals->mail->domain); - } else { - $page->trig("Erreur lors de l'envoi du courriel, réessaye."); - } - } -} else { - $_REQUEST['bcc'] = Session::get('bestalias').'@'.$globals->mail->domain; -} - -$res = $globals->xdb->query( - "SELECT u.prenom, u.nom, u.promo, a.alias as forlife - FROM auth_user_md5 AS u - INNER JOIN contacts AS c ON (u.user_id = c.contact) - INNER JOIN aliases AS a ON (u.user_id=a.id AND FIND_IN_SET('bestalias',a.flags)) - WHERE c.uid = {?} - ORDER BY u.nom, u.prenom", Session::getInt('uid')); -$page->assign('contacts', $res->fetchAllAssoc()); - -$page->run(); -?> diff --git a/modules/email.php b/modules/email.php new file mode 100644 index 0000000..b08a2fa --- /dev/null +++ b/modules/email.php @@ -0,0 +1,393 @@ + $this->make_hook('emails', AUTH_COOKIE), + 'emails/alias' => $this->make_hook('alias', AUTH_MDP), + 'emails/antispam' => $this->make_hook('antispam', AUTH_MDP), + 'emails/broken' => $this->make_hook('broken', AUTH_COOKIE), + 'emails/redirect' => $this->make_hook('redirect', AUTH_MDP), + 'emails/send' => $this->make_hook('send', AUTH_MDP), + ); + } + + function handler_emails(&$page) + { + global $globals; + + $page->changeTpl('emails/index.tpl'); + $page->assign('xorg_title','Polytechnique.org - Mes emails'); + + $uid = Session::getInt('uid'); + + if (Post::has('best')) { + // bestalias is the first bit : 1 + // there will be maximum 8 bits in flags : 255 + $globals->xdb->execute("UPDATE aliases SET flags=flags & (255 - 1) WHERE id={?}", $uid); + $globals->xdb->execute("UPDATE aliases SET flags=flags | 1 WHERE id={?} AND alias={?}", + $uid, Post::get('best')); + } + + // on regarde si on a affaire à un homonyme + $sql = "SELECT alias, (type='a_vie') AS a_vie, + (alias REGEXP '\\\\.[0-9]{2}$') AS cent_ans, + FIND_IN_SET('bestalias',flags) AS best, expire + FROM aliases + WHERE id = {?} AND type!='homonyme' + ORDER BY LENGTH(alias)"; + $page->assign('aliases', $globals->xdb->iterator($sql, $uid)); + + $sql = "SELECT email + FROM emails + WHERE uid = {?} AND FIND_IN_SET('active', flags)"; + $page->assign('mails', $globals->xdb->iterator($sql, $uid)); + + + // on regarde si l'utilisateur a un alias et si oui on l'affiche ! + $forlife = Session::get('forlife'); + $res = $globals->xdb->query( + "SELECT alias + FROM virtual AS v + INNER JOIN virtual_redirect AS vr USING(vid) + WHERE (redirect={?} OR redirect={?}) + AND alias LIKE '%@{$globals->mail->alias_dom}'", + $forlife.'@'.$globals->mail->domain, $forlife.'@'.$globals->mail->domain2); + $page->assign('melix', $res->fetchOneCell()); + return PL_OK; + } + + function handler_alias(&$page, $action = null, $value = null) + { + require_once 'validations.inc.php'; + + global $globals; + + $page->changeTpl('emails/alias.tpl'); + $page->assign('xorg_title','Polytechnique.org - Alias melix.net'); + + $uid = Session::getInt('uid'); + $forlife = Session::get('forlife'); + + $page->assign('demande', AliasReq::get_request($uid)); + + if ($action == 'suppr' && $value) { + //Suppression d'un alias + $globals->xdb->execute( + 'DELETE virtual, virtual_redirect + FROM virtual + INNER JOIN virtual_redirect USING (vid) + WHERE alias = {?} AND (redirect = {?} OR redirect = {?})', $value, + $forlife.'@'.$globals->mail->domain, $forlife.'@'.$globals->mail->domain2); + } + + //Récupération des alias éventuellement existants + $res = $globals->xdb->query( + "SELECT alias, emails_alias_pub + 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 = {?}", + $forlife.'@'.$globals->mail->domain, + $forlife.'@'.$globals->mail->domain2, Session::getInt('uid')); + list($alias, $visibility) = $res->fetchOneRow(); + $page->assign('actuel', $alias); + + if ($action == 'ask' && Env::has('alias') and Env::has('raison')) { + //Si l'utilisateur vient de faire une damande + + $alias = Env::get('alias'); + $raison = Env::get('raison'); + $public = (Env::get('public', 'off') == 'on')?"public":"private"; + + $page->assign('r_alias', $alias); + $page->assign('r_raison', $raison); + if ($public == 'public') { + $page->assign('r_public', true); + } + + //Quelques vérifications sur l'alias (caractères spéciaux) + if (!preg_match( "/^[a-zA-Z0-9\-.]{3,20}$/", $alias)) { + $page->trig("L'adresse demandée n'est pas valide. + Vérifie qu'elle comporte entre 3 et 20 caractères + et qu'elle ne contient que des lettres non accentuées, + des chiffres ou les caractères - et ."); + return PL_OK; + } else { + //vérifier que l'alias n'est pas déja pris + $res = $globals->xdb->query('SELECT COUNT(*) FROM virtual WHERE alias={?}', + $alias.'@'.$globals->mail->alias_dom); + if ($res->fetchOneCell() > 0) { + $page->trig("L'alias $alias@{$globals->mail->alias_dom} a déja été attribué. + Tu ne peux donc pas l'obtenir."); + return PL_OK; + } + + //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) { + $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 PL_OK; + } + } + + //Insertion de la demande dans la base, écrase les requêtes précédente + $myalias = new AliasReq($uid, $alias, $raison, $public); + $myalias->submit(); + $page->assign('success',$alias); + return PL_OK; + } + } + elseif ($action == 'set' + && ($value == 'public' || $value == 'private')) + { + if ($value == 'public') { + $globals->xdb->execute("UPDATE auth_user_quick SET emails_alias_pub = 'public' + WHERE user_id = {?}", Session::getInt('uid')); + } else { + $globals->xdb->execute("UPDATE auth_user_quick SET emails_alias_pub = 'private' + WHERE user_id = {?}", Session::getInt('uid')); + } + + $visibility = $value; + } + + $page->assign('mail_public', ($visibility == 'public')); + + return PL_OK; + } + + function handler_redirect(&$page, $action = null, $email = null) + { + global $globals; + + require_once 'emails.inc.php'; + + $page->changeTpl('emails/redirect.tpl'); + + $uid = Session::getInt('uid'); + $forlife = Session::get('forlife'); + + $redirect = new Redirect(Session::getInt('uid')); + + if ($action == 'remove' && $email) { + $page->assign('retour', $redirect->delete_email($email)); + } + + if (Env::has('emailop')) { + $actifs = Env::getMixed('emails_actifs', Array()); + if (Env::get('emailop') == "ajouter" && Env::has('email')) { + $page->assign('retour', $redirect->add_email(Env::get('email'))); + } elseif (empty($actifs)) { + $page->assign('retour', ERROR_INACTIVE_REDIRECTION); + } elseif (is_array($actifs)) { + $page->assign('retour', $redirect->modify_email($actifs, + Env::getMixed('emails_rewrite',Array()))); + } + } + + $res = $globals->xdb->query( + "SELECT alias + FROM virtual + INNER JOIN virtual_redirect USING(vid) + WHERE (redirect={?} OR redirect={?}) + AND alias LIKE '%@{$globals->mail->alias_dom}'", + $forlife.'@'.$globals->mail->domain, $forlife.'@'.$globals->mail->domain2); + $melix = $res->fetchOneCell(); + if ($melix) { + list($melix) = explode('@', $melix); + $page->assign('melix',$melix); + } + + $res = $globals->xdb->query( + "SELECT alias,expire + 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); + + return PL_OK; + } + + function handler_antispam(&$page) + { + require_once 'emails.inc.php'; + + $page->changeTpl('emails/antispam.tpl'); + + $bogo = new Bogo(Session::getInt('uid')); + if (Env::has('statut_filtre')) { + $bogo->change(Session::getInt('uid'), Env::getInt('statut_filtre')); + } + $page->assign('filtre',$bogo->level()); + + return PL_OK; + } + + function handler_send(&$page) + { + global $globals; + + $page->changeTpl('emails/send.tpl'); + + $page->assign('xorg_title','Polytechnique.org - Envoyer un email'); + + // action si on recoit un formulaire + if (Env::get('submit') == 'Envoyer') + { + $to2 = join(', ', Env::getMixed('contacts', Array())); + $txt = str_replace('^M', '', Env::get('contenu')); + $to = Env::get('to'); + $subj = Env::get('sujet'); + $from = Env::get('from'); + $cc = Env::get('cc'); + $bcc = Env::get('bcc'); + + if (empty($to) && empty($cc) && empty($to2)) { + $page->trig("Indique au moins un destinataire."); + } else { + require_once("diogenes/diogenes.hermes.inc.php"); + + $mymail = new HermesMailer(); + $mymail->setFrom($from); + $mymail->setSubject($subj); + if (!empty($to)) { $mymail->addTo($to); } + if (!empty($cc)) { $mymail->addCc($cc); } + if (!empty($bcc)) { $mymail->addBcc($bcc); } + if (!empty($to2)) { $mymail->addTo($to2); } + $mymail->setTxtBody(wordwrap($txt,72,"\n")); + if ($mymail->send()) { + $page->trig("Ton mail a bien été envoyé."); + $_REQUEST = array('bcc' => Session::get('bestalias').'@'.$globals->mail->domain); + } else { + $page->trig("Erreur lors de l'envoi du courriel, réessaye."); + } + } + } else { + $_REQUEST['bcc'] = Session::get('bestalias').'@'.$globals->mail->domain; + } + + $res = $globals->xdb->query( + "SELECT u.prenom, u.nom, u.promo, a.alias as forlife + FROM auth_user_md5 AS u + INNER JOIN contacts AS c ON (u.user_id = c.contact) + INNER JOIN aliases AS a ON (u.user_id=a.id AND FIND_IN_SET('bestalias',a.flags)) + WHERE c.uid = {?} + ORDER BY u.nom, u.prenom", Session::getInt('uid')); + $page->assign('contacts', $res->fetchAllAssoc()); + + return PL_OK; + } + + function handler_broken(&$page, $warn = null, $email = null) + { + require_once 'emails.inc.php'; + + global $globals; + + $page->changeTpl('emails/broken.tpl'); + + if ($warn == 'warn' && $email) { + $email = valide_email($email); + // vérifications d'usage + $sel = $globals->xdb->query( + "SELECT e.uid, a.alias + FROM emails AS e + INNER JOIN auth_user_md5 AS u ON e.uid = u.user_id + INNER JOIN aliases AS a ON (e.uid = a.id AND type!='homonyme' + AND FIND_IN_SET('bestalias',a.flags)) + WHERE e.email={?}", $email); + + if (list($uid, $dest) = $sel->fetchOneRow()) { + // envoi du mail + $message = "Bonjour ! + +Ce mail a été généré automatiquement par le service de patte cassée de +Polytechnique.org car un autre utilisateur, ".Session::get('prenom').' '.Session::get('nom').", +nous a signalé qu'en t'envoyant un mail, il avait reçu un message d'erreur +indiquant que ton adresse de redirection $email +ne fonctionnait plus ! + +Nous te suggérons de vérifier cette adresse, et le cas échéant de mettre +à jour sur le site <{$globals->baseurl}/emails.php> tes adresses +de redirection... + +Pour plus de rensignements sur le service de patte cassée, n'hésites pas à +consulter la page <{$globals->baseurl}/emails/broken.php>. + + +A bientôt sur Polytechnique.org ! +L'équipe d'administration "; + + require_once("diogenes/diogenes.hermes.inc.php"); + $mail = new HermesMailer(); + $mail->setFrom('"Polytechnique.org" '); + $mail->addTo("$dest@polytechnique.org"); + $mail->setSubject("Une de tes adresse de redirection Polytechnique.org ne marche plus !!"); + $mail->setTxtBody($message); + $mail->send(); + $page->trig("Mail envoyé ! :o)"); + } + } elseif (Post::has('email')) { + $email = valide_email(Post::get('email')); + + list(,$fqdn) = explode('@', $email); + $fqdn = strtolower($fqdn); + if ($fqdn == 'polytechnique.org' || $fqdn == 'melix.org' + || $fqdn == 'm4x.org' || $fqdn == 'melix.net') + { + $page->assign('neuneu', true); + } else { + $page->assign('email',$email); + $sel = $globals->xdb->query( + "SELECT e1.uid, e1.panne != 0 AS panne, count(e2.uid) AS nb_mails, + u.nom, u.prenom, u.promo + FROM emails as e1 + 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) + WHERE e1.email = {?} + GROUP BY e1.uid", $email); + if ($x = $sel->fetchOneAssoc()) { + // on écrit dans la base que l'adresse est cassée + if (!$x['panne']) { + $globals->xdb->execute("UPDATE emails SET panne=NOW() WHERE email = {?}", $email); + } + $page->assign_by_ref('x', $x); + } + } + } + } +} + +?> diff --git a/templates/docs/doc_emails.tpl b/templates/docs/doc_emails.tpl index ded59eb..29e3f49 100644 --- a/templates/docs/doc_emails.tpl +++ b/templates/docs/doc_emails.tpl @@ -37,7 +37,7 @@ {$smarty.session.forlife}@m4x.org.

- L'utilisation de ce service est très simple. Sur cette + L'utilisation de ce service est très simple. Sur cette page, tu trouveras un formulaire pour ajouter de nouvelles adresses de redirection. Tous les courries envoyés sur tes adresses @polytechnique.org et @m4x.org seront redirigés vers toutes les boites de redirection que tu auras spécifiées et diff --git a/templates/docs/doc_melix.tpl b/templates/docs/doc_melix.tpl index dad2bc9..eb81dda 100644 --- a/templates/docs/doc_melix.tpl +++ b/templates/docs/doc_melix.tpl @@ -38,7 +38,7 @@ ces adresses personnalisées auront pour suffixe @melix.net et @melix.org. Ces domaines sont aussi gérés par nos serveurs, et tous les mails que tu recevras à cette adresse seront immédiatement redirigés sur tes adresses de renvoi habituelles définies sur - cette page. + cette page.

A combien d'alias @melix.net ai-je droit ? diff --git a/templates/docs/faq.tpl b/templates/docs/faq.tpl index 835171f..f3d26df 100644 --- a/templates/docs/faq.tpl +++ b/templates/docs/faq.tpl @@ -190,7 +190,7 @@ que des informations manquent. les champs contenant une adresse @ifrance.com). Dans ce cas, tu peux utiliser le serveur SMTP de polytechnique.org. Quand tu n'as pas accès au un logiciel de courrier électronique, tu peux aussi - utiliser cette page pour envoyer un petit courriel. + utiliser cette page pour envoyer un petit courriel.

diff --git a/templates/docs/plan.tpl b/templates/docs/plan.tpl index ff2f9b6..121b164 100644 --- a/templates/docs/plan.tpl +++ b/templates/docs/plan.tpl @@ -85,12 +85,12 @@
    • - {page title="Mes adresses de redirection" url="emails.php"|url} + {page title="Mes adresses de redirection" url="emails"|url} Cette page te permet de configurer les adresses mails sur lesquelles pointent tes adresses Polytechnique.org. {/page} - {page title="Mon alias mail @melix.net/.org" url="alias.php"|url} + {page title="Mon alias mail @melix.net/.org" url="emails/alias"|url} Tu peux bénéficier d'adresses mail conviviales @melix.net ou @melix.org, pour cela il te suffit de faire une demande sur cette page. {/page} @@ -135,7 +135,7 @@
        - {page title="Envoyer un mail" url="emqils/send.php"|url} + {page title="Envoyer un mail" url="emails/send"|url} Tu peux rédiger tes mails directement par le site web de Polytechnique.org. {/page} diff --git a/templates/docs/services.tpl b/templates/docs/services.tpl index d82bd0b..68b1ad2 100644 --- a/templates/docs/services.tpl +++ b/templates/docs/services.tpl @@ -36,7 +36,7 @@ aussi avec les anciens d'autres grandes Service toujours le plus important : l'adresse email à vie. Polytechnique.org t'offre une adresse email sur le domaine @polytechnique.org (et @m4x.org) que tu gardes à vie (sauf si tu as un homonyme et qu'il s'inscrit). -Cette adresse email est protégée par un antivirus et un +Cette adresse email est protégée par un antivirus et un antispam.

        @@ -50,7 +50,7 @@ consulter le trombinoscope des promotions.

        -Le site te permet d'envoyer des mails, +Le site te permet d'envoyer des mails, de consulter des forums de discussions, aux sujets variés, de t'inscrire sur des listes de diffusion dédiées à une thème particulier. diff --git a/templates/alias.tpl b/templates/emails/alias.tpl similarity index 94% rename from templates/alias.tpl rename to templates/emails/alias.tpl index 5c7e650..04814ae 100644 --- a/templates/alias.tpl +++ b/templates/emails/alias.tpl @@ -36,7 +36,7 @@ {if $actuel} -

        + @@ -128,10 +124,10 @@ ton homonyme et toi-m {if $melix} Tu disposes à l'heure actuelle de l'alias {$melix} Pour demander à la place un autre alias @{#globals.mail.alias_dom#}, - il te suffit de te rendre ici + il te suffit de te rendre ici {else} A l'heure actuelle tu n'as pas activé d'adresse @{#globals.mail.alias_dom#}. - Si tu souhaites le faire, il te suffit de venir ici + Si tu souhaites le faire, il te suffit de venir ici {/if} diff --git a/templates/emails/redirect.tpl b/templates/emails/redirect.tpl index c01ef14..3b44515 100644 --- a/templates/emails/redirect.tpl +++ b/templates/emails/redirect.tpl @@ -72,7 +72,7 @@ {#globals.mail.domain2#}, ou lorsque tu utilises notre service d'envoi de courrier SMTP sécurisé.

        - +
        @@ -78,7 +78,7 @@ {/if}
        - + @@ -115,7 +115,7 @@
        Demande d'alias
        {if $actuel} -
        @@ -123,7 +123,6 @@ diff --git a/templates/antispam.tpl b/templates/emails/antispam.tpl similarity index 99% rename from templates/antispam.tpl rename to templates/emails/antispam.tpl index 399d6bd..24cb2c7 100644 --- a/templates/antispam.tpl +++ b/templates/emails/antispam.tpl @@ -46,7 +46,7 @@ Quatre r qui ne peuvent plus se satisfaire du réglage 3. - +
        Choisis ton propre réglage : diff --git a/templates/emails/broken.tpl b/templates/emails/broken.tpl index 300d0f9..115f2f9 100644 --- a/templates/emails/broken.tpl +++ b/templates/emails/broken.tpl @@ -20,8 +20,6 @@ {* *} {**************************************************************************} - -

        Vérifier une patte cassée

        {if $neuneu} @@ -48,7 +46,7 @@ information.

        Nous pensons qu'il serait une bonne idée de le prévenir que cette adresse email ne fonctionne plus. Si tu veux que nous lui envoyions un mail automatique de ta part pour le prévenir, - clique sur ce lien. + clique sur ce lien.

        {elseif $x}

        @@ -88,7 +86,7 @@ information.


        - +
        -
        diff --git a/templates/emails.tpl b/templates/emails/index.tpl similarity index 92% rename from templates/emails.tpl rename to templates/emails/index.tpl index c45b8cb..f7aa577 100644 --- a/templates/emails.tpl +++ b/templates/emails/index.tpl @@ -20,11 +20,7 @@ {* *} {**************************************************************************} - -

        - Gestion de mes courriers électroniques -

        - +

        Gestion de mes courriers électroniques

        Adresse email défectueuse
        @@ -33,7 +29,7 @@
        Tes adresses polytechniciennes sont :

        - +
        {iterate from=$aliases item=a} @@ -85,7 +81,7 @@ ton homonyme et toi-m {/iterate} Si tu souhaites modifier ce reroutage de ton courrier, - il te suffit de te rendre ici ! + il te suffit de te rendre ici !
        @@ -105,7 +101,7 @@ ton homonyme et toi-m
        De même, un service antispam évolué est en place. Tu peux lui demander de te débarrasser des spams que tu reçois. Pour en savoir plus, et l'activer, - c'est très simple, suis ce lien ! + c'est très simple, suis ce lien !
        @@ -97,7 +97,7 @@ {/foreach} - + {/foreach}
        retirerretirer
        diff --git a/templates/emails/send.tpl b/templates/emails/send.tpl index b0cfabb..e931a7c 100644 --- a/templates/emails/send.tpl +++ b/templates/emails/send.tpl @@ -20,11 +20,7 @@ {* *} {**************************************************************************} - - -

        - Envoyer un mail -

        +

        Envoyer un mail

        • @@ -49,7 +45,7 @@ //]]> - + diff --git a/templates/nomusage.tpl b/templates/nomusage.tpl index 19fa8a5..f966e06 100644 --- a/templates/nomusage.tpl +++ b/templates/nomusage.tpl @@ -68,7 +68,7 @@ exceptionnellement sur changement de l'

          Les surnoms sont systématiquement refusés. Pour utiliser une adresse personnalisée, il faut se tourner vers -l'alias @melix.net. +l'alias @melix.net.

          -- 2.1.4

          Destinataires