function sendQueue($pQueueMixed)
 {
     global $gBitSmarty, $gBitSystem, $gBitLanguage;
     static $body = array();
     if (is_array($pQueueMixed)) {
         $pick = $pQueueMixed;
     } elseif (is_numeric($pQueueMixed)) {
         $pick = $this->mDb->GetRow("SELECT * FROM `" . BIT_DB_PREFIX . "mail_queue` mq WHERE `mail_queue_id` = ? " . $this->mDb->SQLForUpdate(), array($pQueueMixed));
     }
     if (!empty($pick)) {
         $startTime = microtime(TRUE);
         $this->mDb->query("UPDATE `" . BIT_DB_PREFIX . "mail_queue` SET `begin_date`=? WHERE `mail_queue_id` = ? ", array(time(), $pick['mail_queue_id']));
         if (!empty($pick['user_id'])) {
             $userHash = $this->mDb->getRow("SELECT * FROM `" . BIT_DB_PREFIX . "users_users` WHERE `user_id`=?", array($pick['user_id']));
             $pick['full_name'] = BitUser::getDisplayName(FALSE, $userHash);
         } else {
             $pick['full_name'] = NULL;
         }
         if (!isset($body[$pick['content_id']])) {
             $gBitSmarty->assign('sending', TRUE);
             // We only support sending of newsletters currently
             $content = new BitNewsletterEdition(NULL, $pick['content_id']);
             if ($content->load()) {
                 $body[$pick['content_id']]['body'] = $content->render();
                 $body[$pick['content_id']]['subject'] = $content->getTitle();
                 $body[$pick['content_id']]['reply_to'] = $content->getField('reply_to', $gBitSystem->getConfig('site_sender_email', $_SERVER['SERVER_ADMIN']));
                 $body[$pick['content_id']]['object'] = $content;
             } else {
                 bit_error_log($this->mErrors);
             }
             //				$content[$pick['content_id']] = LibertyBase::getLibertyObject();
         }
         print "[ {$pick['mail_queue_id']} ] {$pick['content_id']} TO: {$pick['email']}\t";
         $unsub = $this->getUnsubscription($pick['email'], $pick['nl_content_id']);
         if (!empty($unsub)) {
             print " SKIPPED (unsubscribed) <br/>\n";
             $this->mDb->query("DELETE FROM `" . BIT_DB_PREFIX . "mail_queue` WHERE `mail_queue_id`=?", array($pick['mail_queue_id']));
         } elseif (!empty($body[$pick['content_id']])) {
             $pick['url_code'] = md5($pick['content_id'] . $pick['email'] . $pick['queue_date']);
             $unsub = '';
             if ($body[$pick['content_id']]['object']->mNewsletter->getField('unsub_msg')) {
                 $gBitSmarty->assign('url_code', $pick['url_code']);
             }
             $gBitSystem->preDisplay('');
             $gBitSmarty->assign('sending', TRUE);
             $gBitSmarty->assign('unsubMessage', $unsub);
             $gBitSmarty->assign('trackCode', $pick['url_code']);
             $gBitSmarty->assign('mid', 'bitpackage:newsletters/view_edition.tpl');
             $htmlBody = $gBitSmarty->fetch('bitpackage:newsletters/mail_edition.tpl');
             $htmlBody = bit_add_clickthrough($htmlBody, $pick['url_code']);
             $mailer = new PHPMailer();
             if ($gBitSystem->getConfig('bitmailer_errors_to')) {
                 $mailer->Sender = $gBitSystem->getConfig('bitmailer_errors_to');
                 $mailer->addCustomHeader("Errors-To: " . $gBitSystem->getConfig('bitmailer_errors_to'));
             }
             $mailer->From = $gBitSystem->getConfig('bitmailer_sender_email', $gBitSystem->getConfig('site_sender_email', $_SERVER['SERVER_ADMIN']));
             $mailer->FromName = $gBitSystem->getConfig('bitmailer_from', $gBitSystem->getConfig('site_title'));
             $mailer->Host = $gBitSystem->getConfig('bitmailer_servers', $gBitSystem->getConfig('kernel_server_name', '127.0.0.1'));
             $mailer->Mailer = $gBitSystem->getConfig('bitmailer_protocol', 'smtp');
             // Alternative to IsSMTP()
             $mailer->CharSet = 'UTF-8';
             if ($gBitSystem->getConfig('bitmailer_smtp_username')) {
                 $mailer->SMTPAuth = TRUE;
                 $mailer->Username = $gBitSystem->getConfig('bitmailer_smtp_username');
             }
             if ($gBitSystem->getConfig('bitmailer_smtp_password')) {
                 $mailer->Password = $gBitSystem->getConfig('bitmailer_smtp_password');
             }
             $mailer->WordWrap = $gBitSystem->getConfig('bitmailer_word_wrap', 75);
             if (!$mailer->SetLanguage($gBitLanguage->getLanguage(), UTIL_PKG_PATH . 'phpmailer/language/')) {
                 $mailer->SetLanguage('en');
             }
             $mailer->ClearReplyTos();
             $mailer->AddReplyTo($body[$pick['content_id']]['reply_to'], $gBitSystem->getConfig('bitmailer_from'));
             $mailer->Body = $htmlBody;
             $mailer->Subject = $body[$pick['content_id']]['subject'];
             $mailer->IsHTML(TRUE);
             $mailer->AltBody = '';
             $mailer->AddAddress($pick['email'], $pick["full_name"]);
             if ($mailer->Send()) {
                 print " SENT " . round(microtime(TRUE) - $startTime, 2) . " secs<br/>\n";
                 flush();
                 $updateQuery = "UPDATE `" . BIT_DB_PREFIX . "mail_queue` SET `sent_date`=?,`url_code`=?  WHERE `content_id`=? AND `email`=?";
                 $this->mDb->query($updateQuery, array(time(), $pick['url_code'], $pick['content_id'], $pick['email']));
             } else {
                 $updateQuery = "UPDATE `" . BIT_DB_PREFIX . "mail_queue` SET `mail_error`=?,`sent_date`=?  WHERE `content_id`=? AND `email`=?";
                 $this->mDb->query($updateQuery, array($mailer->ErrorInfo, time(), $pick['content_id'], $pick['email']));
                 $pick['error'] = $mailer->ErrorInfo;
                 $this->logError($pick);
             }
         }
     }
 }
