From d325e7a3014949d625523288991fec84994456cb Mon Sep 17 00:00:00 2001 From: Martin Kamerbeek Date: Fri, 12 Nov 2010 18:02:50 +0100 Subject: [PATCH] Unslow bounce report generation and add some extra info as a bonus! --- lib/WebGUI/Mailing/Bounce.pm | 44 +++++++++++++++++++---- lib/WebGUI/i18n/Dutch/MailingManager.pm | 10 +++++- lib/WebGUI/i18n/English/MailingManager.pm | 10 +++++- sbin/install_newsletter.pl | 12 +++++++ 4 files changed, 68 insertions(+), 8 deletions(-) diff --git a/lib/WebGUI/Mailing/Bounce.pm b/lib/WebGUI/Mailing/Bounce.pm index 7a4fe33..c76b572 100644 --- a/lib/WebGUI/Mailing/Bounce.pm +++ b/lib/WebGUI/Mailing/Bounce.pm @@ -57,13 +57,45 @@ sub session { sub www_bounceReport { my $self = shift; my $session = $self->session; + my $db = $session->db; my $i18n = WebGUI::International->new( $session, 'MailingManager' ); - my $sth = $session->db->read( 'select distinct sentTo from Mailing_email where sentTo is not null' ); - - my $output = ''; - while ( my ($email) = $sth->array ) { - my $score = $self->getBounceScore( $email ); - $output .= ""; + + my $windowSize = 10; + + my $sql = <read( $sql, [ $windowSize, $windowSize - 1 ] ); + + my $output = '
'.$i18n->get('email').''.$i18n->get('bounce score').'
$email$score
'; + while ( my $values = $sth->arrayRef ) { + $output .= ''; } $output .= '
' + . join( '', + $i18n->get('email'), + $i18n->get('bounce score'), + $i18n->get('bounce reason'), + $i18n->get('bounce message') + ) + . '
'. join( '', @$values ) . '
'; diff --git a/lib/WebGUI/i18n/Dutch/MailingManager.pm b/lib/WebGUI/i18n/Dutch/MailingManager.pm index 4dc165b..31892b7 100644 --- a/lib/WebGUI/i18n/Dutch/MailingManager.pm +++ b/lib/WebGUI/i18n/Dutch/MailingManager.pm @@ -26,7 +26,7 @@ our $I18N = { 'bounce score' => { message => 'Bounce score', }, - + 'cannot cancel' => { message => 'Mailing \'%s\' kan niet worden afgebroken.', }, @@ -100,6 +100,14 @@ our $I18N = { 'generate mailing' => { message => 'Genereer mailing', }, + + 'bounce reason' => { + message => 'Laatste bounce oorzaak', + }, + + 'bounce message' => { + message => 'Laatste bounce omschrijving', + }, }; 1; diff --git a/lib/WebGUI/i18n/English/MailingManager.pm b/lib/WebGUI/i18n/English/MailingManager.pm index 51798f1..e8aebca 100644 --- a/lib/WebGUI/i18n/English/MailingManager.pm +++ b/lib/WebGUI/i18n/English/MailingManager.pm @@ -26,7 +26,7 @@ our $I18N = { 'bounce score' => { message => 'Bounce score', }, - + 'error' => { message => 'An error occurred', }, @@ -100,6 +100,14 @@ our $I18N = { 'generate mailing' => { message => 'Generate mailing', }, + + 'bounce reason' => { + message => 'Latest bounce reason', + }, + + 'bounce message' => { + message => 'Latest bounce message', + }, }; 1; diff --git a/sbin/install_newsletter.pl b/sbin/install_newsletter.pl index ced5510..c044a0f 100644 --- a/sbin/install_newsletter.pl +++ b/sbin/install_newsletter.pl @@ -35,6 +35,7 @@ addSpecialStateTable( $session ); addListNameColumn( $session ); addRegistrationSteps( $session ); addConfirmationTemplateColumn( $session ); +addSentToIndex( $session ); finish($session); @@ -63,6 +64,17 @@ sub addConfirmationTemplateColumn { 'WUk-wEhGiF8dcEogrJfrfg', ] ); + +sub addSentToIndex { + my $session = shift; + my $db = $session->db; + + print "\tAdding index to column Mailing_email.sentTo..."; + + my @indexes = $db->buildArray('show indexes from Mailing_email where Column_name=?',['sentTo']); + + if ( @indexes == 0 ) { + $db->write('alter table Mailing_email add index(sentTo)'); } print "Done.\n";