[ Index ] |
PHP Cross Reference of phpwcms V1.4.3 _r380 (23.11.09) |
[Summary view] [Print] [Text view]
1 <?php 2 /************************************************************************************* 3 Copyright notice 4 5 (c) 2002-2009 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 // ---------------------------------------------------------------- 24 // obligate check for phpwcms constants 25 if (!defined('PHPWCMS_ROOT')) { 26 die("You Cannot Access This Script Directly, Have a Nice Day."); 27 } 28 // ---------------------------------------------------------------- 29 30 $newsletter = array(); 31 32 // should show newsletter form 33 $newsletter["newsletter_id"] = intval($_GET["s"]); 34 $newsletter["newsletter_subject"] = ''; 35 $newsletter["newsletter_date"] = time(); 36 if(!isset($newsletter["newsletter_vars"])) { 37 $newsletter["newsletter_vars"] = array(); 38 } 39 $newsletter["newsletter_vars"]['from_name'] = ''; 40 $newsletter["newsletter_vars"]['from_email'] = ''; 41 $newsletter["newsletter_vars"]['replyto'] = ''; 42 $newsletter["newsletter_vars"]['html'] = ''; 43 $newsletter["newsletter_vars"]['text'] = ''; 44 $newsletter["newsletter_active"] = 0; 45 46 if(!empty($_GET["del"]) && intval($_GET["del"]) == $newsletter["newsletter_id"]) { 47 48 //delete newsletter now 49 $sql = "UPDATE ".DB_PREPEND."phpwcms_newsletter SET newsletter_trashed=9 "; 50 $sql .= "WHERE newsletter_id=".intval($_GET["del"])." LIMIT 1;"; 51 mysql_query($sql, $db) or die("error while deleting newsletter"); 52 headerRedirect(PHPWCMS_URL."phpwcms.php?do=messages&p=3"); 53 } 54 55 if(isset($_POST["newsletter_id"])) { 56 // read the create or edit subscription form data 57 $newsletter["newsletter_id"] = intval($_POST["newsletter_id"]); 58 $newsletter["newsletter_subject"] = clean_slweg($_POST["newsletter_subject"]); 59 if(!$newsletter["newsletter_subject"]) $newsletter['error']['subject'] = 1; 60 61 $newsletter['newsletter_vars']['from_name'] = clean_slweg($_POST["newsletter_fromname"]); 62 $newsletter['newsletter_vars']['from_email'] = clean_slweg($_POST["newsletter_fromemail"]); 63 if(!is_valid_email($newsletter['newsletter_vars']['from_email'])) { 64 $newsletter['error']['from_email'] = 1; 65 } 66 $newsletter['newsletter_vars']['replyto'] = clean_slweg($_POST["newsletter_replyto"]); 67 if(!is_valid_email($newsletter['newsletter_vars']['replyto'])) { 68 $newsletter['error']['replyto'] = 1; 69 } 70 71 $newsletter['newsletter_vars']['html'] = slweg($_POST["newsletter_html"]); 72 $newsletter['newsletter_vars']['text'] = clean_slweg($_POST["newsletter_text"]); 73 $newsletter["newsletter_vars"]['template'] = clean_slweg($_POST["newsletter_template"]); 74 75 $newsletter['newsletter_active'] = empty($_POST['newsletter_active']) ? 0 : 1; 76 77 if(!empty($_POST['newsletter_subscription']) && count($_POST['newsletter_subscription'])) { 78 foreach($_POST['newsletter_subscription'] as $value) { 79 $value = intval($value); 80 if($value) { 81 $newsletter['newsletter_vars']['subscription'][$value] = intval($value); 82 } else { 83 unset($newsletter['newsletter_vars']['subscription']); 84 $newsletter['newsletter_vars']['subscription'][0] = 0; 85 break; 86 } 87 } 88 } else { 89 $newsletter['newsletter_vars']['subscription'][0] = 0; 90 } 91 92 $sql = "newsletter_subject='".aporeplace($newsletter["newsletter_subject"])."', "; 93 $sql .= "newsletter_vars='".aporeplace(serialize($newsletter['newsletter_vars']))."' "; 94 95 if($newsletter["newsletter_id"]) { 96 $sql = "UPDATE ".DB_PREPEND."phpwcms_newsletter SET ".$sql; 97 $sql .= "WHERE newsletter_id=".$newsletter["newsletter_id"]." LIMIT 1"; 98 } else { 99 $sql = "INSERT INTO ".DB_PREPEND."phpwcms_newsletter SET newsletter_created=NOW(), ".$sql; 100 } 101 102 if(!isset($newsletter['error'])) { 103 104 // update or insert data entry 105 mysql_query($sql, $db) or die("error while updating or inserting newsletter datas"); 106 if(!$newsletter["newsletter_id"]) $newsletter["newsletter_id"] = mysql_insert_id($db); 107 108 // check recipients and subscriptions for building newsletter sending queue 109 if($newsletter['newsletter_active']) { 110 111 @set_time_limit(0); 112 113 if($recipients = _dbQuery('SELECT * FROM '.DB_PREPEND.'phpwcms_address WHERE address_verified=1')) { 114 115 $queue = array(); 116 117 foreach($recipients as $value) { 118 119 // check which subscription and compare with recipient 120 121 // check against "all" 122 if(empty($value['address_subscription'])) { 123 124 $queue[] = '(NOW(), NOW(), 0, '.$newsletter["newsletter_id"].', '.$value['address_id'].')'; 125 126 } else { 127 128 $value['address_subscription'] = unserialize($value['address_subscription']); 129 130 // run all 131 foreach($value['address_subscription'] as $subscr) { 132 133 $subscr = intval($subscr); 134 if(in_array($subscr, $newsletter['newsletter_vars']['subscription'])) { 135 136 $queue[] = '(NOW(), NOW(), 0, '.$newsletter["newsletter_id"].', '.$value['address_id'].')'; 137 138 break; 139 } 140 141 } 142 143 } 144 145 unset($recipients); 146 147 } 148 149 // create entries in the sending queue 150 151 /* queue_status: 152 [0] = unsent 153 [1] = sent 154 [2] = error 155 [3] = reset, will never be sent 156 */ 157 // first reset all unsent queue entries 158 159 $sql = 'UPDATE '.DB_PREPEND.'phpwcms_newsletterqueue SET '; 160 $sql .= 'queue_changed=NOW(), queue_status=3 '; 161 $sql .= 'WHERE queue_pid='.$newsletter["newsletter_id"].' AND queue_status=0'; 162 _dbQuery($sql, 'UPDATE'); 163 164 // now insert queue entries into db 165 $queue = array_chunk($queue, 2); 166 foreach($queue as $value) { 167 168 $sql = 'INSERT INTO '.DB_PREPEND.'phpwcms_newsletterqueue '; 169 $sql .= '(queue_created, queue_changed, queue_status, queue_pid, queue_rid) VALUES '; 170 $sql .= implode(', ', $value); 171 172 _dbQuery($sql, 'INSERT'); 173 174 } 175 176 } 177 178 } else { 179 180 // if unmarked -> first remove all unset recipients from queue for same newsletter 181 $sql = 'DELETE FROM '.DB_PREPEND.'phpwcms_newsletterqueue '; 182 $sql .= 'WHERE queue_pid='.$newsletter["newsletter_id"].' AND queue_status=0'; 183 _dbQuery($sql, 'DELETE'); 184 185 } 186 187 // update active status 188 $sql = "UPDATE ".DB_PREPEND.'phpwcms_newsletter SET '; 189 $sql .= 'newsletter_active='.$newsletter['newsletter_active'].' '; 190 $sql .= "WHERE newsletter_id=".$newsletter["newsletter_id"]; 191 @_dbQuery($sql, 'UPDATE'); 192 193 if(isset($_POST['close'])) { 194 headerRedirect(PHPWCMS_URL.'phpwcms.php?do=messages&p=3'); 195 } else { 196 headerRedirect(PHPWCMS_URL.'phpwcms.php?do=messages&p=3&s='.$newsletter["newsletter_id"].'&edit=1'); 197 } 198 } 199 } 200 201 if($newsletter["newsletter_id"] && !isset($_POST["newsletter_id"])) { 202 // read the given subscription datas from db 203 $sql = "SELECT *, UNIX_TIMESTAMP(newsletter_changed) AS newsletter_date FROM "; 204 $sql .= DB_PREPEND."phpwcms_newsletter WHERE newsletter_id=".$newsletter["newsletter_id"]." LIMIT 1;"; 205 if($result = mysql_query($sql, $db)) { 206 if($row = mysql_fetch_assoc($result)) { 207 $newsletter = $row; 208 $newsletter['newsletter_vars'] = unserialize($newsletter['newsletter_vars']); 209 } 210 mysql_free_result($result); 211 } 212 } 213 214 if($newsletter["newsletter_id"] && ($newsletter["newsletter_vars"]['html'] || $newsletter["newsletter_vars"]['text']) && !isset($newsletter['error'])) { 215 $show_nl_send = 1; 216 } else { 217 $show_nl_send = 0; 218 } 219 220 ?>
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
Generated: Wed Dec 30 05:55:15 2009 | Cross-referenced by PHPXref 0.7 |