modularize emails
authorPierre Habouzit (MadCoder <pierre.habouzit@m4x.org>
Sun, 5 Dec 2004 21:40:38 +0000 (21:40 +0000)
committerFlorent Bruneau <florent.bruneau@polytechnique.org>
Thu, 26 Jun 2008 21:26:31 +0000 (23:26 +0200)
 * QUite a lot of work.  not really interesting.
   cleaning, renaming, configuration, ...

 * Still : delete newsletter_pattecassee in favor to a script.
   feed it with the emails, and it treats all alone.  good boy.
   (bin/emails.broken.php)

-> remains : work on sendmail.* + work on module

git-archimport-id: opensource@polytechnique.org--2005/platal--mainline--0.9--patch-58

25 files changed:
bin/emails.broken.php [new file with mode: 0644]
configs/mails.conf
htdocs/admin/newsletter_pattecassee.php [deleted file]
htdocs/admin/utilisateurs.php
htdocs/alias.php
htdocs/antispam.php
htdocs/emails.php
htdocs/emails/broken.php [moved from htdocs/pattecassee.php with 67% similarity]
htdocs/emails/redirect.php [moved from htdocs/routage-mail.php with 86% similarity]
htdocs/inscription/step4.php
include/conf.d/emails.globals.inc.php [moved from include/conf.d/mail.globals.inc.php with 81% similarity]
include/conf.d/emails.menu.inc.php [new file with mode: 0644]
include/conf.d/tmp.menu.inc.php
include/emails.inc.php [moved from include/email.classes.inc.php with 95% similarity]
include/validations.inc.php
include/validations/aliases.inc.php
install.d/emails/files [moved from install.d/mail/files with 58% similarity]
templates/admin/newsletter_pattecassee.tpl [deleted file]
templates/alias.tpl
templates/emails.tpl
templates/emails/broken.tpl [moved from templates/pattecassee.tpl with 83% similarity]
templates/emails/redirect.tpl [moved from templates/routage-mail.tpl with 87% similarity]
templates/include/form.valid.aliases.tpl
templates/mails/pattecasser.nl.tpl [deleted file]
templates/preferences.tpl.d/20.alias.tpl

diff --git a/bin/emails.broken.php b/bin/emails.broken.php
new file mode 100644 (file)
index 0000000..70652df
--- /dev/null
@@ -0,0 +1,103 @@
+<?php
+/***************************************************************************
+ *  Copyright (C) 2003-2004 Polytechnique.org                              *
+ *  http://opensource.polytechnique.org/                                   *
+ *                                                                         *
+ *  This program is free software; you can redistribute it and/or modify   *
+ *  it under the terms of the GNU General Public License as published by   *
+ *  the Free Software Foundation; either version 2 of the License, or      *
+ *  (at your option) any later version.                                    *
+ *                                                                         *
+ *  This program is distributed in the hope that it will be useful,        *
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of         *
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the          *
+ *  GNU General Public License for more details.                           *
+ *                                                                         *
+ *  You should have received a copy of the GNU General Public License      *
+ *  along with this program; if not, write to the Free Software            *
+ *  Foundation, Inc.,                                                      *
+ *  59 Temple Place, Suite 330, Boston, MA  02111-1307  USA                *
+ ***************************************************************************/
+
+ini_set('include_path', '../include:/usr/share/php/diogenes:/usr/share/php');
+require_once('../include/xorg.inc.php');
+require_once('../include/emails.inc.php');
+
+$opts = getopt('i:');
+if (($opts['i'] && $opts['i'] == '-') || empty($opts['i'])) {
+    $file = 'php://stdin';
+} else {
+    $file = $opts['i'];
+}
+
+$emails = split("\n", file_get_contents($file));
+foreach ($emails as $_email) {
+    $email = valide_email($_email);
+    if (empty($email) || $email=='@') {
+        continue;
+    }
+
+    $sel = $globals->db->query(
+            "SELECT  e1.uid, e1.panne != 0 AS panne, count(e2.uid) AS nb_mails, u.nom, u.prenom, u.promo, a.alias
+               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)
+         INNER JOIN  aliases       AS a  ON (u.user_id = a.id AND FIND_IN_SET('bestalias',a.flags))
+              WHERE  e1.email ='$email'
+           GROUP BY  e1.uid");
+    if ($x = mysql_fetch_assoc($sel)) {
+        if (!$x['panne']) {
+            $globals->db->query("UPDATE emails SET panne='".date("Y-m-d")."' WHERE email =  '".$email."'");
+        }
+
+        if (empty($x['nb_mails'])) {
+            echo "$email : seule adresse active de {$x['prenom']} {$x['nom']}\n";
+        } else {
+            $message = "  Bonjour !
+       
+  Nous t'écrivons car lors de l'envoi de la lettre d'information mensuelle
+de Polytechnique.org à ton adresse polytechnicienne :
+
+    {$x['alias']}@polytechnique.org,
+
+l'adresse {$email}, sur laquelle tu rediriges ton courrier, ne
+fonctionnait pas.
+
+  Estimant que cette information serait susceptible de t'intéresser, nous
+avons préféré t'en informer. Il n'est pas impossible qu'il ne s'agisse que
+d'une panne temporaire.  Si tu souhaites changer la liste des adresses sur
+lesquelles tu reçois le courrier qui t'es envoyé à ton adresse
+polytechnicienne, il te suffit de te rendre sur la page :
+
+    {$globals->baseurl}/emails/redirect.php
+
+
+  A bientôt sur Polytechnique.org !
+  L'équipe d'administration <support@polytechnique.org>
+  
+---------------------------------------------------------------------------
+
+  PS : si jamais tu ne disposes plus du mot de passe te permettant
+d'accéder au site, rends toi sur la page
+
+    {$globals->baseurl}/recovery.php
+
+elle te permettra de créer un nouveau mot de passe après avoir rentré ton
+login ({$x['alias']}) et ta date de naissance !";
+
+            require_once("diogenes.hermes.inc.php");
+            $mail = new HermesMailer();
+            $mail->setFrom('"Polytechnique.org" <support@polytechnique.org>');
+            $mail->addTo("\"{$x['prenom']} {$x['nom']}\" <{$x['alias']}@polytechnique.org>");
+            $mail->setSubject("Une de tes adresse de redirection Polytechnique.org ne marche plus !!");
+            $mail->setTxtBody($message);
+            $mail->send();
+            echo "$email : mail envoyé\n";
+        }
+    } else {
+        echo "$email : cette addresse n'est pas dans la base\n";
+    } 
+}
+
+?>
index 66ca03a..a4b1661 100644 (file)
@@ -26,9 +26,6 @@ cc="Equipe Polytechnique.org" <validation+evts@polytechnique.org>
 from="Equipe Polytechnique.org" <validation+sondages@polytechnique.org>
 cc="Equipe Polytechnique.org" <validation+sondages@polytechnique.org>
 
-[pattecassee_nl]
-from=Polytechnique.org <support@polytechnique.org>
-
 [marketing_relance]
 from=Pre-Inscription <register@polytechnique.org>
 
diff --git a/htdocs/admin/newsletter_pattecassee.php b/htdocs/admin/newsletter_pattecassee.php
deleted file mode 100644 (file)
index 18032db..0000000
+++ /dev/null
@@ -1,83 +0,0 @@
-<?php
-/***************************************************************************
- *  Copyright (C) 2003-2004 Polytechnique.org                              *
- *  http://opensource.polytechnique.org/                                   *
- *                                                                         *
- *  This program is free software; you can redistribute it and/or modify   *
- *  it under the terms of the GNU General Public License as published by   *
- *  the Free Software Foundation; either version 2 of the License, or      *
- *  (at your option) any later version.                                    *
- *                                                                         *
- *  This program is distributed in the hope that it will be useful,        *
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of         *
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the          *
- *  GNU General Public License for more details.                           *
- *                                                                         *
- *  You should have received a copy of the GNU General Public License      *
- *  along with this program; if not, write to the Free Software            *
- *  Foundation, Inc.,                                                      *
- *  59 Temple Place, Suite 330, Boston, MA  02111-1307  USA                *
- ***************************************************************************/
-
-require_once("xorg.inc.php");
-new_admin_page('admin/newsletter_pattecassee.tpl');
-
-function valide_email($str) {
-
-   $em = trim(rtrim($str));
-   list($ident, $dom) = explode("@", $em);
-   if ($dom == "m4x.org" or $dom == "polytechnique.org") {
-       list($ident1) = explode("_", $ident);
-       list($ident) = explode("+", $ident1);
-   }
-   return $ident . "@" . $dom;
-
-}
-
-require_once("xorg.mailer.inc.php");
-
-if (array_key_exists('email', $_GET) && array_key_exists('action', $_GET)) {
-    $email = valide_email($_GET['email']);
-    // vérifications d'usage
-    $sel = $globals->db->query(
-      "SELECT a.alias AS forlife
-       FROM emails AS e
-       INNER JOIN auth_user_md5 AS u ON e.uid = u.user_id
-       INNER JOIN aliases AS a ON (u.user_id = a.id AND a.type='a_vie')
-       WHERE e.email='$email'");
-       
-    $mailer = new XOrgMailer('templates/mails/pattecasser.nl.tpl');
-    $mailer->assign('email', $email);
-    
-    if (list($dest) = mysql_fetch_row($sel)) {
-        $mailer->assign('dest', $dest);
-        $mailer->send();
-        $page->assign('erreur', "<p class='erreur'>Mail envoyé ! :o)</p>");
-    }
-} else if (array_key_exists('email', $_POST)) {
-    $email = valide_email($_POST['email']);
-    $sel = $globals->db->query(
-      "SELECT e.uid, e.panne, u.nom, u.prenom, u.promo, a.alias AS forlife
-       FROM emails AS e
-       INNER JOIN auth_user_md5 AS u ON e.uid = u.user_id
-       INNER JOIN aliases AS a ON (u.user_id = a.id AND a.type='a_vie')
-       WHERE e.email = '$email'");
-    if (list($puid, $ppanne, $pnom, $pprenom, $ppromo, $pforlife) = mysql_fetch_row($sel)) {
-        // on écrit dans la base que l'adresse est cassée
-        if ($ppanne == '0000-00-00')
-            $globals->db->query("UPDATE emails SET panne='".date("Y-m-d")."' WHERE email =  '$email'");
-        // on regarde s'il y a d'autres redirections actives
-        $sel = $globals->db->query("SELECT * FROM emails WHERE uid = " . $puid . " AND FIND_IN_SET('active', flags) AND email != '$email'");
-        $nb_emails = mysql_num_rows($sel);
-        $page->assign('nb_emails', $nb_emails);
-        $page->assign('forlife', $pforlife);
-        $page->assign('prenom', $pprenom);
-        $page->assign('nom', $pnom);
-        $page->assign('promo', $ppromo);
-    } else
-        $page->assign('no_more', 1);
-    $page->assign('email', $email);
-}
-
-$page->run();
-?>
index d109956..67dcc75 100644 (file)
@@ -21,7 +21,7 @@
 
 require_once("xorg.inc.php");
 new_admin_page('admin/utilisateurs.tpl');
-require_once("email.classes.inc.php");
+require_once("emails.inc.php");
 
 /*
  * LOGS de l'utilisateur
index 179b6b1..17579cc 100644 (file)
@@ -30,7 +30,9 @@ $page->assign('demande', AliasReq::get_unique_request($_SESSION['uid']));
 $sql = "SELECT  alias
           FROM  virtual
     INNER JOIN  virtual_redirect USING(vid)
-          WHERE redirect='{$_SESSION['forlife']}@m4x.org' AND alias LIKE '%@melix.net'";
+          WHERE (  redirect='{$_SESSION['forlife']}@{$globals->mail->domain}'
+                OR redirect='{$_SESSION['forlife']}@{$globals->mail->domain2}' )
+                AND alias LIKE '%@{$globals->mail->alias_dom}'";
 if($result = $globals->db->query($sql)) {
     list($aliases) = mysql_fetch_row($result);
     mysql_free_result($result);
@@ -54,9 +56,9 @@ if (isset($_REQUEST['alias']) and isset($_REQUEST['raison'])) {
         $page->run('error');
     } else {
         //vérifier que l'alias n'est pas déja pris
-        $result = $globals->db->query("SELECT 1 FROM virtual WHERE alias='$alias@melix.net'");
+        $result = $globals->db->query("SELECT 1 FROM virtual WHERE alias='$alias@{$globals->mail->alias_dom}'");
         if (mysql_num_rows($result)>0) {
-            $page->assign('error', "L'alias $alias@melix.net a déja été attribué.
+            $page->assign('error', "L'alias $alias@{$globals->mail->alias_dom} a déja été attribué.
                                     Tu ne peux donc pas l'obtenir.");
             $page->run('error');
         }
@@ -65,7 +67,7 @@ if (isset($_REQUEST['alias']) and isset($_REQUEST['raison'])) {
         $it = new ValidateIterator ();
         while($req = $it->next()) {
             if ($req->type == "alias" and $req->alias == $alias) {
-                $page->assign('error', "L'alias $alias@melix.net a déja été demandé.
+                $page->assign('error', "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');
             }
index 5306fe3..cfb6816 100644 (file)
@@ -21,7 +21,7 @@
 
 require_once("xorg.inc.php");
 new_skinned_page('antispam.tpl', AUTH_MDP);
-require_once("email.classes.inc.php");
+require_once("emails.inc.php");
 
 $bogo = new Bogo($_SESSION['uid']);
 
index c543e35..4fb953e 100644 (file)
@@ -47,10 +47,14 @@ $page->mysql_assign($sql, 'mails', 'nb_mails');
 $sql = "SELECT  alias
           FROM  virtual          AS v
     INNER JOIN  virtual_redirect AS vr USING(vid)
-         WHERE  redirect='{$_SESSION['forlife']}@m4x.org' AND alias LIKE '%@melix.net'";
+         WHERE  (  redirect='{$_SESSION['forlife']}@{$globals->mail->domain}'
+                OR redirect='{$_SESSION['forlife']}@{$globals->mail->domain2}' )
+                AND alias LIKE '%@{$globals->mail->alias_dom}'";
 $result = $globals->db->query($sql);
-if ($result && list($aliases) = mysql_fetch_row($result))
-    $page->assign('melix', substr($aliases,0,-3));
+if ($result && list($aliases) = mysql_fetch_row($result)) {
+    list($melix) = split('@', $aliases);
+    $page->assign('melix', $melix);
+}
 mysql_free_result($result);
 
 $page->run();
similarity index 67%
rename from htdocs/pattecassee.php
rename to htdocs/emails/broken.php
index 3d6d7fa..98cf700 100644 (file)
  *  59 Temple Place, Suite 330, Boston, MA  02111-1307  USA                *
  ***************************************************************************/
 
-require_once("xorg.inc.php");
-new_skinned_page('pattecassee.tpl',AUTH_COOKIE);
+require_once('xorg.inc.php');
+new_skinned_page('emails/broken.tpl',AUTH_COOKIE);
+require_once('emails.inc.php');
     
-function valide_email($str) {
-
-   $em = trim(rtrim($str));
-   $em = str_replace("<", "", $em);
-   $em = str_replace(">", "", $em);
-   list($ident, $dom) = explode("@", $em);
-   if ($dom == "m4x.org" or $dom == "polytechnique.org") {
-       list($ident1) = explode("_", $ident);
-       list($ident) = explode("+", $ident1);
-   }
-   return $ident . "@" . $dom;
-}
-
 if (array_key_exists('email', $_GET) && array_key_exists('action', $_GET)) {
     $email = valide_email($_GET['email']);
     // vérifications d'usage
     $sel = $globals->db->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')
-        WHERE  e.email='$email'");
+            "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) = mysql_fetch_row($sel)) {
        // envoi du mail
        $message = "Bonjour !
@@ -55,11 +44,11 @@ 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 <https://www.polytechnique.org/emails.php> tes adresses
+à 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 <https://www.polytechnique.org/pattecassee.php>.
+consulter la page <{$globals->baseurl}/emails/broken.php>.
 
 
 A bientôt sur Polytechnique.org !
@@ -67,8 +56,8 @@ L'
 
        require_once("diogenes.hermes.inc.php");
        $mail = new HermesMailer();
-       $mail->setFrom('Polytechnique.org <support@polytechnique.org>');
-       $mail->addTo("<$dest@polytechnique.org>");
+       $mail->setFrom('"Polytechnique.org" <support@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();
@@ -77,17 +66,19 @@ L'
 } elseif (array_key_exists('email', $_POST)) {
     $email = valide_email($_POST['email']);
     $page->assign('email',$email);
-    $sel = $globals->db->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 ='$email'
-                        GROUP BY e1.uid");
+    $sel = $globals->db->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 ='$email'
+           GROUP BY  e1.uid");
     if ($x = mysql_fetch_assoc($sel)) {
         // on écrit dans la base que l'adresse est cassée
-        if (!$x['panne'])
+        if (!$x['panne']) {
             $globals->db->query("UPDATE emails SET panne='".date("Y-m-d")."' WHERE email =  '".$email."'");
-        $page->assign_by_ref('x',$x);
+        }
+        $page->assign_by_ref('x', $x);
     }
 }
 
similarity index 86%
rename from htdocs/routage-mail.php
rename to htdocs/emails/redirect.php
index 74ef685..c1d7e7e 100644 (file)
@@ -20,8 +20,8 @@
  ***************************************************************************/
 
 require_once("xorg.inc.php");
-new_skinned_page('routage-mail.tpl',AUTH_MDP);
-require_once("email.classes.inc.php");
+new_skinned_page('emails/redirect.tpl',AUTH_MDP);
+require_once("emails.inc.php");
 
 $redirect = new Redirect($_SESSION['uid']);
 
@@ -44,11 +44,15 @@ if (isset($_REQUEST['emailop'])) {
 $sql = "SELECT  alias
           FROM  virtual
     INNER JOIN  virtual_redirect USING(vid)
-          WHERE redirect='{$_SESSION['forlife']}@m4x.org' AND alias LIKE '%@melix.net'";
+          WHERE (  redirect='{$_SESSION['forlife']}@{$globals->mail->domain}'
+                OR redirect='{$_SESSION['forlife']}@{$globals->mail->domain2}' )
+                AND alias LIKE '%@{$globals->mail->alias_dom}'";
 $res = $globals->db->query($sql);
-list($grx) = mysql_fetch_row($res);
-$page->assign('grx',$grx);
-$page->assign('domaine',substr($grx,0,-3));
+if (mysql_num_rows($res)) {
+    list($melix) = mysql_fetch_row($res);
+    list($melix) = split('@', $melix);
+    $page->assign('melix',$melix);
+}
 
 $page->mysql_assign("SELECT  alias,expire
                        FROM  aliases
index fae9777..549f173 100644 (file)
@@ -88,7 +88,7 @@ if (!empty($_REQUEST['ref'])) {
     $logger->log("inscription",$email);
 
     /****************** insertion de l'email dans la table emails + bogofilter ***/
-    require_once("email.classes.inc.php");
+    require_once("emails.inc.php");
     $redirect = new Redirect($uid);
     $redirect->add_email($email);
     fix_bestalias($uid);
similarity index 81%
rename from include/conf.d/mail.globals.inc.php
rename to include/conf.d/emails.globals.inc.php
index 79e1b42..5362562 100644 (file)
 
 class MailConfig
 {
-    var $domain  = '';
-    var $domain2 = '';
+    var $domain     = '';
+    var $domain2    = '';
+
+    var $alias_dom  = '';
+    var $alias_dom2 = '';
+
+    var $send_form  = true;
+
+    function shorter_domain()
+    {
+        if (empty($this->domain2) || strlen($this->domain2)>strlen($this->domain)) {
+            return $this->domain;
+        } else {
+            return $this->domain2;
+        }
+    }
 }
 
 // }}}
diff --git a/include/conf.d/emails.menu.inc.php b/include/conf.d/emails.menu.inc.php
new file mode 100644 (file)
index 0000000..cf4367b
--- /dev/null
@@ -0,0 +1,9 @@
+<?php
+$this->addPrivateEntry(XOM_CUSTOM,   00, 'Mes emails',            'emails.php');
+
+if ($globals->mail->send_form) {
+    $this->addPrivateEntry(XOM_SERVICES, 00, 'Envoyer un mail',       'sendmail.php');
+}
+
+$this->addPrivateEntry(XOM_SERVICES, 40, 'Patte cassée',          'emails/broken.php');
+?>
index 7af69ab..4cd0a15 100644 (file)
@@ -1,16 +1,12 @@
 <?php
 $this->addPrivateEntry(XOM_NO,       10, 'Page d\'accueil',       'login.php');
 
-$this->addPrivateEntry(XOM_CUSTOM,   00, 'Mes emails',            'emails.php');
 $this->addPrivateEntry(XOM_CUSTOM,   10, 'Mon profil',            'profil.php');
 $this->addPrivateEntry(XOM_CUSTOM,   20, 'Mes contacts',          'carnet/mescontacts.php');
 $this->addPrivateEntry(XOM_CUSTOM,   30, 'Mon carnet',            'carnet/');
 $this->addPrivateEntry(XOM_CUSTOM,   40, 'Mon mot de passe',      'motdepassemd5.php');
 $this->addPrivateEntry(XOM_CUSTOM,   50, 'Mes préférences',       'preferences.php');
 
-$this->addPrivateEntry(XOM_SERVICES, 00, 'Envoyer un mail',       'sendmail.php');
-$this->addPrivateEntry(XOM_SERVICES, 40, 'Patte cassée',          'pattecassee.php');
-       
 $this->addPrivateEntry(XOM_GROUPS,   10, 'Trombi promo',          'trombipromo.php');
 $this->addPrivateEntry(XOM_GROUPS,   20, 'Conseil Pro.',          'referent.php');
 $this->addPrivateEntry(XOM_GROUPS,   30, 'Groupes X',             'http://www.polytechnique.net/plan.php');
similarity index 95%
rename from include/email.classes.inc.php
rename to include/emails.inc.php
index a20a72e..7081cdc 100644 (file)
@@ -70,6 +70,22 @@ function fix_bestalias($uid)
 }
 
 // }}}
+// {{{ function valide_email()
+
+function valide_email($str)
+{
+   $em = trim(rtrim($str));
+   $em = str_replace('<', '', $em);
+   $em = str_replace('>', '', $em);
+   list($ident, $dom) = explode('@', $em);
+   if ($dom == $globals->mail->domain or $dom == $globals->mail->domain2) {
+       list($ident1) = explode('_', $ident);
+       list($ident) = explode('+', $ident1);
+   }
+   return $ident . '@' . $dom;
+}
+
+// }}}
 // {{{ class Bogo
 
 class Bogo
index 5306e1f..c0c504f 100644 (file)
@@ -175,8 +175,8 @@ class Validate
             $globals->db->query("DELETE FROM requests WHERE user_id='{$this->uid}' AND type='{$this->type}'");
         }
        
-        $globals->db->query("INSERT INTO  requests (user_id, type, user_id)
-                                  VALUES  ('{$this->uid}', '{$this->type}, '".addslashes(serialize($this))."')");
+        $globals->db->query("INSERT INTO  requests (user_id, type, data)
+                                  VALUES  ('{$this->uid}', '{$this->type}', '".addslashes(serialize($this))."')");
 
         // au cas où l'objet est réutilisé après un commit, il faut mettre son stamp à jour
         $sql = $globals->db->query("SELECT MAX(stamp) FROM requests
index 650bcc7..b0d3fa3 100644 (file)
@@ -56,8 +56,9 @@ class AliasReq extends Validate
         $sql = $globals->db->query("
                 SELECT  v.alias
                   FROM  virtual_redirect AS vr
-            INNER JOIN  virtual          AS v  ON (v.vid=vr.vid AND v.alias LIKE '%@melix.net')
-                 WHERE  vr.redirect='{$this->forlife}@m4x.org'");
+            INNER JOIN  virtual          AS v  ON (v.vid=vr.vid AND v.alias LIKE '%@{$globals->mail->alias_dom}')
+                 WHERE  vr.redirect='{$this->forlife}@{$globals->mail->domain}'
+                        OR vr.redirect='{$this->forlife}@{$globals->mail->domain2}'");
         if (mysql_num_rows($sql)) {
             list($this->old) = mysql_fetch_row($sql);
         }
@@ -113,12 +114,14 @@ class AliasReq extends Validate
         global $globals;
 
         if ($this->old) {
-            $globals->db->query("UPDATE virtual SET alias='{$this->alias}@melix.net' WHERE alias='{$this->old}'");
+            $globals->db->query("UPDATE virtual SET alias='{$this->alias}@{$globals->mail->alias_dom}' WHERE alias='{$this->old}'");
 
         } else {
-            $globals->db->query("INSERT INTO virtual SET alias='{$this->alias}@melix.net',type='user'");
+            $globals->db->query("INSERT INTO virtual SET alias='{$this->alias}@{$globals->mail->alias_dom}',type='user'");
             $vid = mysql_insert_id();
-            $globals->db->query("INSERT INTO virtual_redirect (vid,redirect) VALUES ($vid,'{$this->forlife}@m4x.org')");
+            require_once('emails.inc.php');
+            $dom = $globals->mail->shorter_domain();
+            $globals->db->query("INSERT INTO virtual_redirect (vid,redirect) VALUES ($vid,'{$this->forlife}@$dom')");
         }
     }
 
similarity index 58%
rename from install.d/mail/files
rename to install.d/emails/files
index ca25672..4863df1 100644 (file)
@@ -1,21 +1,20 @@
-htdocs/admin/newsletter_pattecassee.php
+bin/emails.broken.php
 htdocs/alias.php
 htdocs/antispam.php
+htdocs/emails/broken.php
 htdocs/emails.php
-htdocs/pattecassee.php
-htdocs/routage-mail.php
-htdocs/sendmail.php
-include/email.classes.inc.php
+htdocs/emails/redirect.php
+include/emails.inc.php
 include/validations/aliases.inc.php
-templates/admin/newsletter_pattecassee.tpl
 templates/alias.tpl
 templates/antispam.tpl
+templates/emails/redirect.tpl
 templates/emails.tpl
+templates/emailx/broken.tpl
 templates/include/form.valid.aliases.tpl
-templates/mails/pattecasser.nl.tpl
 templates/mails/valid.alias.tpl
-templates/pattecassee.tpl
 templates/preferences.tpl.d/10.mails.tpl
 templates/preferences.tpl.d/20.alias.tpl
-templates/routage-mail.tpl
+
+htdocs/sendmail.php
 templates/sendmail.tpl
diff --git a/templates/admin/newsletter_pattecassee.tpl b/templates/admin/newsletter_pattecassee.tpl
deleted file mode 100644 (file)
index 7f3a728..0000000
+++ /dev/null
@@ -1,76 +0,0 @@
-{***************************************************************************
- *  Copyright (C) 2003-2004 Polytechnique.org                              *
- *  http://opensource.polytechnique.org/                                   *
- *                                                                         *
- *  This program is free software; you can redistribute it and/or modify   *
- *  it under the terms of the GNU General Public License as published by   *
- *  the Free Software Foundation; either version 2 of the License, or      *
- *  (at your option) any later version.                                    *
- *                                                                         *
- *  This program is distributed in the hope that it will be useful,        *
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of         *
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the          *
- *  GNU General Public License for more details.                           *
- *                                                                         *
- *  You should have received a copy of the GNU General Public License      *
- *  along with this program; if not, write to the Free Software            *
- *  Foundation, Inc.,                                                      *
- *  59 Temple Place, Suite 330, Boston, MA  02111-1307  USA                *
- ***************************************************************************}
-
-
-<h1>
-  Vérifier une patte cassée suite à l'envoi de la newsletter
-</h1>
-
-{dynamic}
-
-{$erreur}
-
-{if $smarty.post.email}
-
-{if $no_more}
-  <p class="erreur">
-  Désolé mais plus personne n'utilise l'adresse {$email} comme adresse de redirection.
-  Il est donc probable que ce problème de redirection ait été corrigé.
-  </p>
-{elseif $nb_emails}
-  <p class="erreur">
-  <a href="{"fiche.php?user=$forlife"|url}">{"$prenom $nom (X$promo)"}</a>
-  a à l'heure actuelle {$nb_emails} adresse(s) email(s) de redirection active(s)
-  en dehors de celle que tu as indiquée.
-  Cela ne veut pas forcément dire qu'il les avait déjà activées
-  lorsque la newsletter a été envoyée, mais c'est fort probable.
-  </p>
-  <p class="erreur">
-  Pour lui envoyer un mail qui l'avertira de son adresse en panne,
-  <a href="{$smarty.server.PHP_SELF}?email={$email}&amp;action=mail">il suffit de cliquer !</a>
-  </p>
-{else}
-  <p class="erreur">
-  Désolé, mais <a href="{"fiche.php?user=$forlife"|url}">{"$prenom $nom (X$promo)"}</a>,
-  n'a actuellement aucune adresse email de redirection active
-  autre que celle que tu viens de rentrer.
-  L'idéal serait de contacter son kessier de promo pour l'en avertir
-  et essayer de retrouver la trace de ce camarade !!
-  </p>
-{/if}
-
-{/if}
-
-{/dynamic}
-
-<p>
-Rentre dans la zone de saisie ci-dessous l'adresse email qui est revenue
-en erreur suite à la distribution de la newsletter :
-</p>
-<br />
-<form action="{$smarty.server.PHP_SELF}" method="post">
-  <table class="tinybicol" cellpadding="3" summary="Saisie email en panne">
-    <tr><th>Adresse email défectueuse</th></tr>
-    <tr><td class="center"><input type="text" name="email" size="40" maxlength="70" /></td></tr>
-    <tr><td class="center"><input type="submit" value="Ok" /></td></tr>
-  </table>
-</form>
-
-{* vim:set et sw=2 sts=2 sws=2: *}
index 67a0ed6..7a04952 100644 (file)
@@ -21,8 +21,8 @@
 
 {if $success}
   <p>
-    a demande de création des alias <strong>{dyn s=$success}@melix.net</strong> et
-    <strong>{dyn s=$success}@melix.org</strong> a bien été enregistrée. Après
+  a demande de création des alias <strong>{dyn s=$success}@{#globals.mail.alias_dom#}</strong> et
+  <strong>{dyn s=$success}@{#globals.mail.alias_dom2#}</strong> a bien été enregistrée. Après
     vérification, tu recevras un mail te signalant l'ouverture de ces adresses.
   </p>
   <p>
@@ -43,7 +43,7 @@
   </p>
   <p>
     Pour de plus amples informations sur ce service, nous t'invitons à consulter
-    <a href="{"docs/doc_melix.php"|url}">cette documentation</a> qui répondra
+    <a href="{rel}/docs/doc_melix.php">cette documentation</a> qui répondra
     sans doute à toutes tes questions
   </p>
 
@@ -71,7 +71,7 @@
         <td>Alias demandé :</td>
       </tr>
       <tr>
-        <td><input type="text" name="alias" value="{dyn s=$r_alias}" />@melix.net et @melix.org</td>
+        <td><input type="text" name="alias" value="{dyn s=$r_alias}" />@{#globals.mail.alias_dom#} et @{#globals.mail.alias_dom2#}</td>
       </tr>
       <tr>
         <td>Brève explication :</td>
index 78a5a6e..ccc946c 100644 (file)
@@ -36,7 +36,7 @@
         <div>
           {foreach from=$aliases item=a}
           <input type='radio' {if $a.best}checked="checked"{/if} name='best' value='{$a.alias}' onclick='this.form.submit()' />
-          {if $a.a_vie}(*){/if} <strong>{$a.alias}</strong>@polytechnique.org et @m4x.org 
+          {if $a.a_vie}(*){/if} <strong>{$a.alias}</strong>@{#globals.mail.domain#} et @{#globals.mail.domain2#}
           {if $a.expire}<span class='erreur'>(expire le {$a.expire|date_format:"%d %b %Y"})</span>{/if}
           <br />
           {/foreach}
   <tr class="pair">
     <td>
       (M4X signifie <em>mail for X</em>, son intérêt est de te doter d'une adresse à vie
-      moins "voyante" que l'adresse @polytechnique.org).
-    </td>
-  </tr>
-  <tr class="impair">
-    <td>
-      Elles seront prochainement <strong>complétées d'une adresse @polytechnique.edu</strong>,
-      plus lisible dans les pays du monde où "Polytechnique" n'évoque pas grand chose,
-      .edu étant le suffixe propre aux universités et établissements d'enseignement supérieur.
+      moins "voyante" que l'adresse @{#globals.mail.domain#}).
     </td>
   </tr>
 </table>
 
 <p class="smaller">
-(*) l'adresse email marquée d'une (*) t'est réservée pour une période 100 ans après ton entrée à l'X (dans ton cas, jusqu'en {$smarty.session.promo+100}).
-Les autres te sont attribuées a priori à vie, sauf si tu venais à avoir un homonyme X. Dans ce cas, ni ton homonyme ni toi-même n'auriez d'autres adresses que celles de la forme prenom.nom.promo@polytechnique.org.
+(*) l'adresse email marquée d'une (*) t'est réservée pour une période 100 ans après ton entrée à l'X (dans ton cas, jusqu'en
+{$smarty.session.promo+100}).  Les autres te sont attribuées a priori à vie, sauf si tu venais à avoir un homonyme X. Dans ce cas, ni ton
+homonyme ni toi-même n'auriez d'autres adresses que celles de la forme prenom.nom.promo@{#globals.mail.domain#}.
 </p>
 
 
@@ -84,7 +78,7 @@ Les autres te sont attribu
         {/section}
       </ul>
       Si tu souhaites <strong>modifier ce reroutage de ton courrier,</strong>
-      <a href="{"routage-mail.php"|url}">il te suffit de te rendre ici !</a>
+      <a href="{rel}/emails/redirect.php">il te suffit de te rendre ici !</a>
     </td>
   </tr>
 </table>
@@ -114,22 +108,23 @@ Les autres te sont attribu
 
 <table class="bicol">
   <tr>
-    <th>Un alias sympatique : melix !</th>
+    <th>Un alias sympatique : {#globals.mail.alias_dom#} !</th>
   </tr>
   <tr class="pair">
     <td>
-      Tu peux ouvrir en supplément une adresse synonyme de ton adresse @polytechnique.org, 
-      sur les domaines @melix.org et @melix.net (melix = Mél X).
+      Tu peux ouvrir en supplément une adresse synonyme de ton adresse @{#globals.mail.domain#},
+      sur les domaines @{#globals.mail.alias_dom#} et @{#globals.mail.alias_dom2#} (melix = Mél X).
     </td>
   </tr>
   <tr class="impair">
     <td>
       {if $melix}
-      Tu disposes à l'heure actuelle des adresses <strong>{$melix}net</strong> et <strong>{$melix}org</strong>.
-      Pour <strong>demander à la place un autre alias melix</strong>,
+      Tu disposes à l'heure actuelle des adresses <strong>{$melix}@{#globals.mail.alias_dom#}</strong>
+      et <strong>{$melix}@{#globals.mail.alias_dom2#}</strong>.
+      Pour <strong>demander à la place un autre alias @{#globals.mail.alias_dom#}</strong>,
       <a href="alias.php">il te suffit de te rendre ici</a>
       {else}
-      A l'heure actuelle <strong>tu n'as pas activé d'adresse melix</strong>.
+      A l'heure actuelle <strong>tu n'as pas activé d'adresse @{#globals.mail.alias_dom#}</strong>.
       Si tu souhaites le faire, <a href="alias.php">il te suffit de venir ici</a>
       {/if}
     </td>
similarity index 83%
rename from templates/pattecassee.tpl
rename to templates/emails/broken.tpl
index 771f1bb..0b55606 100644 (file)
  ***************************************************************************}
 
 
-{dynamic on="0$erreur"}
+{dynamic}
+
+{if $erreur}
 <p class="erreur">{$erreur}</p>
-{/dynamic}
+{/if}
 
-<h1>
-  Vérifier une patte cassée
-</h1>
+<h1>Vérifier une patte cassée</h1>
 
-{dynamic}
 {if $x && $x.nb_mails}
-  <p class="erreur">
-    Ton correspondant a à l'heure actuelle {$x.nb_mails} adresse(s) email(s) de redirection active(s)
-    en dehors de celle que tu nous as communiquée. Cela ne veut pas forcément dire qu'il les avait
+  <p>
+    Ton correspondant a à l'heure actuelle <span class="erreur">{$x.nb_mails} adresse(s) email(s) de redirection active(s)
+    en dehors de celle que tu nous as communiquée</span>. Cela ne veut pas forcément dire qu'il les avait
     déjà activées lorsque tu as envoyé ton email, mais c'est fort probable.
   </p>
-  <p class="erreur">
+  <p>
     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,
-    <a href="{$smarty.server.PHP_SELF}?email={$email}&amp;action=mail">clique sur ce lien</a>.
+    <a href="?email={$email}&amp;action=mail">clique sur ce lien</a>.
   </p>
 {elseif $x}
-  <p class="erreur">
+  <p>
     Désolé, mais ton correspondant, {$x.prenom} {$x.nom} (X{$x.promo}),
-    n'a actuellement aucune adresse email de redirection active autre que celle que tu viens de rentrer.
+    n'a actuellement <span class="erreur">aucune adresse email de redirection 
+      active autre que celle que tu viens de rentrer.</span>
     Nous t'invitons à prendre contact avec lui autrement que par email,
     l'idéal étant de l'informer si possible que sa patte Polytechnique.org est cassée...!
   </p>
@@ -67,7 +67,7 @@
 </p>
 <p>
     Pour plus d'explications concernant cette page, nous t'invitons à consulter
-    la <a href="{"docs/doc_patte_cassee.php"|url}">documentation suivante</a>
+    la <a href="{rel}/docs/doc_patte_cassee.php">documentation suivante</a>
 </p>
 <p>
     Rentre dans la zone de saisie ci-dessous l'adresse email à laquelle ton
@@ -83,7 +83,7 @@
       <th>Adresse email défectueuse</th>
     </tr>
     <tr>
-      <td><input type="text" name="email" size="50" maxlength="50" /></td>
+      <td class='center'><input type="text" name="email" size="60" /></td>
     </tr>
     <tr>
       <td class="center"><input type="submit" value="Ok" /></td>
similarity index 87%
rename from templates/routage-mail.tpl
rename to templates/emails/redirect.tpl
index 4a99f5b..defd1f9 100644 (file)
@@ -22,7 +22,7 @@
 {if $retour == $smarty.const.ERROR_INACTIVE_REDIRECTION}
   <p class="erreur">
   Tu ne peux pas avoir aucune adresse de redirection active, sinon ton adresse
-  {$smarty.session.forlife}@polytechnique.org ne fonctionnerait plus.
+  {$smarty.session.forlife}@{#globals.mail.domain#} ne fonctionnerait plus.
   </p>
 {/if}
 {if $retour == $smarty.const.ERROR_INVALID_EMAIL}
@@ -32,9 +32,9 @@
 {/if}
 {if $retour == $smarty.const.ERROR_LOOP_EMAIL}
   <p class="erreur">
-  Erreur: {$smarty.session.forlife}@polytechnique.org doit renvoyer vers un email
+  Erreur: {$smarty.session.forlife}@{#globals.mail.domain#} doit renvoyer vers un email
   existant valide. En particulier, il ne peut pas être renvoyé vers lui-même,
-  ni son équivalent en m4x.org, ni vers son équivalent polytechnique.edu.
+  ni son équivalent en {#globals.mail.domain2#}.
   </p>
 {/if}
 {if $mtic == 1}
   Tu configures ici les adresses emails vers lesquelles tes adresses (listées ci-dessous) sont dirigées :
   </p>
   <ul>
-    {if $grx neq ""}<li><strong>{$grx}</strong>, <strong>{$domaine}org</strong></li>{/if}
+    {if $melix}
+    <li>
+    <strong>{$melix}@{#globals.mail.alias_dom#}</strong>,
+    <strong>{$melix}@{#globals.mail.alias_dom2#}</strong>
+    </li>
+    {/if}
     {foreach from=$alias item=a}
     <li>
-    <strong>{$a.alias}@polytechnique.org</strong>
+    <strong>{$a.alias}@{#globals.mail.domain#}</strong>
     {if $a.expire}<span class='erreur'>(expire le {$a.expire|date_format:"%d %b %Y"})</span>{/if}
     </li>
     {/foreach}
@@ -68,9 +73,9 @@
   </p>
   <p>
     Enfin, la réécriture consiste à substituer à ton adresse email habituelle
-    (adresse wanadoo, yahoo, free, ou autre) ton adresse polytechnique.org ou
-    m4x.org dans l'adresse d'expédition de tes messages, lorsque tu écris
-    à un camarade sur son adresse polytechnique.org.
+    (adresse wanadoo, yahoo, free, ou autre) ton adresse {#globals.mail.domain#} ou
+    {#globals.mail.domain2#} dans l'adresse d'expédition de tes messages, lorsque tu écris
+    à un camarade sur son adresse {#globals.mail.domain#}.
   </p>
   <div class="center">
     <table class="bicol" summary="Adresses de redirection">
index 8e4b000..7745e03 100644 (file)
@@ -31,7 +31,7 @@
     </tr>
     <tr>
       <td>Nouvel&nbsp;alias&nbsp;:</td>
-      <td>{$valid->alias}@melix.net</td>
+      <td>{$valid->alias}@{#globals.mail.alias_dom}</td>
     </tr>
     <tr>
       <td>Motif :</td>
diff --git a/templates/mails/pattecasser.nl.tpl b/templates/mails/pattecasser.nl.tpl
deleted file mode 100644 (file)
index 41e17cb..0000000
+++ /dev/null
@@ -1,38 +0,0 @@
-{***************************************************************************
- *  Copyright (C) 2003-2004 Polytechnique.org                              *
- *  http://opensource.polytechnique.org/                                   *
- *                                                                         *
- *  This program is free software; you can redistribute it and/or modify   *
- *  it under the terms of the GNU General Public License as published by   *
- *  the Free Software Foundation; either version 2 of the License, or      *
- *  (at your option) any later version.                                    *
- *                                                                         *
- *  This program is distributed in the hope that it will be useful,        *
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of         *
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the          *
- *  GNU General Public License for more details.                           *
- *                                                                         *
- *  You should have received a copy of the GNU General Public License      *
- *  along with this program; if not, write to the Free Software            *
- *  Foundation, Inc.,                                                      *
- *  59 Temple Place, Suite 330, Boston, MA  02111-1307  USA                *
- ***************************************************************************}
-
-{config_load file="mails.conf" section="pattecassee_nl"}
-{subject text="Une de tes adresses de redirection Polytechnique.org ne marche plus !!"}
-{from full=#from#}
-{to addr=$dest}
-
-  Bonjour !
-       
-  Nous t'écrivons car lors de l'envoi de la lettre d'information mensuelle de Polytechnique.org à ton adresse polytechnicienne {$dest}@polytechnique.org, l'adresse {$email}, sur laquelle tu rediriges ton courrier, ne fonctionnait pas.
-  Estimant que cette information serait susceptible de t'intéresser, nous avons préféré t'en informer. Il n'est pas impossible qu'il ne s'agisse que d'une panne temporaire.
-  Si tu souhaites changer la liste des adresses sur lesquelles tu reçois le courrier qui t'es envoyé à ton adresse polytechnicienne, il te suffit de te rendre sur la page :
-  https://www.polytechnique.org/emails.php
-  
-  A bientôt sur Polytechnique.org !
-  L'équipe d'administration <support@polytechnique.org>
-  
-  PS : si jamais tu ne disposes plus du mot de passe te permettant d'accéder au site, rends toi sur la page https://www.polytechnique.org/recovery.php ; elle te permettra de créer un nouveau mot de passe après avoir rentré ton login ({$dest}) et ta date de naissance !";
-  
-{* vim:set et sw=2 sts=2 sws=2: *}
index 8d45096..3e891a4 100644 (file)
  *  59 Temple Place, Suite 330, Boston, MA  02111-1307  USA                *
  ***************************************************************************}
 
-<h3><a href="{rel}/alias.php">Mon alias mail @melix.net/.org</a></h3>
+{if #globals.mail.alias_dom#}
+<h3><a href="{rel}/alias.php">Mon alias mail {#globals.mail.alias_dom#}</a></h3>
 <div class='explication'>
-  Pour choisir un alias @melix.net et @melix.org (en choisir un nouveau annule l'ancien).
+  Pour choisir un alias {#globals.mail.alias_dom#} et {#globals.mail.alias_dom2#} (en choisir un nouveau annule l'ancien).
 </div>
+{/if}
 
 {* vim:set et sw=2 sts=2 sws=2: *}