[ Index ] |
PHP Cross Reference of phpwcms V1.4.7 _r403 (01.11.10) |
[Summary view] [Print] [Text view]
1 <?php 2 /************************************************************************************* 3 Copyright notice 4 5 (c) 2002-2010 Oliver Georgi (oliver@phpwcms.de) // All rights reserved. 6 7 This script is part of PHPWCMS. The PHPWCMS web content management system is 8 free software; you can redistribute it and/or modify it under the terms of 9 the GNU General Public License as published by the Free Software Foundation; 10 either version 2 of the License, or (at your option) any later version. 11 12 The GNU General Public License can be found at http://www.gnu.org/copyleft/gpl.html 13 A copy is found in the textfile GPL.txt and important notices to the license 14 from the author is found in LICENSE.txt distributed with these scripts. 15 16 This script is distributed in the hope that it will be useful, but WITHOUT ANY 17 WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A 18 PARTICULAR PURPOSE. See the GNU General Public License for more details. 19 20 This copyright notice MUST APPEAR in all copies of the script! 21 *************************************************************************************/ 22 23 session_start(); 24 $phpwcms = array(); 25 require_once ('../../config/phpwcms/conf.inc.php'); 26 require_once ('../inc_lib/default.inc.php'); 27 require_once (PHPWCMS_ROOT.'/include/inc_lib/dbcon.inc.php'); 28 29 require_once (PHPWCMS_ROOT.'/include/inc_lib/general.inc.php'); 30 checkLogin(); 31 require_once (PHPWCMS_ROOT.'/include/inc_ext/phpmailer/class.phpmailer.php'); 32 //load default language EN 33 require_once (PHPWCMS_ROOT.'/include/inc_lang/backend/en/lang.inc.php'); 34 if($_SESSION["wcs_user_lang_custom"]) { //use custom lang if available -> was set in login.php 35 include(PHPWCMS_ROOT.'/include/inc_lang/backend/'.substr($_SESSION["wcs_user_lang"],0,2).'/lang.inc.php'); 36 } 37 38 ?> 39 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 40 <html xmlns="http://www.w3.org/1999/xhtml"> 41 <head> 42 <title>phpwcms: Send Newsletter</title> 43 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> 44 <link href="../inc_css/newsletter.iframe.css" rel="stylesheet" type="text/css" /> 45 </head> 46 <body> 47 <?php 48 49 $newsletter_id = empty($_GET['newsletter_id']) ? 0 : intval($_GET['newsletter_id']); 50 51 if($newsletter_id) { 52 // read the given subscription datas from db 53 $sql = "SELECT *FROM ".DB_PREPEND."phpwcms_newsletter WHERE newsletter_id=".$newsletter_id." LIMIT 1"; 54 $newsletter = _dbQuery($sql); 55 if(isset($newsletter[0]['newsletter_vars'])) { 56 $newsletter[0]['newsletter_vars'] = unserialize($newsletter[0]['newsletter_vars']); 57 $newsletter = $newsletter[0]; 58 } else { 59 $newsletter = false; 60 } 61 } else { 62 $newsletter = false; 63 } 64 65 if(!$newsletter) { 66 67 echo 'No valid newsletter ID given.'; 68 69 } elseif($_SESSION["wcs_user_admin"] == 1) { 70 71 $notest = 1; 72 $recipient = array(); 73 $loop = isset($_GET['loop']) ? intval($_GET['loop']) : 0; 74 if(!$loop && @ini_get('safe_mode') == '1') { 75 $loop = 25; 76 } 77 $pause = isset($_GET['pause']) ? intval($_GET['pause']) : 1; 78 79 //check if a test email should be send 80 if(!empty($_GET['send_testemail'])) { 81 82 $notest = 0; 83 84 $test_email_error = array(); 85 $test_email = clean_slweg($_GET['send_testemail']); 86 $test_email = str_replace(array(' ', ','), ';', $test_email); 87 $test_email = convertStringToArray($test_email, ';'); 88 89 foreach($test_email as $test_email_value) { 90 if(is_valid_email($test_email_value)) { 91 92 $recipient[] = array( 'address_name' => 'Newsletter test recipient', 93 'address_email' => $test_email_value, 94 'address_key' => '', 95 'queue_id' => 0 ); 96 97 echo '<p><strong>'.$BL['be_newsletter_testemail'].'</strong></p>'; 98 99 } else { 100 $test_email_error[] = $test_email_value; 101 } 102 } 103 104 if(count($test_email_error)) { 105 echo str_replace('###TEST###', ' • '.implode(' • ', $test_email_error), $BL['be_newsletter_testerror']); 106 } 107 108 109 } elseif(isset($_GET['send_confirm']) && $_GET['send_confirm'] == 'confirmed') { 110 111 // retrieve all recipients now 112 113 // disable time limit 114 if(!$loop) { 115 set_time_limit(0); 116 } 117 118 // retrieve recipients for current loop 119 $sql = 'SELECT address_key, address_email, address_name, queue_id '; 120 $sql .= 'FROM '.DB_PREPEND.'phpwcms_address '; 121 $sql .= 'LEFT JOIN '.DB_PREPEND.'phpwcms_newsletterqueue '; 122 $sql .= 'ON '.DB_PREPEND.'phpwcms_address.address_id = '.DB_PREPEND.'phpwcms_newsletterqueue.queue_rid '; 123 $sql .= 'WHERE '.DB_PREPEND.'phpwcms_newsletterqueue.queue_status=0 AND '; 124 $sql .= DB_PREPEND.'phpwcms_newsletterqueue.queue_pid='.$newsletter["newsletter_id"]; 125 if($loop) { 126 $sql .= ' LIMIT '.$loop; 127 } 128 $recipient = _dbQuery($sql); 129 130 131 } else { 132 133 // do nothing 134 135 } 136 137 138 if(count($recipient)) { 139 140 echo '<p><strong>'.$BL['be_newsletter_to'].': </strong><p>'; 141 142 // check for newsletter template 143 if(!empty($newsletter['newsletter_vars']['template']) && ($template = @file_get_contents(PHPWCMS_TEMPLATE.'inc_newsletter/'.$newsletter['newsletter_vars']['template'].'/newsletter.tmpl'))) { 144 $template_html = trim(get_tmpl_section('HTML', $template)); 145 $template_text = trim(get_tmpl_section('TEXT', $template)); 146 if($template_html) { 147 $newsletter['newsletter_vars']['html'] = str_replace('{CONTENT}', $newsletter['newsletter_vars']['html'], $template_html); 148 $newsletter['newsletter_vars']['html'] = preg_replace('/( src=["\'](?!http:|https:|mailto:))(.*?)/i', '$1'.PHPWCMS_URL.'$2', $newsletter['newsletter_vars']['html']); 149 } 150 if($template_text) { 151 $newsletter['newsletter_vars']['text'] = str_replace('{CONTENT}', $newsletter['newsletter_vars']['text'], $template_text); 152 } 153 } 154 155 $mail = new PHPMailer(); 156 $mail->Mailer = $phpwcms['SMTP_MAILER']; 157 $mail->Host = $phpwcms['SMTP_HOST']; 158 $mail->Port = $phpwcms['SMTP_PORT']; 159 $mail->CharSet = $phpwcms["charset"]; 160 if($phpwcms['SMTP_AUTH']) { 161 $mail->SMTPAuth = 1; 162 $mail->Username = $phpwcms['SMTP_USER']; 163 $mail->Password = $phpwcms['SMTP_PASS']; 164 } 165 166 $mail->From = $newsletter['newsletter_vars']['from_email']; 167 $mail->FromName = $newsletter['newsletter_vars']['from_name']; 168 $mail->Sender = $newsletter['newsletter_vars']['replyto']; 169 $mail->Subject = $newsletter['newsletter_subject']; 170 171 if(!$mail->SetLanguage($phpwcms['default_lang'])) { 172 $mail->SetLanguage('en'); 173 } 174 175 $mail->SMTPKeepAlive = true; 176 177 $x = 0; 178 179 foreach($recipient as $value) { 180 181 if($x == 20) { 182 $mail->SmtpClose(); // Manually close the SMTP connection 183 $mail->SMTPKeepAlive = true; 184 } 185 186 $mail->AddAddress($value['address_email'], $value['address_name']); 187 188 if($newsletter['newsletter_vars']['html'] && $newsletter['newsletter_vars']['text']) { 189 //send both TEXT and HTML part 190 $mail->Body = build_email_text($newsletter['newsletter_vars']['html'], $value); 191 $mail->AltBody = build_email_text($newsletter['newsletter_vars']['text'], $value); 192 $mail->IsHTML(1); 193 } 194 195 if($newsletter['newsletter_vars']['html'] && !$newsletter['newsletter_vars']['text']) { 196 //send HTML part 197 $mail->Body = build_email_text($newsletter['newsletter_vars']['html'], $value); 198 $mail->IsHTML(1); 199 } 200 201 if(!$newsletter['newsletter_vars']['html'] && $newsletter['newsletter_vars']['text']) { 202 //send TEXT part 203 $mail->Body = build_email_text($newsletter['newsletter_vars']['text'], $value); 204 $mail->IsHTML(0); 205 } 206 207 // update newsletter queue 208 $sql = 'UPDATE '.DB_PREPEND.'phpwcms_newsletterqueue SET '; 209 $sql .= 'queue_changed=NOW(), '; 210 if( ( $mailresult = $mail->Send() ) == false ) { 211 // save error information 212 $sql .= 'queue_status=2, '; 213 $sql .= "queue_errormsg='".aporeplace($mail->ErrorInfo)."' "; 214 } else { 215 // save success 216 $sql .= 'queue_status=1 '; 217 } 218 $sql .= 'WHERE queue_id='.$value['queue_id']; 219 @_dbQuery($sql, 'UPDATE'); 220 221 if($mailresult == false) { 222 echo '<p style="color:#CC3300">'.$value['address_email'].' ('.$mail->ErrorInfo.')</p>'; 223 } else { 224 echo '. '; 225 } 226 flush(); 227 228 $mail->ClearAddresses(); 229 $x++; 230 231 if($loop && $loop == $x) { 232 $mail->SmtpClose(); 233 updateSentDate($newsletter["newsletter_id"]); 234 echo '<script type="text/javascript">'.LF.SCRIPT_CDATA_START.LF; 235 echo 'function loopIt() { self.location.href="act_sendnewsletter.php?'; 236 echo 'newsletter_id='.$newsletter["newsletter_id"].'&'; 237 echo 'send_confirm=confirmed&loop='.$loop.'&pause='.$pause.'"; }'.LF; 238 echo 'window.setTimeout("loopIt()", '. ($pause * 1000) .')'.LF; 239 echo LF.SCRIPT_CDATA_END.LF.'</script></body></html>'; 240 241 flush(); 242 exit(); 243 } 244 245 } 246 247 $mail->SmtpClose(); 248 updateSentDate($newsletter["newsletter_id"]); 249 echo '<br /><br />'; 250 echo $BL['be_newsletter_ready']; 251 252 253 } 254 255 } else { 256 echo 'no permission'; 257 } 258 259 function build_email_text($text, &$value) { 260 261 //build right message part 262 $refkey = rawurlencode($value['address_key']); 263 264 $text = str_replace('###RECIPIENT_NAME###', $value['address_name'], $text); 265 $text = str_replace('###RECIPIENT_EMAIL###', $value['address_email'], $text); 266 $text = str_replace('###SITE_URL###', PHPWCMS_URL, $text); 267 $text = str_replace('###VERIFY_LINK###', PHPWCMS_URL.'verify.php?s='.$refkey, $text); 268 $text = str_replace('###DELETE_LINK###', PHPWCMS_URL.'verify.php?u='.$refkey, $text); 269 270 return $text; 271 272 } 273 274 function updateSentDate($id=0) { 275 276 $sql = "UPDATE ".DB_PREPEND."phpwcms_newsletter SET "; 277 $sql .= "newsletter_lastsending=NOW(), "; 278 $sql .= "newsletter_changed=newsletter_changed "; 279 $sql .= "WHERE newsletter_id=".$id." LIMIT 1"; 280 _dbQuery($sql, 'UPDATE'); 281 282 } 283 284 285 ?> 286 </body> 287 </html>
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
Generated: Tue Nov 16 22:51:00 2010 | Cross-referenced by PHPXref 0.7 |