[ Index ] |
|
Code source de SPIP 1.8.3 |
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("’","“","”"), 86 array("'", '"', '"'), 87 $t); 88 } 89 90 $t = str_replace( 91 array("—", "&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 é ’, &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 ?>
titre
Description
Corps
titre
Description
Corps
titre
Description
Corps
titre
Corps
Généré le : Thu Feb 22 22:27:47 2007 | par Balluche grâce à PHPXref 0.7 |