summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristian Fowler <spider@viovio.com>2005-12-21 09:02:22 +0000
committerChristian Fowler <spider@viovio.com>2005-12-21 09:02:22 +0000
commit4bf28d9d32df9ad5e040b214d15d4af57eeed847 (patch)
tree13e55c2bd28cfa18bd5d62274517dd7f0e4120b5
parent23026641de4ecfaa978485b1a6d808bd12f0e791 (diff)
downloadnewsletters-4bf28d9d32df9ad5e040b214d15d4af57eeed847.tar.gz
newsletters-4bf28d9d32df9ad5e040b214d15d4af57eeed847.tar.bz2
newsletters-4bf28d9d32df9ad5e040b214d15d4af57eeed847.zip
add smtp error logging, schema changes
-rw-r--r--BitMailer.php35
-rw-r--r--BitNewsletter.php23
-rw-r--r--BitNewsletterEdition.php10
-rw-r--r--admin/schema_inc.php11
4 files changed, 47 insertions, 32 deletions
diff --git a/BitMailer.php b/BitMailer.php
index 41cdfab..797cb0f 100644
--- a/BitMailer.php
+++ b/BitMailer.php
@@ -1,12 +1,12 @@
<?php
/**
- * $Header: /cvsroot/bitweaver/_bit_newsletters/Attic/BitMailer.php,v 1.2 2005/12/20 22:05:07 spiderr Exp $
+ * $Header: /cvsroot/bitweaver/_bit_newsletters/Attic/BitMailer.php,v 1.3 2005/12/21 09:02:21 spiderr Exp $
*
* Copyright (c) 2004 bitweaver.org
* All Rights Reserved. See copyright.txt for details and a complete list of authors.
* Licensed under the GNU LESSER GENERAL PUBLIC LICENSE. See license.txt for details
*
- * $Id: BitMailer.php,v 1.2 2005/12/20 22:05:07 spiderr Exp $
+ * $Id: BitMailer.php,v 1.3 2005/12/21 09:02:21 spiderr Exp $
*
* Class that handles editions of newsletters
* @package newsletters
@@ -15,7 +15,7 @@
*
* @author spiderr <spider@steelsun.com>
*
- * @version $Revision: 1.2 $ $Date: 2005/12/20 22:05:07 $ $Author: spiderr $
+ * @version $Revision: 1.3 $ $Date: 2005/12/21 09:02:21 $ $Author: spiderr $
*/
/**
@@ -32,13 +32,16 @@ class BitMailer extends phpmailer {
var $Mailer; // Alternative to IsSMTP()
var $WordWrap;
function BitMailer () {
- global $gBitDb, $gBitSystem;
+ global $gBitDb, $gBitSystem, $gBitLanguage;
$this->mDb = $gBitDb;
$this->From = $gBitSystem->getPreference( 'bitmailer_sender_email', $gBitSystem->getPreference( 'sender_email', $_SERVER['SERVER_ADMIN'] ) );
$this->FromName = $gBitSystem->getPreference( 'bitmailer_from', $gBitSystem->getPreference( 'siteTitle' ) );
$this->Host = $gBitSystem->getPreference( 'bitmailer_servers', $gBitSystem->getPreference( 'feature_server_name', $_SERVER['HTTP_HOST'] ) );
$this->Mailer = $gBitSystem->getPreference( 'bitmailer_protocol', 'smtp' ); // Alternative to IsSMTP()
$this->WordWrap = $gBitSystem->getPreference( 'bitmailer_word_wrap', 75 );
+ if( !$this->SetLanguage( $gBitLanguage->getLanguage(), UTIL_PKG_PATH.'phpmailer/language/' ) ) {
+ $this->SetLanguage( 'en' );
+ }
}
// Replace the default error_handler
@@ -93,10 +96,13 @@ class BitMailer extends phpmailer {
// $content[$pick['content_id']] = LibertyBase::getLibertyObject();
}
if( !empty( $body[$pick['content_id']] ) ) {
- $this->sendMail( $pick, $body[$pick['content_id']]['subject'], $body[$pick['content_id']]['body'] );
-die;
- $this->mDb->query( $updateQuery, array( time(), $pick['content_id'], $pick['email'] ) );
- $updateQuery = "UPDATE `".BIT_DB_PREFIX."tiki_mail_queue` SET `sent_date`=? WHERE `content_id`=? AND `email`=?";
+ $pick['code'] = md5( $pick['content_id'].$pick['email'].$pick['queue_date'] );
+
+ if( !$this->sendMail( $pick, $body[$pick['content_id']]['subject'], $body[$pick['content_id']]['body'] ) ) {
+ $this->logError( $pick );
+ }
+ $updateQuery = "UPDATE `".BIT_DB_PREFIX."tiki_mail_queue` SET `sent_date`=?,`url_code`=? WHERE `content_id`=? AND `email`=?";
+ $this->mDb->query( $updateQuery, array( time(), $pick['code'], $pick['content_id'], $pick['email'] ) );
$this->mDb->CompleteTrans();
$this->mDb->StartTrans();
}
@@ -117,7 +123,6 @@ die;
$this->AddAddress( $pRecipient['email'], $pRecipient["full_name"] );
if(!$this->Send()) {
$ret = FALSE;
- echo "There has been a mail error sending to " . $pRecipient["email"] . "<br>";
}
// Clear all addresses and attachments for next loop
@@ -126,5 +131,17 @@ die;
return $ret;
}
+ function logError( $pInfo ) {
+ if( !empty( $pInfo['url_code'] ) && !$this->mDb->getOne( "SELECT `url_code` FROM `".BIT_DB_PREFIX."tiki_mail_errors` WHERE `url_code`=?", array( $pInfo['url_code'] ) ) ) {
+ $store['url_code'] = $pInfo['url_code'];
+ $store['user_id'] = !empty( $pInfo['user_id'] ) ? $pInfo['user_id'] : NULL;
+ $store['content_id'] = !empty( $pInfo['content_id'] ) ? $pInfo['content_id'] : NULL;
+ $store['email'] = !empty( $pInfo['email'] ) ? $pInfo['email'] : NULL;
+ $store['error_message'] = $this->ErrorInfo;
+ $store['error_date'] = time();
+ $this->mDb->associateInsert( BIT_DB_PREFIX."tiki_mail_errors", $store );
+ }
+ }
+
}
?> \ No newline at end of file
diff --git a/BitNewsletter.php b/BitNewsletter.php
index 15e1134..d05c898 100644
--- a/BitNewsletter.php
+++ b/BitNewsletter.php
@@ -1,12 +1,12 @@
<?php
/**
- * $Header: /cvsroot/bitweaver/_bit_newsletters/BitNewsletter.php,v 1.7 2005/12/20 17:59:16 spiderr Exp $
+ * $Header: /cvsroot/bitweaver/_bit_newsletters/BitNewsletter.php,v 1.8 2005/12/21 09:02:22 spiderr Exp $
*
* Copyright (c) 2004 bitweaver.org
* All Rights Reserved. See copyright.txt for details and a complete list of authors.
* Licensed under the GNU LESSER GENERAL PUBLIC LICENSE. See license.txt for details
*
- * $Id: BitNewsletter.php,v 1.7 2005/12/20 17:59:16 spiderr Exp $
+ * $Id: BitNewsletter.php,v 1.8 2005/12/21 09:02:22 spiderr Exp $
*
* Virtual base class (as much as one can have such things in PHP) for all
* derived tikiwiki classes that require database access.
@@ -16,7 +16,7 @@
*
* @author drewslater <andrew@andrewslater.com>, spiderr <spider@steelsun.com>
*
- * @version $Revision: 1.7 $ $Date: 2005/12/20 17:59:16 $ $Author: spiderr $
+ * @version $Revision: 1.8 $ $Date: 2005/12/21 09:02:22 $ $Author: spiderr $
*/
/**
@@ -128,19 +128,12 @@ class BitNewsletter extends LibertyContent {
if( $this->getField( 'validate_addr' ) == 'y' ) {
// Generate a code and store it and send an email with the
// URL to confirm the subscription put valid as 'n'
- $foo = parse_url($_SERVER["REQUEST_URI"]);
- $foopath = preg_replace('/tiki-admin_newsletter_subscriptions.php/', 'tiki-newsletters.php', $foo["path"]);
- $url_subscribe = httpPrefix(). $foopath;
$query = "delete from `".BIT_DB_PREFIX."tiki_newsletter_subscriptions` where `nl_id`=? and `email`=?";
$result = $this->mDb->query( $query, array( $this->mNlId, $email ) );
$query = "insert into `".BIT_DB_PREFIX."tiki_newsletter_subscriptions`(`nl_id`,`email`,`code`,`valid`,`subscribed`) values(?,?,?,?,?)";
$result = $this->mDb->query( $query, array( $this->mNlId, $email, $code, 'n', (int)$now ) );
// Now send an email to the address with the confirmation instructions
- $gBitSmarty->assign( 'mail_date', date("U") );
- $gBitSmarty->assign( 'mail_user', $email );
$gBitSmarty->assign( 'code', $code );
- $gBitSmarty->assign( 'url_subscribe', $url_subscribe );
- $gBitSmarty->assign( 'server_name', $_SERVER["SERVER_NAME"] );
$mail_data = $gBitSmarty->fetch('bitpackage:newsletters/confirm_newsletter_subscription.tpl');
@mail($email, tra('Newsletter subscription information at '). $_SERVER["SERVER_NAME"], $mail_data,
"From: $sender_email\r\nContent-type: text/plain;charset=utf-8\r\n");
@@ -158,10 +151,8 @@ class BitNewsletter extends LibertyContent {
function confirmSubscription($code) {
global $gBitSmarty;
- global $user;
+ global $gBitUser;
global $sender_email;
- $foo = parse_url($_SERVER["REQUEST_URI"]);
- $url_subscribe = httpPrefix(). $foo["path"];
$query = "select * from `".BIT_DB_PREFIX."tiki_newsletter_subscriptions` where `code`=?";
$result = $this->mDb->query($query,array($code));
@@ -173,10 +164,7 @@ class BitNewsletter extends LibertyContent {
$query = "update `".BIT_DB_PREFIX."tiki_newsletter_subscriptions` set `valid`=? where `code`=?";
$result = $this->mDb->query($query,array('y',$code));
// Now send a welcome email
- $gBitSmarty->assign('mail_date', date("U"));
- $gBitSmarty->assign('mail_user', $user);
$gBitSmarty->assign('code', $res["code"]);
- $gBitSmarty->assign('url_subscribe', $url_subscribe);
$mail_data = $gBitSmarty->fetch('bitpackage:newsletters/newsletter_welcome.tpl');
@mail($res["email"], tra('Welcome to '). $info["name"] . tra(' at '). $_SERVER["SERVER_NAME"], $mail_data,
"From: $sender_email\r\nContent-type: text/plain;charset=utf-8\r\n");
@@ -201,9 +189,6 @@ class BitNewsletter extends LibertyContent {
$query = "delete from `".BIT_DB_PREFIX."tiki_newsletter_subscriptions` where `code`=?";
$result = $this->mDb->query($query,array($code));
// Now send a bye bye email
- $gBitSmarty->assign('mail_date', date("U"));
- $gBitSmarty->assign('mail_user', $user);
- $gBitSmarty->assign('url_subscribe', $url_subscribe);
$mail_data = $gBitSmarty->fetch('bitpackage:newsletters/newsletter_byebye.tpl');
@mail($res["email"], tra('Bye bye from '). $info["name"] . tra(' at '). $_SERVER["SERVER_NAME"], $mail_data,
"From: $sender_email\r\nContent-type: text/plain;charset=utf-8\r\n");
diff --git a/BitNewsletterEdition.php b/BitNewsletterEdition.php
index e831682..9cdb220 100644
--- a/BitNewsletterEdition.php
+++ b/BitNewsletterEdition.php
@@ -1,12 +1,12 @@
<?php
/**
- * $Header: /cvsroot/bitweaver/_bit_newsletters/BitNewsletterEdition.php,v 1.8 2005/12/20 17:59:16 spiderr Exp $
+ * $Header: /cvsroot/bitweaver/_bit_newsletters/BitNewsletterEdition.php,v 1.9 2005/12/21 09:02:22 spiderr Exp $
*
* Copyright (c) 2004 bitweaver.org
* All Rights Reserved. See copyright.txt for details and a complete list of authors.
* Licensed under the GNU LESSER GENERAL PUBLIC LICENSE. See license.txt for details
*
- * $Id: BitNewsletterEdition.php,v 1.8 2005/12/20 17:59:16 spiderr Exp $
+ * $Id: BitNewsletterEdition.php,v 1.9 2005/12/21 09:02:22 spiderr Exp $
*
* Class that handles editions of newsletters
* @package newsletters
@@ -15,7 +15,7 @@
*
* @author spiderr <spider@steelsun.com>
*
- * @version $Revision: 1.8 $ $Date: 2005/12/20 17:59:16 $ $Author: spiderr $
+ * @version $Revision: 1.9 $ $Date: 2005/12/21 09:02:22 $ $Author: spiderr $
*/
/**
@@ -198,7 +198,9 @@ class BitNewsletterEdition extends LibertyAttachable {
$ret = NULL;
if( $this->isValid() ) {
$gBitSmarty->assign_by_ref( 'gContent', $this );
- $ret = $gBitSmarty->fetch( 'bitpackage:newsletters/view_edition.tpl' );
+ $ret = $gBitSmarty->fetch( 'bitpackage:newsletters/unsubscribe_inc.tpl' );
+ $ret .= $gBitSmarty->fetch( 'bitpackage:newsletters/view_edition.tpl' );
+ $ret .= $gBitSmarty->fetch( 'bitpackage:newsletters/unsubscribe_inc.tpl' );
}
return $ret;
}
diff --git a/admin/schema_inc.php b/admin/schema_inc.php
index faafe42..99f20ab 100644
--- a/admin/schema_inc.php
+++ b/admin/schema_inc.php
@@ -14,6 +14,16 @@ $tables = array(
CONSTRAINTS ', CONSTRAINT `tiki_nl_ed_con_ref` FOREIGN KEY (`content_id`) REFERENCES `".BIT_DB_PREFIX."tiki_content`( `content_id` )'
",
+'tiki_mail_errors' => "
+ url_code C(32) PRIMARY,
+ email C(160),
+ user_id I4,
+ content_id I4,
+ error_date I8,
+ error_message X
+ CONSTRAINTS ', CONSTRAINT `tiki_mail_err_user_ref` FOREIGN KEY (`user_id`) REFERENCES `".BIT_DB_PREFIX."users_users`( `user_id` )'
+"
+
'tiki_mail_unsubscriptions' => "
content_id I4 PRIMARY,
email C(160) PRIMARY,
@@ -45,6 +55,7 @@ $tables = array(
content_id I4 PRIMARY,
email C(160) PRIMARY,
user_id I4,
+ url_code C(32),
queue_date I8 NOTNULL,
begin_date I8,
sent_date I8