[ Index ] |
|
Code source de SPIP Agora 1.4 |
1 <?php 2 /***************************************************** 3 * This file is part of Agora, web based content management system. 4 * 5 * Agora is free software; you can redistribute it and/or modify 6 * it under the terms of the GNU General Public License as published by 7 * the Free Software Foundation; version 2 of the License. 8 * 9 * Agora is distributed in the hope that it will be useful, 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 * GNU General Public License for more details (file "COPYING"). 13 * 14 * Copyright © Arnaud Martin, Antoine Pitrou et Philippe Rivière. 15 * List of authors detailed in "copyright_fr.html" file. 16 * E-mail : agora@sig.premier-ministre.gouv.fr 17 * Web site : http://www.agora.gouv.fr 18 *****************************************************/ 19 /* 20 * @version $Id$ 21 */ 22 //@Header ("Content-Type: text/plain");// Modification jpyrat 23 /* 24 -------------Ajout Clever Age abstraction BD--------- 25 */ 26 require_once (dirname(__FILE__). "/../../../../ecrire/include/bd/inc_auteur_factory.php"); 27 28 require_once (dirname(__FILE__). "/../../../../ecrire/include/bd/inc_subscriber_factory.php"); 29 require_once (dirname(__FILE__). "/../../../../ecrire/include/bd/inc_subscriber_link_factory.php"); 30 require_once (dirname(__FILE__). "/../../../../ecrire/include/bd/inc_meta_factory.php"); 31 require_once (dirname(__FILE__). "/../../../../ecrire/include/bd/inc_newsletter_factory.php"); 32 require_once (dirname(__FILE__). "/../../../../ecrire/include/bd/inc_newsletter_instance_factory.php"); 33 require_once (dirname(__FILE__). "/../../../../ecrire/inc_version.php"); 34 35 if (file_exists(dirname(__FILE__). "/../../../../ecrire/mes_options.php")) { 36 require_once (dirname(__FILE__). "/../../../../ecrire/mes_options.php"); 37 } 38 39 require_once (dirname(__FILE__). "/../../../../ecrire/inc_meta.php"); 40 require_once (dirname(__FILE__). "/include/appconfig.php"); 41 42 // TBI lire_meta() ne marche pas ? 43 // à ajouter au lieu d'utiliser les globals" 44 45 /* 46 ----------------fin zone d'ajout--------------------- 47 */ 48 require_once("Mail.php"); 49 require_once("Mail/mime.php"); 50 51 if (isset($_GET['verbose'])) { 52 $verbose = $_GET['verbose']; 53 } 54 else { 55 $verbose = 'yes'; 56 } 57 58 if (isset($_GET['number'])) { 59 $number = $_GET['number']; 60 } 61 else { 62 $number = $GLOBALS['meta']['CM_SEND_NUMBER']; 63 } 64 65 $newsletterInstanceMetier = &recuperer_instance_newsletter_instance(); 66 //Récupération de l'ensemble des mails à envoyer 67 $allPosts = $newsletterInstanceMetier->getAllPosts($number); 68 69 if (PEAR::isError($allPosts)) { 70 die ($allPosts->getMessage()); 71 } 72 73 // 74 $text = ''; // Modification jpyrat 75 $html = ''; // Modification jpyrat 76 77 while (list(, $myPost) = each($allPosts)) { 78 $loadOK = $newsletterInstanceMetier->load($myPost['pst_id']); 79 80 if (PEAR::isError($loadOK)) { 81 // die($loadOK->getMessage()); 82 echo $loadOK->getMessage(). "\n"; 83 continue; 84 } 85 86 $newsletterMetier = &recuperer_instance_newsletter(); 87 $loadOK = $newsletterMetier->load($newsletterInstanceMetier->getNewsletterId()); 88 89 if (PEAR::isError($loadOK)) { 90 // die($loadOK->getMessage()); 91 echo $loadOK->getMessage(). "\n"; 92 continue; 93 } 94 if (!$newsletterInstanceMetier->isAlreadySend($myPost)) { 95 $mode = ($myPost['mode'] == 1 ? 'html' : 'text'); 96 97 if ($myPost['id_sub'] != 0) { 98 $subscriberMetier = &recuperer_instance_subscriber(); 99 $loadOK = $subscriberMetier->load($myPost['id_sub']); 100 101 if (PEAR::isError($loadOK)) { 102 echo ($loadOK->getMessage()); 103 $newsletterInstanceMetier->deletePostQueued($myPost); 104 continue; 105 } 106 107 // recipient 108 if ($subscriberMetier->getFirstName(). $subscriberMetier->getMiddleName(). $subscriberMetier->getLastName() 109 == '') { 110 $to = $subscriberMetier->getEmail(); 111 } 112 else { 113 $to = str_replace(' ', 114 ' ', 115 '"' . trim( 116 $subscriberMetier->getFirstName(). ' ' . $subscriberMetier->getMiddleName(). ' ' . $subscriberMetier->getLastName()). '" <' . $subscriberMetier->getEmail(). '>'); 117 } 118 119 // subject 120 $subject = trim(($newsletterMetier->getSubjectTag() == 1 ? '[' . $newsletterMetier->getName(). '] ' 121 : ''). $newsletterInstanceMetier->getSubject()); 122 123 $headers = array('From' => $GLOBALS['meta']['CM_MAIL_FROM'], 'Reply-to' => $GLOBALS['meta']['CM_MAIL_FROM'], 124 'Subject' => $subject); 125 126 if (($text == '') && ($html == '')) { // Modification jpyrat 127 // message content 128 $squeletteHTML = $newsletterMetier->getHtmlSkeleton(); 129 $squeletteTexte = $newsletterMetier->getTexteSkeleton(); 130 131 //$adresseHTML = $GLOBALS['meta']['adresse_site'].'/previsualisationNL.php?fondNL=' . $squeletteHTML . '&nl_preview_path=' . $newsletterMetier->getId().'/html/&id_post_newsletter='.$newsletterInstanceMetier->getId().'&id_personnalisation_newsletter='.$myPost['id_auteur'];//.'&recalcul=oui&submit=Recalculer+cette+page';// Modification jpyrat 132 $adresseHTML 133 = $GLOBALS['meta']['adresse_site']. '/previsualisationNL.php?fondNL=' . $squeletteHTML . '&id_personnalisation_newsletter=' . $myPost['id_auteur']. '&id_post_newsletter=' . $newsletterInstanceMetier->getId(); 134 //$adresseTexte = $GLOBALS['meta']['adresse_site'].'/previsualisationNL.php?fondNL=' . $squeletteTexte . '&nl_preview_path=' . $newsletterMetier->getId().'/texte/&id_post_newsletter='.$newsletterInstanceMetier->getId().'&id_personnalisation_newsletter='.$myPost['id_auteur'];//.'&recalcul=oui&submit=Recalculer+cette+page';// Modification jpyrat 135 $adresseTexte 136 = $GLOBALS['meta']['adresse_site']. '/previsualisationNL.php?fondNL=' . $squeletteTexte . '&id_personnalisation_newsletter=' . $myPost['id_auteur']. '&id_post_newsletter=' . $newsletterInstanceMetier->getId(); 137 $text = implode('', file($adresseTexte)); 138 $text = str_replace("(\r\n|\n|\r)", CM_NEWLINE, $text); 139 $html = implode('', file($adresseHTML)); 140 $html = str_replace("(\r\n|\n|\r)", CM_NEWLINE, $html); 141 } // Modification jpyrat 142 143 $template = array(); 144 $template['#ADDRESS#'] = $subscriberMetier->getEmail(); 145 $template['#FORMAT#'] = $mode; 146 //$template['#PROFILE#'] = $GLOBALS['meta']['CM_BASE_URL'].'profile.php?id='.$subscriberMetier->getProfile(); 147 // reliqua Clever Mail ? 148 // Modification Olivier Mansour 149 $subscriberlinkMetier = &recuperer_instance_subscriber_link(); 150 $subscriberlinkMetier->loadLstSub($newsletterMetier->getId(), $subscriberMetier->getId()); 151 152 // Composition du message de demande de confirmation 153 if ($GLOBALS['meta']['CM_BASE_TEMPLATE']) { 154 //$squel = lire_meta('CM_BASE_TEMPLATE'); 155 $CM_BASE_TEMPLATE = $GLOBALS['meta']['CM_BASE_TEMPLATE']; 156 } 157 else { 158 $CM_BASE_TEMPLATE = 'newsletter.php'; 159 } 160 161 //$URL_SITE_SPIP = lire_meta ('adresse_site'); 162 $URL_SITE_SPIP = $GLOBALS['meta']['adresse_site']; 163 164 // rajout d'un / éventuellement 165 if (substr($URL_SITE_SPIP, strlen($URL_SITE_SPIP) - 1, 1) != '/') 166 $URL_SITE_SPIP .= '/'; 167 $template['#UNSUBSCRIBE#'] 168 = $URL_SITE_SPIP . $CM_BASE_TEMPLATE . '?id=' . $subscriberlinkMetier->getLsrId(). '&typeAction=unsubscribe_ask'; 169 //$template['#UNSUBSCRIBE#'] = $GLOBALS['meta']['CM_BASE_URL'].'rm.php?id='.$subscriberlinkMetier->getLsrId(); 170 //$template['#UNSUBSCRIBE#'] = $GLOBALS['meta']['CM_BASE_URL'].'rm.php?id='.$subscriberMetier->getId(); 171 // fin modification Olivier Mansour 172 } 173 174 if ($myPost['id_auteur'] != 0) { 175 $auteurMetier = &recuperer_instance_auteur(); 176 $loadOK = $auteurMetier->load($myPost['id_auteur']); 177 178 if (PEAR::isError($loadOK)) { 179 die ($loadOK->getMessage()); 180 } 181 182 // recipient 183 if ($auteurMetier->getNom() == '') { 184 $to = $auteurMetier->getEmail(); 185 } 186 else { 187 $to = str_replace(' ', ' ', 188 '"' . trim($auteurMetier->getNom()). '" <' . $auteurMetier->getEmail(). '>'); 189 } 190 191 // subject 192 $subject = trim(($newsletterMetier->getSubjectTag() == 1 ? '[' . $newsletterMetier->getName(). '] ' 193 : ''). $newsletterInstanceMetier->getSubject()); 194 195 $headers = array('From' => $GLOBALS['meta']['CM_MAIL_FROM'], 'Reply-to' => $GLOBALS['meta']['CM_MAIL_FROM'], 196 'Subject' => $subject); 197 198 // message content 199 $squeletteHTML = $newsletterMetier->getHtmlSkeleton(); 200 $squeletteTexte = $newsletterMetier->getTexteSkeleton(); 201 202 $adresseHTML 203 = $GLOBALS['meta']['CM_BASE_URL']. '/previsualisationNL.php?fondNL=' . $squeletteHTML . '&nl_preview_path=' . $newsletterMetier->getId(). '/html/&id_post_newsletter=' . $newsletterInstanceMetier->getId(). '&id_personnalisation_newsletter=' . $myPost['id_auteur']. '&recalcul=oui&submit=Recalculer+cette+page'; 204 $adresseTexte 205 = $GLOBALS['meta']['CM_BASE_URL']. '/previsualisationNL.php?fondNL=' . $squeletteTexte . '&nl_preview_path=' . $newsletterMetier->getId(). '/texte/&id_post_newsletter=' . $newsletterInstanceMetier->getId(). '&id_personnalisation_newsletter=' . $myPost['id_auteur']. '&recalcul=oui&submit=Recalculer+cette+page'; 206 207 $text = implode('', file($adresseTexte)); 208 $text = str_replace("(\r\n|\n|\r)", CM_NEWLINE, $text); 209 $html = implode('', file($adresseHTML)); 210 $html = str_replace("(\r\n|\n|\r)", CM_NEWLINE, $html); 211 212 $template = array(); 213 $template['#ADDRESS#'] = $auteurMetier->getEmail(); 214 $template['#FORMAT#'] = $mode; 215 } 216 217 reset ($template); 218 219 while (list($templateFrom, $templateTo) = each($template)) { 220 $text2send = str_replace($templateFrom, $templateTo, $text); // Modification jpyrat 221 $html2send = str_replace($templateFrom, $templateTo, $html); // Modification jpyrat 222 } 223 224 if ($mode == 'text') { 225 // text message 226 $body = $text2send; // Modification jpyrat 227 } 228 else { 229 // Mime (HTML) message 230 $mime = new Mail_mime(CM_NEWLINE); 231 $mime->setTXTBody($text2send); // Modification jpyrat 232 $mime->setHTMLBody($html2send); // Modification jpyrat 233 // On fixe le charset du message en fonction de celui defini sur le site 234 $charset = lire_meta('charset'); 235 $builderParams = array('text_charset' => $charset, 'html_charset' => $charset); 236 237 $body = $mime->get($builderParams); 238 239 $headers = $mime->headers($headers); 240 } 241 242 $mail = &Mail::factory('mail'); 243 if ($mail->send($to, $headers, $body)) { 244 $newsletterInstanceMetier->deletePostQueued($myPost); 245 246 $setPostDoneOK = $newsletterInstanceMetier->setPostDone($myPost); 247 if (PEAR::isError($setPostDoneOK)) { 248 echo $setPostDoneOK->getMessage(). "\n"; // on ne devrait pas y arriver normallement 249 } 250 else { 251 if ($verbose == 'yes') { 252 echo "\n" . 'Message from list "' . $newsletterMetier->getName(). '" sent to ' . $to . ' in ' . $mode . ' format' . "\n"; 253 } 254 } 255 } 256 } 257 else { 258 if ($verbose == 'yes') { 259 echo "\n" . 'Message from list "' . $newsletterMetier->getName(). '" already sent to ' . $myPost['email']. "\n"; 260 // effacer ce mail de la pile post_queued 261 $newsletterInstanceMetier->deletePostQueued($myPost); 262 } 263 } 264 } 265 ?>
titre
Description
Corps
titre
Description
Corps
titre
Description
Corps
titre
Corps
Généré le : Sat Feb 24 14:40:03 2007 | par Balluche grâce à PHPXref 0.7 |