<?php

require_once NEWSLETTERS_PKG_PATH . 'BitNewsletterMailer.php';
global $gBitSystem, $gBitUser;
$gBitSystem->verifyPackage('newsletters');
if (!$gBitUser->isRegistered() && !$gBitUser->hasPermission('p_newsletters_subscribe') && empty($_REQUEST["sub"])) {
    require_once NEWSLETTERS_PKG_PATH . 'lookup_newsletter_inc.php';
    /* List newsletters */
    $listHash = array();
    $newsletters = BitNewsletter::getList($listHash);
    foreach (array_keys($newsletters) as $contentId) {
        $listHash = array('nl_id' => $newsletters[$contentId]['nl_id']);
        $newsletters[$contentId]['editions'] = BitNewsletterEdition::getList($listHash);
    }
    $gBitSmarty->assignByRef('subs', BitNewsletter::getUserSubscriptions($gBitUser->getField('user_id'), $gBitUser->getField('email')));
    $gBitSmarty->assignByRef('newsletters', $newsletters);
}
Esempio n. 3
0
 function getEditions($pNewsletterId = NULL)
 {
     $ret = array();
     if (empty($pNewsletterId)) {
         $nlId = $this->mNewsletterId;
     } elseif (BitBase::verifyId($pNewsletterId)) {
         $nlId = $pNewsletterId;
     }
     if (!empty($nlId)) {
         $listHash = array('nl_id' => $nlId);
         $ret = BitNewsletterEdition::getList($listHash);
     }
     return $ret;
 }
