mise en place d'une classe de mailer en _templates_.
authorx2000habouzit <x2000habouzit>
Thu, 5 Feb 2004 18:00:20 +0000 (18:00 +0000)
committerx2000habouzit <x2000habouzit>
Thu, 5 Feb 2004 18:00:20 +0000 (18:00 +0000)
j'ai passé ainsi la validation des alias avec des _configs_ prorpres.
j'ai détruit une config de guillaume (à savoir melix.net est  nouveau en dur, mais c'est un détail par rapport aux pbs résolus ainsi).

il reste à passer les valid_* sur le même principe (la conf se faisant dans mails.conf)

voilà, je vous laisse regarder tout ca, y'a du bon boulot de fait, c _vraiment_ dans l'esprit templates comme ca.

PS: le fonctionnement est pas forcément très intuitif, regardez le tempalte du mail pour comprendre, je ferai une doc un de ces jours ...
PPS: je sais que le retour en arrière p/r au boulot de guillaume est pas sympa, mais c pas censé rester comme ca, je reviendrai à une conf propre bien entendu ! mais je pense que ce genre de choses doivent êtr dans un fichier style globals.conf et être toujours loadé par les pages Xorg* donc c'est un nouveau morceau de dev que je n'ai pas voulu faire

configs/mails.conf [new file with mode: 0644]
configs/valid.conf.php
etat_migration
include/auto.prepend.inc.php
include/tpl.mailer.inc.php [new file with mode: 0644]
include/valid_aliases.inc.php
templates/mails/valid.alias.tpl [new file with mode: 0644]

diff --git a/configs/mails.conf b/configs/mails.conf
new file mode 100644 (file)
index 0000000..fd86546
--- /dev/null
@@ -0,0 +1,3 @@
+[valid_alias]
+from=Equipe Polytechnique.org <validation+melix@polytechnique.org>
+cc=Equipe Polytechnique.org <validation+melix@polytechnique.org>
index ba66bbf..5e5858e 100644 (file)
@@ -1,60 +1,4 @@
 <?
