From 2e27fd5c2104828ff4d126beb702945dcea41a6d Mon Sep 17 00:00:00 2001 From: Martin Kamerbeek Date: Thu, 20 May 2010 17:53:32 +0200 Subject: [PATCH] Cleanup when deleting or canceling. --- lib/WebGUI/Mailing.pm | 30 +++++++++++++++++++++++++++++- 1 file changed, 29 insertions(+), 1 deletion(-) diff --git a/lib/WebGUI/Mailing.pm b/lib/WebGUI/Mailing.pm index 56b0a5a..d0a935f 100644 --- a/lib/WebGUI/Mailing.pm +++ b/lib/WebGUI/Mailing.pm @@ -23,6 +23,8 @@ sub cancel { sendDate => undef, } ); + $self->deleteQueuedEmails; + return; } @@ -66,6 +68,25 @@ sub crud_definition { return $definition; } +sub delete { + my $self = shift; + + $self->deleteQueuedEmails; + + return $self->SUPER::delete; +} + +sub deleteQueuedEmails { + my $self = shift; + + my $it = $self->getQueuedEmailIterator; + while ( my $email = $it->() ) { + $email->delete; + } + + return; +} + sub getAsset { my $self = shift; my $session = $self->session; @@ -75,6 +96,13 @@ sub getAsset { return $asset; } +sub getQueuedEmailIterator { + my $self = shift; + my $session = $self->session; + + return WebGUI::Mailing::Email->getQueued( $session, $self->getId ); +} + sub getNextInSendQueue { my $class = shift; my $session = shift; @@ -168,7 +196,7 @@ sub sendQueuedEmails { $self->update( { state => 'sending' } ); - my $it = WebGUI::Mailing::Email->getQueued( $session, $self->getId ); + my $it = $self->getQueuedEmailIterator; while ( my $email = $it->() ) { return if $timeLimit && time >= $timeLimit;