<?php

/**
 * Copyright (c) 2005 bitweaver.org
 * All Rights Reserved. See below for details and a complete list of authors.
 * Licensed under the GNU LESSER GENERAL PUBLIC LICENSE. See http://www.gnu.org/copyleft/lesser.html for details
 *
 * created 2005/12/10
 *
 * @package newsletters
 * @author spider <*****@*****.**>
 */
/** 
 * Initialization
 */
require_once NEWSLETTERS_PKG_PATH . 'BitNewsletterEdition.php';
if (empty($gContent) || !is_object($gContent) || !$gContent->isValid()) {
    $editionId = !empty($_REQUEST['edition_id']) ? $_REQUEST['edition_id'] : NULL;
    $conId = !empty($_REQUEST['content_id']) ? $_REQUEST['content_id'] : NULL;
    $nlId = !empty($_REQUEST['nl_id']) ? $_REQUEST['nl_id'] : NULL;
    $gContent = new BitNewsletterEdition($editionId, $conId, $nlId);
    $gContent->load();
    $gBitSmarty->assignByRef('gContent', $gContent);
}
 function getList(&$pListHash)
 {
     global $gBitDb;
     $bindVars = array();
     parent::prepGetList($pListHash);
     $mid = '';
     if (@BitBase::verifyId($pListHash['nl_id'])) {
         $mid .= (empty($mid) ? 'WHERE' : 'AND') . ' n.nl_id=? ';
         $bindVars[] = $pListHash['nl_id'];
     }
     if ($pListHash['find']) {
         $findesc = '%' . $pListHash['find'] . '%';
         $mid .= (empty($mid) ? 'WHERE' : 'AND') . ' (lc.`title` like ? or lc.`data` like ?)';
         $bindVars[] = $findesc;
         $bindVars[] = $findesc;
     }
     $query = "SELECT `edition_id` AS `hash_key`, ne.*, lc.*, lc2.`title` AS `newsletter_title`\n\t\t\t\t  FROM `" . BIT_DB_PREFIX . "newsletters_editions` ne\n\t\t\t\t  \tINNER JOIN `" . BIT_DB_PREFIX . "liberty_content` lc ON( lc.`content_id`=ne.`content_id` )\n\t\t\t\t  \tINNER JOIN `" . BIT_DB_PREFIX . "newsletters` n ON( ne.`nl_content_id`=n.`content_id` )\n\t\t\t\t  \tLEFT OUTER JOIN `" . BIT_DB_PREFIX . "liberty_content` lc2 ON( n.`content_id`=lc2.`content_id` )\n\t\t\t\t  {$mid} ORDER BY " . $gBitDb->convertSortmode($pListHash['sort_mode']);
     $query_cant = "select count(*) from `" . BIT_DB_PREFIX . "newsletters` n INNER JOIN `" . BIT_DB_PREFIX . "newsletters_editions` ne ON(n.`content_id`=ne.`nl_content_id`) {$mid}";
     $ret = $gBitDb->getAssoc($query, $bindVars, $pListHash['max_records'], $pListHash['offset']);
     foreach (array_keys($ret) as $k) {
         $ret[$k]['display_url'] = BitNewsletterEdition::getDisplayUrlFromHash($ret[$k]);
         // remove formating tags
         $data = preg_replace('/{[^{}]*}/', '', $ret[$k]['data']);
         //			$ret[$k]['parsed'] = BitNewsletterEdition::parseData( $data, $ret[$k]['format_guid'] );
     }
     $pListHash['total_records'] = $gBitDb->getOne($query_cant, $bindVars);
     $pListHash['block_pages'] = 5;
     $pListHash['total_pages'] = ceil($pListHash['total_records'] / $pListHash['max_records']);
     $pListHash['current_page'] = !empty($pListHash['offset']) ? floor($pListHash['offset'] / $pListHash['max_records']) + 1 : 1;
     return $ret;
 }