-/*** Validation des alias **/
-
-// Adresse d'alias telle qu'elle apparaîtra dans la base de données
-function addr_alias($nomAlias) {
-    global $globals ;
-    return $nomAlias.'@'.$globals->domaine_mail_alias[0] ;
-}
-
-function from_mail_valid_alias() {
-    global $globals ;
-    return "Equipe Polytechnique.org <".$globals->addr_mail_valid_alias.">" ; 
-}
-
-function to_mail_valid_alias ($nomUser) {
-    global $globals ;
-    return $nomUser.'@'.$globals->domaine_mail ;
-}
-
-function subject_mail_valid_alias ($nomUser,$nomAlias) {
-    global $globals ;
-    return  "[Polytechnique.org/MELIX] Demande de l'alias ".
-            addr_alias($nomAlias)." par $nomUser" ;
-}
-
-function cc_mail_valid_alias() {
-    global $globals ;
-    return $globals->addr_mail_valid_alias ;
-}
-
-function msg_valid_alias_OK ($nomAlias) {
-    global $globals ;
-    $msg =  "Cher(e) camarade,\n".
-            "\n".
-            "  Les adresses e-mail $nomAlias@melix.net et $nomAlias@melix.org que ".
-            "tu avais demandées viennent d'être créées, tu peux désormais les ".
-            "utiliser à ta convenance.\n".
-            "\n".
-            "Cordialement,\n".
-            "L'équipe X.org" ;
-    return $msg ;
-}
-
-function msg_valid_alias_NON ($nomAlias,$motif) {
-    $msg =  "Cher(e) camarade,\n".
-            "\n".
-            "  La demande que tu avais faite pour les alias $nomAlias@melix.net et $nomAlias@melix.org ".
-            "a été refusée pour la raison suivante :\n".
-            $motif.
-            "\n".
-            "Cordialement,\n".
-            "L'équipe X.org" ;
-    return $msg ;
-}
-
-
-
 /*** Validation des offres d'emploi ***/
 
 function from_mail_valid_emploi() {
index c9e3794..ed8fbbd 100644 (file)
@@ -134,15 +134,15 @@ Etat  | Ancien nom                                                                  | Nouveau nom
 !!!      | news/thread.php                                                       | /
 !!!      | confbanana.php                                                        | -> dépend de banana, à passer plus tard ...
 ------+-[ trackers ]------------------------------+----------------
- x       | trackers/tracker_show.php                             | -
- x       | trackers/tracker_show_rq.php                          | -
+         | trackers/tracker_show.php                             | -
+         | trackers/tracker_show_rq.php                          | -
+         | trackers/index.php                                            | -
+         | trackers/tracker_admin.php                            | -
 ------+-------------------------------------------+----------------
 @@@      | groupex/donne-chall.php                                       | -
 @@@      | groupex/export-econfiance.php                         | -
 x        | epouse.php                                                            | -
 x        | parselog.php                                                          | stats/...
-x        | trackers/index.php                                            | -
-x        | trackers/tracker_admin.php                            | -
 xx       | AccesPermanentOff.php                                         | cookie_off.php
 xx       | AccesPermanentOn.php                                          | cookie_on.php
 xx       | acces_redirect.php                                            | carva_redirect.php
index cdfb162..785714a 100644 (file)
@@ -23,6 +23,7 @@ function _new_page($type, $tpl_name, $tpl_head, $min_auth, $popup=false, $admin=
     $page->template_dir = $globals->spoolroot . "/templates/";
     $page->compile_dir  = $globals->spoolroot . "/templates_c/";
     $page->plugins_dir[]= $globals->spoolroot . "/plugins/";
+    $page->config_dir   = $globals->spoolroot . "/configs/";
     $page->cache_dir    = $globals->spoolroot . "/cache/";
 
     $page->assign('xorg_head', $tpl_head);
diff --git a/include/tpl.mailer.inc.php b/include/tpl.mailer.inc.php
new file mode 100644 (file)
index 0000000..81d7870
--- /dev/null
@@ -0,0 +1,65 @@
+<?php
+require_once("diogenes.mailer.inc.php");
+require_once("Smarty.class.php");
+
+/** Classe de mail avec corps en templates.
+ */
+class TplMailer extends Smarty {
+    var $mail_dir = "mails";
+    var $_tpl;
+
+    var $_from;
+    var $_to  = Array();
+    var $_cc  = Array();
+    var $_bcc = Array();
+    var $_subject;
+    
+    function TplMailer($tpl) {
+        global $globals;
+        $this->_tpl = $tpl;
+        $this->caching=false;
+        $this->compile_check=true;
+
+        $this->template_dir = $globals->spoolroot . "/templates/";
+        $this->compile_dir  = $globals->spoolroot . "/templates_c/";
+        $this->config_dir   = $globals->spoolroot . "/configs/";
+
+        $this->register_outputfilter('mail_format');
+        $this->register_function('from', 'set_from');
+        $this->register_function('to', 'set_to');
+        $this->register_function('cc', 'set_cc');
+        $this->register_function('bcc', 'set_bcc');
+        $this->register_function('subject', 'set_subject');
+    }
+
+    function send() {
+        $body = $this->fetch($this->mail_dir."/".$this->_tpl);
+        $mailer = new DiogenesMailer($this->_from, implode(',',$this->_to),
+                                     $this->_subject, false,
+                                     implode(',',$this->_cc), implode(',',$this->_bcc));
+        $mailer->setBody($body);
+        $mailer->send();
+    }
+}
+
+function mail_format($output, &$smarty) {
+    return wordwrap("\n".trim($output)."\n",75);
+}
+
+function format_addr(&$params) {
+    if(isset($params['full']))
+        return $params['full'];
+    if(empty($params['text']))
+        return $params['addr'];
+    else
+        return $params['text'].' <'.$params['addr'].'>';
+}
+
+function set_from($params, &$smarty) { $smarty->_from  = format_addr($params); }
+function set_to($params, &$smarty)   { $smarty->_to[]  = format_addr($params); }
+function set_cc($params, &$smarty)   { $smarty->_cc[]  = format_addr($params); }
+function set_bcc($params, &$smarty)  { $smarty->_bcc[] = format_addr($params); }
+function set_subject($params, &$smarty) {
+    $smarty->_subject = $params['text'];
+}
+?>
index be61ed9..d4c1bd1 100644 (file)
@@ -27,7 +27,7 @@ class AliasReq extends Validate {
     function formu() {
         $old = $this->old ? "({$this->old})" : "";
         $raison = nl2br(stripslashes(htmlentities($this->raison)));
-        $newAlias = addr_alias( $this->alias ) ; 
+        $newAlias = $this->alias.'@melix.net';
         return <<<________EOF
         <form action="{$_SERVER['PHP_SELF']}" method="POST">
         <input type="hidden" name="uid" value="{$this->uid}" />
@@ -75,22 +75,18 @@ ________EOF;
                 || ($_REQUEST['submit']!="Accepter"    && $_REQUEST['submit']!="Refuser"))
             return false;
 
-        require_once("diogenes.mailer.inc.php");
-        $mymail = new DiogenesMailer(
-                from_mail_valid_alias(),
-                to_mail_valid_alias( $this->username ),
-                subject_mail_valid_alias( $this->username , $this->alias ),
-                false,
-                cc_mail_valid_alias());
+        require_once("tpl.mailer.inc.php");
+        $mymail = new TplMailer('valid.alias.tpl');
+        $mymail->assign('alias', $this->alias);
+        $mymail->assign('username', $this->username);
 
         if($_REQUEST['submit']=="Accepter") {
+            $mymail->assign('answer', 'yes');
             $this->commit() ; 
-            $message = msg_valid_alias_OK( $this->alias ) ;
-        } else
-            $message = msg_valid_alias_NON( $this->alias , stripslashes($_REQUEST["motif"]) ) ;
-
-        $message = wordwrap($message,78);  
-        $mymail->setBody($message);
+        } else {
+            $mymail->assign('answer', 'no');
+            $mymail->assign('motif', stripslashes($_REQUEST['motif']));
+        }
         $mymail->send();
         //Suppression de la demande
         $this->clean();
@@ -101,7 +97,7 @@ ________EOF;
         global $no_update_bd;
         if($no_update_bd) return false;
 
-        $domain=addr_alias( $this->alias ) ;
+        $domain=$this->alias.'@melix.net';
         mysql_query("DELETE FROM groupex.aliases WHERE id=12 AND email='{$this->username}'");
         mysql_query("INSERT INTO groupex.aliases SET email='{$this->username}',domain='$domain',id=12");         
     }
diff --git a/templates/mails/valid.alias.tpl b/templates/mails/valid.alias.tpl
new file mode 100644 (file)
index 0000000..e6ec228
--- /dev/null
@@ -0,0 +1,24 @@
+{* $Id: valid.alias.tpl,v 1.1 2004-02-05 18:00:21 x2000habouzit Exp $ *}
+{config_load file="mails.conf" section="valid_alias"}
+{subject text="[Polytechnique.org/MELIX] Demande de l'alias $alias@melix.net par $username"}
+{from full=#from#}
+{to addr="$username@polytechnique.org"}
+{cc full=#cc#}
+{if $answer eq "yes"}
+Cher(e) camarade,
+
+  Les adresses e-mail {$alias}@melix.net et {$alias}@melix.org que tu avais demandées viennent d'être créées, tu peux désormais les utiliser à ta convenance.
+
+Cordialement,
+L'équipe X.org
+{elseif $answer eq 'no'}
+
+Cher(e) camarade,
+
+  La demande que tu avais faite pour les alias {$alias}@melix.net et {$alias}@melix.org a été refusée pour la raison suivante :
+{$motif}
+
+Cordialement,
+L'équipe X.org
+{/if}
+{* vim:set nocindent noautoindent textwidth=0: *}