From: x2000habouzit
Date: Tue, 4 Jul 2006 07:02:56 +0000 (+0000)
Subject: use nice URI's for the email module
X-Git-Tag: xorg/0.9.11~534
X-Git-Url: http://git.polytechnique.org/?a=commitdiff_plain;h=81b5b7466a2fc652e261045a2eecfff6a63107f5;p=platal.git
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
---
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}
-