[ Index ]

PHP Cross Reference of phpwcms V1.4.3 _r380 (23.11.09)

title

Body

[close]

/include/inc_lib/ -> newsletter.form.inc.php (source)

   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  ?>


Generated: Wed Dec 30 05:55:15 2009 Cross-referenced by PHPXref 0.7