diff options
| author | Christian Fowler <spider@viovio.com> | 2005-12-21 09:02:22 +0000 |
|---|---|---|
| committer | Christian Fowler <spider@viovio.com> | 2005-12-21 09:02:22 +0000 |
| commit | 4bf28d9d32df9ad5e040b214d15d4af57eeed847 (patch) | |
| tree | 13e55c2bd28cfa18bd5d62274517dd7f0e4120b5 | |
| parent | 23026641de4ecfaa978485b1a6d808bd12f0e791 (diff) | |
| download | newsletters-4bf28d9d32df9ad5e040b214d15d4af57eeed847.tar.gz newsletters-4bf28d9d32df9ad5e040b214d15d4af57eeed847.tar.bz2 newsletters-4bf28d9d32df9ad5e040b214d15d4af57eeed847.zip | |
add smtp error logging, schema changes
| -rw-r--r-- | BitMailer.php | 35 | ||||
| -rw-r--r-- | BitNewsletter.php | 23 | ||||
| -rw-r--r-- | BitNewsletterEdition.php | 10 | ||||
| -rw-r--r-- | admin/schema_inc.php | 11 |
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 |
