diff --git a/code/Newsletter/NewsletterEmailProcess.php b/code/Newsletter/NewsletterEmailProcess.php index 90a710f6..b270850d 100755 --- a/code/Newsletter/NewsletterEmailProcess.php +++ b/code/Newsletter/NewsletterEmailProcess.php @@ -8,7 +8,7 @@ class NewsletterEmailProcess extends BatchProcess { protected $nlType; protected $messageID; - function __construct( $subject, $body, $from, $newsletter, $nlType, $messageID = null ) { + function __construct( $subject, $body, $from, $newsletter, $nlType, $messageID = null, $only_to_unsent = 0) { $this->subject = $subject; $this->body = $body; @@ -17,7 +17,13 @@ class NewsletterEmailProcess extends BatchProcess { $this->nlType = $nlType; $this->messageID = $messageID; - parent::__construct( $nlType->Recipients() ); + $groupID = $nlType->GroupID; + // Allow sending to only those who have not already received it. + if (0 == $only_to_unsent) { + parent::__construct( DataObject::get( 'Member', "`GroupID`='$groupID'", null, "INNER JOIN `Group_Members` ON `MemberID`=`Member`.`ID`" ) ); + } else { + parent::__construct( $newsletter->UnsentSubscribers() ); + } } diff --git a/code/NewsletterAdmin.php b/code/NewsletterAdmin.php index 73e673b1..dcb2bdcd 100755 --- a/code/NewsletterAdmin.php +++ b/code/NewsletterAdmin.php @@ -441,6 +441,11 @@ class NewsletterAdmin extends LeftAndMain { break; case "List": echo self::sendToList( $subject, $body, $from, $newsletter, $nlType, $messageID ); + break; + case "Unsent": + $only_to_unsent = 1; + echo self::sendToList( $subject, $body, $from, $newsletter, $nlType, $messageID, $only_to_unsent); + break; } return FormResponse::respond(); @@ -452,8 +457,8 @@ class NewsletterAdmin extends LeftAndMain { $email->send(); } - static function sendToList( $subject, $body, $from, $newsletter, $nlType, $messageID = null ) { - $emailProcess = new NewsletterEmailProcess( $subject, $body, $from, $newsletter, $nlType, $messageID ); + static function sendToList( $subject, $body, $from, $newsletter, $nlType, $messageID = null, $only_to_unsent = 0) { + $emailProcess = new NewsletterEmailProcess( $subject, $body, $from, $newsletter, $nlType, $messageID, $only_to_unsent); return $emailProcess->start(); } diff --git a/templates/Includes/NewsletterAdmin_right.ss b/templates/Includes/NewsletterAdmin_right.ss index 6f6f18bb..f72c083b 100755 --- a/templates/Includes/NewsletterAdmin_right.ss +++ b/templates/Includes/NewsletterAdmin_right.ss @@ -11,7 +11,8 @@ $SendProgressBar