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

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

ajout d'un mode test pour passer l'archivage des lettres

File size: 10.6 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_mail = lire_config("malettre/expediteur_email$id_expediteur");
135                if ($exp_mail=="") 
136                   die("expediteur inconnu");
137               
138            } else {
139              $exp_name = $exp_mail;
140            } 
141           
142           
143                 
144            // recup destinataire
145            $destinataire = array();
146            $desti = _request('desti');
147            foreach ($desti as $desti_item) {     // on lit la config pour retrouver l'email
148                $id_desti = intval(substr($desti_item,1)); 
149                $desti_mail = lire_config("malettre/adresse_email$id_desti"); 
150                if ($desti_mail !="") 
151                      $destinataire[] = $desti_mail;           
152            }
153           
154            $desti_more = _request('desti_more'); 
155            if ($desti_more!="") $destinataire[] = $desti_more;
156             /*    FIXME:
157            if (_request('mes_abonnes')=='oui') {
158                if ($resultats = sql_select('email', 'spip_mesabonnes')) {
159                        while ($res = sql_fetch($resultats))
160                                            $desti[] = $res['email'];                   
161                }
162            }
163             */
164           
165           
166            $message = "<h3>"._T('malettre:envoi')." <i style='color:#999;'>$sujet</i></h3>\n";
167            $message = "<div style='border:1px solid;background:#eee;margin:10px 0;padding:10px;font-family:arial,sans-serif;font-size:0.9em;'>";
168           
169            // envoi lettre
170            // a ameliorer grandement flood
171            // utiliser une methode ajax pour temporiser l'envoi par flot
172            // ou tout simple deleger a facteur ?
173            $i = 0;
174            $j = 0;         
175            if (is_array($destinataire)) {
176              foreach ($destinataire as $k=>$adresse) { // envoi a tous les destinataires
177                      if (!defined('_DIR_PLUGIN_FACTEUR')){                   
178                        include_spip("lib/class.phpmailer");    // mettre à jour http://code.google.com/a/apache-extras.org/p/phpmailer/ ou necessite facteur ?                 
179                  $mail = new PHPMailer();
180
181                        $mail->From     = "$exp_email";
182                        $mail->FromName = "$exp_name";
183                        $mail->AddReplyTo("$exp_email");
184                        $mail->AddAddress($adresse,$adresse);
185                        $i++;
186
187                        $mail->WordWrap = 50;           // set word wrap
188                        $mail->IsHTML(true);            // send as HTML
189                        $mail->CharSet = "utf-8";
190
191                        $mail->Subject  =  "$lettre_title";
192                        $mail->Body     =  $recup;
193                        $mail->AltBody  =  $recup_txt;
194                              $res = $mail->Send();
195                      }
196                      else {
197                              $envoyer_mail = charger_fonction('envoyer_mail','inc');
198                              $corps = array(
199                                      "html" => $recup,
200                                      "texte" => $recup_txt,
201                                      "nom_envoyeur" => $exp_name,
202                                      "from" => $exp_email,
203                                      "renvoyer_a" => $exp_email
204                              );
205                              $envoyer_mail($adresse,$lettre_title,$corps);
206                      }
207
208                if(!$res) {
209                    $message.= "<div style='color:red'><strong>$adresse</strong> - "._T('malettre:erreur_envoi')."</div>"; 
210                    //$message.= "Mailer Error: " . $mail->ErrorInfo;
211                    $success_flag = false;
212                    $j++;
213                } else { 
214                    $message.= "<div style='color:green'><strong>$adresse</strong> - <span style='color:green'>"._T('malettre:succes_envoi')."</span></div>";         
215                }
216                echo $msg;
217              }
218            } else {
219              $message.= "<div style='color:red'>"._T('malettre:erreur_no_dest')."</div>";
220            }
221            $message.= "</div>";
222           
223            $message.= "<div> $i / $j </div>";
224           
225            // archivage de la lettre en dur   
226            // FIXME: utiliser les methodes natives pour ecrire les fichiers   
227            $no_archive = _request('no_archive');           
228            if (!is_array($no_archive)) { 
229                   
230                  $message.= "<div style=\"margin:15px 0;\">"._T('malettre:archives_placer');
231                 
232                  $lettre_archive = "$path_archive_full/lettre_".date("Ymd")."_".$lettre_hash."_"._request('lang_select').".html";
233                  $f_archive=fopen($lettre_archive,"w");
234                  fwrite($f_archive,$recup); 
235                  fclose($f_archive);
236                  $message.= " <a href='$url_lettre_archive' target='_blank'>html</a> - ";
237                 
238                  $lettre_archive = "$path_archive_full/lettre_".date("Ymd")."_".$lettre_hash."_"._request('lang_select').".txt";
239                  $f_archive=fopen($lettre_archive,"w");
240                  fwrite($f_archive,$recup_txt); 
241                  fclose($f_archive);
242                  $message.= "<a href='$url_lettre_archive_txt' target='_blank'>txt</a></div>";
243                 
244                  // stockage en base
245                  include_spip('base/abstract_sql');
246                 
247                  sql_insertq('spip_meslettres',array(
248                              'titre' => $lettre_title,
249                              'lang' => $lang,
250                              'url_html' => "lettre/$url_lettre_archive_short",
251                              'url_txt' => "lettre/$url_lettre_archive_txt_short",
252                              'date' => date('Y-m-d H:i:s')
253                              ));
254                                     
255                             
256                  $message.= "<p><a href='".generer_url_ecrire("malettre_archive")."'>"._T('malettre:archives_gerer')."</a></p>\n";
257           
258            }
259 
260  // --------------------------------
261
262 
263 
264 
265 
266  $redirect = "";
267
268        // message
269        return array(
270                "editable" => false,
271                "message_ok" => "$message",
272    'redirect' => $redirect
273        );
274}
275
276?>
Note: See TracBrowser for help on using the repository browser.