PageRenderTime 42ms CodeModel.GetById 12ms RepoModel.GetById 1ms app.codeStats 0ms

/_plugins_/ma-lettre/trunk/formulaires/envoi_malettre.php

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