[ PHPXref.com ] [ Generated: Sun Jul 20 20:25:42 2008 ] [ SPIP 1.8.3 ]
[ Index ]     [ Variables ]     [ Functions ]     [ Classes ]     [ Constants ]     [ Statistics ]

title

Body

[close]

/ecrire/ -> inc_mail.php3 (source)

   1  <?php
   2  
   3  /***************************************************************************\
   4   *  SPIP, Systeme de publication pour l'internet                           *
   5   *                                                                         *
   6   *  Copyright (c) 2001-2005                                                *
   7   *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
   8   *                                                                         *
   9   *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
  10   *  Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne.   *
  11  \***************************************************************************/
  12  
  13  
  14  //
  15  // Ce fichier ne sera execute qu'une fois
  16  if (defined("_ECRIRE_INC_MAIL")) return;
  17  define("_ECRIRE_INC_MAIL", "1");
  18  
  19  
  20  
  21  //
  22  // Infos de mails sur l'hebergeur (tout ca est assez sale)
  23  //
  24  global $hebergeur;
  25  global $HTTP_X_HOST, $REQUEST_URI, $SERVER_NAME, $HTTP_HOST;
  26  $hebergeur = '';
  27  
  28  // Lycos (ex-Multimachin)
  29  if ($HTTP_X_HOST == 'membres.lycos.fr') {
  30      $hebergeur = 'lycos';
  31  }
  32  // Altern
  33  else if (ereg('altern\.com$', $SERVER_NAME)) {
  34      $hebergeur = 'altern';
  35  }
  36  // NexenServices
  37  else if ($_SERVER['SERVER_ADMIN'] == 'www@nexenservices.com') {
  38      if (!function_exists('email'))
  39          include ('mail.inc');
  40      $hebergeur = 'nexenservices';
  41  }
  42  // Online
  43  else if (function_exists('email')) {
  44      $hebergeur = 'online';
  45  }
  46  
  47  
  48  //
  49  // Chez lyconiania, envoyer un mail coupe la connection MySQL (sic)
  50  //
  51  
  52  $GLOBALS['queue_mails'] = '';
  53  
  54  function envoyer_queue_mails() {
  55      global $queue_mails;
  56      if (!$queue_mails) return;
  57      reset($queue_mails);
  58      while (list(, $val) = each($queue_mails)) {
  59          $email = $val['email'];
  60          $sujet = $val['sujet'];
  61          $texte = $val['texte'];
  62          $headers = $val['headers'];
  63          @mail($email, $sujet, $texte, $headers);
  64      }
  65  }
  66  
  67  if ($GLOBALS['hebergeur'] == 'lycos') {
  68      register_shutdown_function(envoyer_queue_mails);
  69  }
  70  
  71  // Apparemment free etait le dernier hebergeur connu a ne pas offrir de mail
  72  // cette fonction va donc pouvoir disparaitre
  73  function tester_mail() {
  74      global $hebergeur;
  75      $test_mail = true;
  76      return $test_mail;
  77  }
  78  
  79  function nettoyer_caracteres_mail($t) {
  80  
  81      $t = filtrer_entites($t);
  82  
  83      if (lire_meta('charset') <> 'utf-8') {
  84          $t = str_replace(
  85              array("&#8217;","&#8220;","&#8221;"),
  86              array("'",      '"',      '"'),
  87          $t);
  88      }
  89  
  90      $t = str_replace(
  91          array("&mdash;", "&endash;"),
  92          array("--","-" ),
  93      $t);
  94  
  95      return $t;
  96  }
  97  
  98  function envoyer_mail($email, $sujet, $texte, $from = "", $headers = "") {
  99      global $hebergeur, $queue_mails, $flag_wordwrap;
 100      include_ecrire('inc_filtres.php3');
 101      include_ecrire('inc_charsets.php3');
 102  
 103      if (!email_valide($email)) return false;
 104      if ($email == _T('info_mail_fournisseur')) return false; // tres fort
 105  
 106      if (!$from) {
 107          $email_envoi = lire_meta("email_envoi");
 108          $from = email_valide($email_envoi) ? $email_envoi : $email;
 109      }
 110      spip_log("mail ($email): $sujet". ($from ?", from <$from>":''));
 111  
 112      $charset = lire_meta('charset');
 113  
 114      // Ajouter au besoin le \n final dans les $headers passes en argument
 115      if ($headers = trim($headers)) $headers .= "\n";
 116  
 117      // Ajouter le Content-Type s'il n'y est pas deja
 118      if (strpos($headers, "Content-Type: ") === false)
 119          $headers .=
 120          "MIME-Version: 1.0\n".
 121          "Content-Type: text/plain; charset=$charset\n".
 122          "Content-Transfer-Encoding: 8bit\n";
 123  
 124      // Et maintenant le champ From:
 125      $headers .= "From: $from\n";
 126  
 127      // nettoyer les &eacute; &#8217, &emdash; etc...
 128      $texte = nettoyer_caracteres_mail($texte);
 129      $sujet = nettoyer_caracteres_mail($sujet);
 130  
 131      // encoder le sujet si possible selon la RFC
 132      if (init_mb_string()) {
 133          # un bug de mb_string casse mb_encode_mimeheader si l'encoding interne
 134          # est UTF-8 et le charset iso-8859-1 (constate php5-mac ; php4.3-debian)
 135          mb_internal_encoding($charset);
 136          $sujet = mb_encode_mimeheader($sujet, $charset, 'Q');
 137          mb_internal_encoding('utf-8');
 138      }
 139  
 140      if ($flag_wordwrap) $texte = wordwrap($texte);
 141  
 142      if (os_serveur == 'windows') {
 143          $texte = ereg_replace ("\r*\n","\r\n", $texte);
 144          $headers = ereg_replace ("\r*\n","\r\n", $headers);
 145      }
 146  
 147      switch($hebergeur) {
 148      case 'lycos':
 149          $queue_mails[] = array(
 150              'email' => $email,
 151              'sujet' => $sujet,
 152              'texte' => $texte,
 153              'headers' => $headers);
 154          return true;
 155      case 'free':
 156          return false;
 157      case 'online':
 158          return @email('webmaster', $email, $sujet, $texte);
 159      default:
 160          return @mail($email, $sujet, $texte, $headers);
 161      }
 162  }
 163  
 164  function extrait_article($row) {
 165      include_ecrire("inc_texte.php3");
 166      include_ecrire("inc_filtres.php3");
 167  
 168      $adresse_site = lire_meta("adresse_site");
 169  
 170      $id_article = $row[0];
 171      $titre = $row[2];
 172      $chapo = $row[6];
 173      $texte = $row[7];
 174      $date = $row[9];
 175      $statut = $row[10];
 176  
 177      $les_auteurs = "";
 178       $query = "SELECT auteurs.* FROM spip_auteurs AS auteurs, spip_auteurs_articles AS lien WHERE lien.id_article=$id_article AND auteurs.id_auteur=lien.id_auteur";
 179      $result_auteurs = spip_query($query);
 180  
 181      while ($row = spip_fetch_array($result_auteurs)) {
 182          $nom_auteur = trim(supprimer_tags(typo($row['nom'])));
 183  
 184          if ($les_auteurs) $les_auteurs .= ', ';
 185          $les_auteurs .= $nom_auteur;
 186      }
 187  
 188      $extrait = "** $titre **\n";
 189      if ($les_auteurs) $extrait .= _T('info_les_auteurs_1', array('les_auteurs' => $les_auteurs));
 190      if ($statut == 'publie') $extrait .= " "._T('date_fmt_nomjour_date', array('nomjour'=>nom_jour($date), 'date'=>affdate($date)));
 191      $extrait .= "\n\n".textebrut(propre(couper_intro("$chapo<p>$texte", 700)))."\n\n";
 192      if ($statut == 'publie') $extrait .= "-> ".$adresse_site."/spip_redirect.php3?id_article=$id_article\n\n";
 193      return $extrait;
 194  }
 195  
 196  
 197  function nettoyer_titre_email($titre) {
 198      $titre = ereg_replace("\n", ' ', supprimer_tags($titre));
 199      return ($titre);
 200  }
 201  
 202  function envoyer_mail_publication($id_article) {
 203      global $connect_nom;
 204      $adresse_suivi = lire_meta("adresse_suivi");
 205      $nom_site_spip = lire_meta("nom_site");
 206      $suivi_edito = lire_meta("suivi_edito");
 207  
 208      if ($suivi_edito == "oui") {
 209          $query = "SELECT * FROM spip_articles WHERE id_article = $id_article";
 210          $result = spip_query($query);
 211  
 212          if ($row = spip_fetch_array($result)) {
 213  
 214              // selectionne langue
 215              $lang_utilisateur = $GLOBALS['spip_lang'];
 216              changer_langue($row['lang']);
 217  
 218              $titre = nettoyer_titre_email($row['titre']);
 219  
 220              $sujet = _T('info_publie_1', array('nom_site_spip' => $nom_site_spip, 'titre' => $titre));
 221              $courr = _T('info_publie_2')."\n\n";
 222              $nom = trim(supprimer_tags(typo($connect_nom)));
 223              $courr .= _T('info_publie_01', array('titre' => $titre, 'connect_nom' => $nom))."\n\n\n";
 224              $courr = $courr . extrait_article($row);
 225              envoyer_mail($adresse_suivi, $sujet, $courr);
 226  
 227              // reinstalle la langue utilisateur (au cas ou)
 228              changer_langue($lang_utilisateur);
 229          }
 230      }
 231  }
 232  
 233  function envoyer_mail_proposition($id_article) {
 234      $adresse_suivi = lire_meta("adresse_suivi");
 235      $adresse_site = lire_meta("adresse_site");
 236      $nom_site_spip = lire_meta("nom_site");
 237      $suivi_edito = lire_meta("suivi_edito");
 238  
 239      if ($suivi_edito == "oui") {
 240          if ($row = spip_fetch_array(spip_query("SELECT * FROM spip_articles WHERE id_article = $id_article"))) {
 241  
 242              $lang_utilisateur = $GLOBALS['spip_lang'];
 243              changer_langue($row['lang']);
 244  
 245              $titre = nettoyer_titre_email($row['titre']);
 246  
 247              $sujet = _T('info_propose_1', array('nom_site_spip' => $nom_site_spip, 'titre' => $titre));
 248              envoyer_mail($adresse_suivi,
 249                       $sujet,
 250                       _T('info_propose_2')
 251                       ."\n\n" 
 252                       . _T('info_propose_3', array('titre' => $titre))
 253                       ."\n" 
 254                       . _T('info_propose_4')
 255                       ."\n" 
 256                       . _T('info_propose_5')
 257                       ."\n" 
 258                       . $adresse_site 
 259                       . '/' 
 260                       . _DIR_RESTREINT_ABS 
 261                       . "articles.php3?id_article=$id_article\n\n\n" 
 262                       . extrait_article($row));
 263              changer_langue($lang_utilisateur);
 264          }
 265      }
 266  }
 267  
 268  ?>


[ Powered by PHPXref - Served by Debian GNU/Linux ]