PageRenderTime 44ms CodeModel.GetById 15ms RepoModel.GetById 0ms app.codeStats 0ms

/_plugins_/tipafriend/spip_2/formulaires/tipafriend_form.php

https://bitbucket.org/pombredanne/spip-zone-treemap
PHP | 203 lines | 161 code | 13 blank | 29 comment | 40 complexity | 137a4f7a9f3b243ad1918903063f8340 MD5 | raw file
  1. <?php
  2. /**
  3. * Construction et envoi du mail
  4. *
  5. * Utilisation du plugin facteur, si présent, pour envoyer un mail HTML (avec version texte initiale
  6. * jointe).
  7. * @name FormulaireEnvoi
  8. * @author Piero Wbmstr <http://www.spip-contrib.net/PieroWbmstr>
  9. * @license http://opensource.org/licenses/gpl-license.php GNU Public License
  10. * @package Tip-a-friend
  11. */
  12. if (!defined("_ECRIRE_INC_VERSION")) return;
  13. include_spip('tipafriend_fonctions');
  14. function formulaires_tipafriend_form_charger(){
  15. $valeurs = array(
  16. 'id' => _request('id'),
  17. 'type' => _request('type'),
  18. 'url' => urldecode(_request('usend')),
  19. 'titre' => utf8_encode(_request('titre')),
  20. 'destinataires' => _request('mdes'),
  21. 'expediteur' => _request('mex'),
  22. 'expediteur_send' => 'non',
  23. 'expediteur_nom' => _request('nex'),
  24. 'message_text' => '',
  25. 'form_reset' => tipafriend_config('form_reset'),
  26. 'header_deja' => _request('header') ? _request('header') : 'oui',
  27. 'close_button' => _request('close_button') ? _request('close_button') : 'oui',
  28. 'taf_css' => _request('taf_css') ? _request('taf_css') : 'oui',
  29. );
  30. if(isset($GLOBALS["visiteur_session"]) && $GLOBALS["visiteur_session"]['statut']) {
  31. if (!strlen($valeurs['expediteur']))
  32. $valeurs['expediteur'] = $GLOBALS["visiteur_session"]['email'];
  33. if (!strlen($valeurs['expediteur_nom']))
  34. $valeurs['expediteur_nom'] = $GLOBALS["visiteur_session"]['nom'];
  35. }
  36. if(_TIPAFRIEND_TEST) {
  37. echo taf_dbg_block(array(
  38. _T('tipafriend:taftest_param_form') => var_export($valeurs,1)
  39. ));
  40. }
  41. return $valeurs;
  42. }
  43. function formulaires_tipafriend_form_verifier(){
  44. $erreurs = array();
  45. include_spip('inc/filtres');
  46. if(!$dest = _request('destinataires'))
  47. $erreurs['destinataires'] = _T('tipafriend:error_dest');
  48. else {
  49. $m = tipafriend_multimails($dest);
  50. $ok=true;
  51. foreach($m as $mail){
  52. if(!email_valide(trim($mail))) $ok=false;
  53. }
  54. if(!$ok) {
  55. if (count($m)>1)
  56. $erreurs['destinataires'] = _T('tipafriend:error_one_is_not_mail');
  57. else $erreurs['destinataires'] = _T('tipafriend:error_not_mail');
  58. }
  59. }
  60. if(!$exp = _request('expediteur'))
  61. $erreurs['expediteur'] = _T('tipafriend:error_exp');
  62. elseif(!email_valide($exp))
  63. $erreurs['expediteur'] = _T('tipafriend:error_not_mail');
  64. if(!$exp_n = _request('expediteur_nom'))
  65. $erreurs['expediteur_nom'] = _T('tipafriend:error_exp_nom');
  66. return $erreurs;
  67. }
  68. function formulaires_tipafriend_form_traiter(){
  69. $sep = (_TIPAFRIEND_TEST) ? "<br />" : "\n";
  70. $id = _request('id');
  71. $type = _request('type');
  72. $destinataires = tipafriend_multimails(_request('destinataires'));
  73. $expediteur_adresse = _request('expediteur');
  74. $tab_dbg = array();
  75. $envoyer_mail = charger_fonction('envoyer_mail','inc');
  76. $doc_url = url_absolue(_request('url'));
  77. $titre = _request('titre');
  78. // Si pas le titre de page, on tente de le récupérer à distance ...
  79. if(!$titre || !strlen($titre)) {
  80. include_spip('inc/distant');
  81. $_page_headers = recuperer_infos_distantes($doc_url,0,false);
  82. if($_page_headers && isset($_page_headers['titre']) && strlen($_page_headers['titre']))
  83. $titre = $_page_headers['titre'];
  84. // Sinon, nom du site et basta ...
  85. else
  86. $titre = _T('tipafriend:mail_titre_default', array('nom_site'=>$GLOBALS['meta']['nom_site']));
  87. }
  88. $mel = tipafriend_contexte();
  89. $mel['sep'] = $sep;
  90. $mel['id_rubrique'] = ($type == 'rubrique') ? $id : '';
  91. $mel['id_article'] = ($type == 'article') ? $id : '';
  92. $mel['id_breve'] = ($type == 'breve') ? $id : '';
  93. $mel['id_mot'] = ($type == 'mot') ? $id : '';
  94. $mel['id_syndic'] = ($type == 'syndic') ? $id : '';
  95. $mel['id_auteur'] = ($type == 'auteur') ? $id : '';
  96. $mel['document_titre'] = $titre;
  97. $mel['document_url'] = $doc_url;
  98. $mel['destinataires'] = $destinataires;
  99. $mel['expediteur_nom'] = _request('expediteur_nom');
  100. $mel['expediteur_adresse'] = $expediteur_adresse;
  101. $mel['expediteur_message'] = _request('message_text');
  102. $mel['subject'] = tipafriend_titrage($titre);
  103. // Recherche du patron ...
  104. $patron = 'patrons/'.$mel['mail_patron'];
  105. if(!find_in_path($patron.'.html')) {
  106. if(_TIPAFRIEND_TEST)
  107. $tab_dbg[] = _T('tipafriend:taftest_patron_pas_trouve', array('patron'=>$patron));
  108. spip_log("TIPAFRIEND patron de config utilisateur pas trouve ! ['$patron']");
  109. $patron = 'patrons/'.str_replace('.html', '', $GLOBALS['TIPAFRIEND_DEFAULTS']['patron']);
  110. }
  111. $mel['body'] = recuperer_fond($patron, $mel);
  112. // Headers
  113. $header = "X-Originating-IP: ".$GLOBALS['ip']."\n";
  114. // Utilisation du plugin Facteur si présent ...
  115. if (strlen($mel['mail_patron_html']) && defined('_DIR_PLUGIN_FACTEUR')) {
  116. $patron_html = 'patrons/'.$mel['mail_patron_html'];
  117. if(!find_in_path($patron_html.'.html')) {
  118. if(_TIPAFRIEND_TEST)
  119. $tab_dbg[] = _T('tipafriend:taftest_patron_pas_trouve', array('patron'=>$patron_html));
  120. spip_log("TIPAFRIEND patron de config utilisateur pas trouve ! ['$patron_html']");
  121. $patron_html = 'patrons/'.str_replace('.html', '', $GLOBALS['TIPAFRIEND_DEFAULTS']['patron_html']);
  122. }
  123. $html_content = recuperer_fond($patron_html, $mel);
  124. $corps = array(
  125. 'html' => $html_content,
  126. 'texte' => $mel['body'],
  127. );
  128. if( $send_exp = _request('expediteur_send') AND $send_exp == 'oui')
  129. $corps['cc'] = $expediteur_adresse;
  130. /*
  131. $mail = $envoyer_mail(
  132. join(',', $destinataires), $mel['subject'],
  133. array(
  134. 'html' => $html_content,
  135. 'texte' => $mel['body'],
  136. ), $mel['expediteur_adresse'], $header
  137. );
  138. */
  139. // Tout simplement ... c'est finalement trop simple Facteur ;-)
  140. $mail = $envoyer_mail($destinataires, $mel['subject'], $corps, $mel['expediteur_adresse'], $header);
  141. }
  142. // Sinon fonction de SPIP standard
  143. else {
  144. if( $send_exp = _request('expediteur_send') AND $send_exp == 'oui')
  145. $header .= "Cc: ".$expediteur_adresse."\n";
  146. $mail = $envoyer_mail(
  147. join(",", $destinataires), $mel['subject'], $mel['body'],
  148. $mel['expediteur_adresse'], $header
  149. );
  150. }
  151. // Messages
  152. if($mail!==true)
  153. $message = array(
  154. 'message_erreur' => _T("tipafriend:message_pas_envoye", array('self'=>_request('self')))
  155. );
  156. else
  157. $message = array('message_ok' => _T("tipafriend:message_envoye"));
  158. // Debugger
  159. if(_TIPAFRIEND_TEST) {
  160. $tab_dbg[_T('tipafriend:taftest_content')] = $sep
  161. ._T('tipafriend:taftest_to')."&nbsp;:&nbsp;".join(',', $mel['destinataires']).$sep
  162. ._T('tipafriend:taftest_from')."&nbsp;:&nbsp;".$mel['expediteur_adresse'].$sep
  163. ._T('tipafriend:taftest_mail_title')."&nbsp;:&nbsp;".$mel['subject'].$sep
  164. ._T('tipafriend:taftest_mail_headers')."&nbsp;:&nbsp;".$header.$sep
  165. ._T('tipafriend:taftest_mail_retour')."&nbsp;:&nbsp;".var_export($mail,true).$sep
  166. .( isset($html_content) ?
  167. $sep._T('tipafriend:taftest_mail_content_html')."&nbsp;:&nbsp;("._T('tipafriend:taftest_chargement_patron', array('patron'=>$patron_html)).")"
  168. ."<hr />".$sep.str_replace("\n", '', $html_content).$sep
  169. : '')
  170. .$sep._T('tipafriend:taftest_mail_content')."&nbsp;:&nbsp;("._T('tipafriend:taftest_chargement_patron', array('patron'=>$patron)).")"
  171. ."<hr />".$sep.str_replace("\n", '<br />', $mel['body']).$sep;
  172. if(array_key_exists('message_ok', $message))
  173. $message['message_ok'] .= $sep.taf_dbg_block($tab_dbg);
  174. elseif(array_key_exists('message_erreur', $message))
  175. $message['message_erreur'] .= $sep.taf_dbg_block($tab_dbg);
  176. }
  177. // LOG spip
  178. $infos_log = array(
  179. "To=[".join(',', $mel['destinataires'])."]",
  180. "From=[".$mel['expediteur_adresse']."]",
  181. "Sujet=[".$mel['subject']."]",
  182. "Envoi=[".var_export($mail,true)."]",
  183. "ContenuBrut[patron=$patron][".strlen($mel['body'])."cars.]",
  184. );
  185. if(isset($html_content))
  186. $infos_log[] = "ContenuHTML[patron=$patron_html][".strlen($html_content)."cars.]";
  187. spip_log("Mail via TIPAFRIEND ".(isset($html_content)?"(via Facteur) ":'').join(" ", $infos_log), 'mail');
  188. return $message;
  189. }
  190. ?>