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;