source: spip-zone/_plugins_/ma-lettre/trunk/formulaires/envoi_malettre.php @ 61947

Last change on this file since 61947 was 61947, checked in by erational@…, 9 years ago

calages & noms de variables sur l'envoi

File size: 10.7 KB
Line 
1<?php
2/**
3 * Formulaire pour envoi la lettre (avec ou sa facteur)
4 */
5
6include_spip('inc/actions');
7include_spip('inc/editer');
8include_spip('inc/distant');
9
10
11/**
12 * Chargement des valeurs par défaut du formulaire 
13 */
14function formulaires_envoi_malettre_charger_dist(){
15  if (_request('lettre_title'))
16                         $lettre_title = strip_tags(_request('lettre_title'));
17                  else   $lettre_title = "";
18
19
20  $sourcehtml = recuperer_page(lire_meta("adresse_site")."/IMG/lettre/.malettre.html");
21  $sourcetxt = recuperer_page(lire_meta("adresse_site")."/IMG/lettre/.malettre_txt.html");
22
23  $contexte = array(
24    'lettre_title'=>$lettre_title,
25    'expediteur' => '',
26    'expediteur_more' => '',
27    'desti' => '',
28    'desti_more' => '',
29    'sourcehtml'=>$sourcehtml,
30    'sourcetxt'=>$sourcetxt   
31    );
32   
33        return $contexte; 
34 
35}
36
37/**
38 * Vérification des valeurs du formulaire
39 */
40function formulaires_envoi_malettre_verifier_dist(){
41        $erreurs = array();
42 
43  if (_request('lettre_title')=="")
44         $erreurs['lettre_title'] = _T("malettre:obligatoire");
45  if ((_request('expediteur')=="") AND (_request('expediteur_more')==""))
46         $erreurs['expediteur'] = _T("malettre:obligatoire");       
47  if ((_request('desti')=="") AND (_request('desti_more')==""))
48         $erreurs['desti'] = _T("malettre:obligatoire");       
49         
50        return $erreurs;
51}
52
53/**
54 * Traitement des valeurs du formulaire
55 */
56function formulaires_envoi_malettre_traiter_dist(){
57
58  include_spip("inc/charsets"); 
59  include_spip("inc_presentation");
60  include_spip('inc/config');
61
62 
63  $message = "";
64 
65  // --------------------------------
66            // chemin
67            $path = _DIR_IMG;
68            $path_archive = "lettre";
69            $path_archive_full = $path.$path_archive;
70            $path_url = lire_meta("adresse_site");
71            $path_url_archive = $path_url."/IMG";
72         
73            $p=explode(basename(_DIR_PLUGINS)."/",str_replace('\\','/',realpath(dirname(__file__))));
74            define('_DIR_PLUGIN_MALETTRE',(_DIR_PLUGINS.end($p)));
75            $path_plugin = dirname(__file__)."/../";
76 
77 
78                      //
79                  // envoi de la lettre
80                  //
81           
82            // lang
83            $lang = _request('lang_select');
84            if ($lang=="") 
85                          $lang = $GLOBALS['meta']['langue_site'];
86                       
87                        // titre
88                        $lettre_title = trim(strip_tags(_request('lettre_title'))); 
89            $lettre_title = str_replace("\"","'", $lettre_title); 
90            if ($lettre_title == "") {  // à supprimer ou integrer ou multilingue ?
91              $months=array(1=>'Janvier', 2=>'Fevrier', 3=>'Mars', 4=>'Avril', 5=>'Mai', 6=>'Juin', 7=>'Juillet', 8=>'Aout', 9=>'Septembre', 10=>'Octobre', 11=>'Novembre', 12=>'Decembre');
92              $today = getdate(mktime()-(24*3600));
93              $sujet = "Les nouveautes de ".$months[$today[mon]]." ".date("Y");
94            } else {
95              $sujet = $lettre_title;
96            }
97           
98           
99            // hash           
100            $lettre_hash = substr(md5(time()),0,5);
101            $url_lettre_archive_short = "lettre_".date("Ymd")."_".$lettre_hash."_"._request('lang_select').".html";
102            $url_lettre_archive_txt_short = "lettre_".date("Ymd")."_".$lettre_hash."_"._request('lang_select').".txt";
103            $url_lettre_archive = "$path_url_archive/$path_archive/$url_lettre_archive_short";
104            $url_lettre_archive_txt = "$path_url_archive/$path_archive/$url_lettre_archive_txt_short";
105           
106            // recup contenu HTML
107            $texte = $path_archive_full."/.malettre.html";
108            $fr=fopen($texte,"r");
109            while(!feof($fr)){
110                  $recup = '';
111                  while(!feof($fr)) 
112                          $recup .= fgets($fr,1024);
113            }
114            fclose($fr);
115            $recup = str_replace("{URL_MALETTRE}",$url_lettre_archive,$recup);
116            $recup = str_replace("{TITRE_MALETTRE}",$sujet,$recup);
117           
118            // recup contenu TXT
119            $texte = $path_archive_full."/.malettre_txt.html";
120            $fr=fopen($texte,"r");
121            while(!feof($fr)){
122                  $recup_txt = '';
123                  while(!feof($fr))
124                        $recup_txt .= fgets($fr,1024);
125            }
126            fclose($fr);
127            $recup_txt = str_replace("{URL_MALETTRE}",$url_lettre_archive,$recup_txt);
128           
129            // recup  expediteur
130            $exp_email = _request('expediteur_more');
131            if ($exp_email=="") {
132               $id_expediteur = intval(substr(_request('expediteur'),1)); 
133                $exp_name  = lire_config("malettre/expediteur_nom$id_expediteur"); 
134                $exp_email = lire_config("malettre/expediteur_email$id_expediteur");
135                if ($exp_email=="") 
136                   die("expediteur inconnu");               
137            } else {
138              $exp_name = $exp_email;               
139            } 
140           
141               
142            // recup destinataire
143            $destinataire = array();
144            $desti = _request('desti');
145            foreach ($desti as $desti_item) {     // on lit la config pour retrouver l'email
146                $id_desti = intval(substr($desti_item,1)); 
147                $desti_email = lire_config("malettre/adresse_email$id_desti"); 
148                if ($desti_email !="") 
149                      $destinataire[] = $desti_email;           
150            }
151           
152            $desti_more = _request('desti_more'); 
153            if ($desti_more!="") $destinataire[] = $desti_more;
154             /*    FIXME:   a finaliser : if (!defined('_DIR_PLUGIN_MESABONNES ...
155            if (_request('mes_abonnes')=='oui') {
156                if ($resultats = sql_select('email', 'spip_mesabonnes')) {
157                        while ($res = sql_fetch($resultats))
158                                            $desti[] = $res['email'];                   
159                }
160            }
161             */
162           
163           
164            $message = "<h3>"._T('malettre:envoi')." : <span style='font-weight:normal;font-size:12px;'>$sujet</span></h3>\n";
165            $message .= "<div style='border:1px solid;background:#eee;margin:10px 0;padding:10px;font-family:arial,sans-serif;font-size:0.9em;'>";
166           
167           
168            // envoi lettre
169            // a ameliorer grandement flood
170            // utiliser une methode ajax pour temporiser l'envoi par flot
171            // ou tout simple deleger a facteur ?
172            $i = 0;
173            $j = 0;         
174            if (is_array($destinataire)) {
175              foreach ($destinataire as $k=>$adresse) { // envoi a tous les destinataires
176                      if (!defined('_DIR_PLUGIN_FACTEUR')){                   
177                        include_spip("lib/class.phpmailer");    // mettre à jour http://code.google.com/a/apache-extras.org/p/phpmailer/ ou necessite facteur ?                 
178                  $mail = new PHPMailer();
179
180                        $mail->From     = "$exp_email";
181                        $mail->FromName = "$exp_name";
182                        $mail->AddReplyTo("$exp_email");
183                        $mail->AddAddress($adresse,$adresse);
184                        $i++;
185
186                        $mail->WordWrap = 50;           // set word wrap
187                        $mail->IsHTML(true);            // send as HTML
188                        $mail->CharSet = "utf-8";
189
190                        $mail->Subject  =  "$lettre_title";
191                        $mail->Body     =  $recup;
192                        $mail->AltBody  =  $recup_txt;
193                              $res = $mail->Send();
194                      }
195                      else {
196                              $envoyer_mail = charger_fonction('envoyer_mail','inc');
197                              $corps = array(
198                                      "html" => $recup,
199                                      "texte" => $recup_txt,
200                                      "nom_envoyeur" => $exp_name,
201                                      "from" => $exp_email,
202                                      "renvoyer_a" => $exp_email
203                              );
204                              $envoyer_mail($adresse,$lettre_title,$corps);
205                      }
206
207                if(!$res) {
208                    $message.= "<div style='color:red'><strong>$adresse</strong> - "._T('malettre:erreur_envoi')."</div>"; 
209                    //$message.= "Mailer Error: " . $mail->ErrorInfo;
210                    $success_flag = false;
211                    $j++;
212                } else { 
213                    $message.= "<div style='color:green'><strong>$adresse</strong> - <span style='color:green'>"._T('malettre:succes_envoi')."</span></div>";         
214                }
215                echo $msg;
216              }
217            } else {
218              $message.= "<div style='color:red'>"._T('malettre:erreur_no_dest')."</div>";
219            }
220            $message.= "</div>";
221           
222            // $message.= "<div> $i / $j </div>";
223           
224            // archivage de la lettre en dur   
225            // FIXME: utiliser les methodes natives pour ecrire les fichiers   
226            $no_archive = _request('no_archive');           
227            if (!is_array($no_archive)) { 
228                   
229                  $message.= "<div style=\"margin:15px 0;\">"._T('malettre:archives_placer');
230                 
231                  $lettre_archive = "$path_archive_full/lettre_".date("Ymd")."_".$lettre_hash."_"._request('lang_select').".html";
232                  $f_archive=fopen($lettre_archive,"w");
233                  fwrite($f_archive,$recup); 
234                  fclose($f_archive);
235                  $message.= " <a href='$url_lettre_archive' target='_blank'>html</a> - ";
236                 
237                  $lettre_archive = "$path_archive_full/lettre_".date("Ymd")."_".$lettre_hash."_"._request('lang_select').".txt";
238                  $f_archive=fopen($lettre_archive,"w");
239                  fwrite($f_archive,$recup_txt); 
240                  fclose($f_archive);
241                  $message.= "<a href='$url_lettre_archive_txt' target='_blank'>txt</a></div>";
242                 
243                  // stockage en base
244                  include_spip('base/abstract_sql');
245                 
246                  sql_insertq('spip_meslettres',array(
247                              'titre' => $lettre_title,
248                              'lang' => $lang,
249                              'url_html' => "lettre/$url_lettre_archive_short",
250                              'url_txt' => "lettre/$url_lettre_archive_txt_short",
251                              'date' => date('Y-m-d H:i:s')
252                              ));
253                                     
254                             
255                  $message.= "<p><a href='".generer_url_ecrire("malettre_archive")."'>"._T('malettre:archives_gerer')."</a></p>\n";
256           
257            }
258 
259  // --------------------------------
260
261 
262 
263 
264 
265  $redirect = "";
266
267        // message
268        return array(
269                "editable" => false,
270                "message_ok" => "$message",
271    'redirect' => $redirect
272        );
273}
274
275?>
Note: See TracBrowser for help on using the repository browser.