From f0c114b6d7e337e9afee27cf741a8a38d7a079b8 Mon Sep 17 00:00:00 2001 From: Olli-Antti Kivilahti Date: Tue, 10 Jun 2014 09:48:14 +0300 Subject: [PATCH] Bug 12396 - MTT FIX: Due notices (DUEDGST) are multiplicated and all of them are sent to everybody who is about to receive ODUEDGST. So the first patron receives correct letters, but the followings received all the previous ones AND his letters. Eventually you end up with !n letters in message_queue where n = amount of patrons receiving due messages as digest and having something due. Eventually we got 4 000 000 ODUEDGST-letters of which 1 100 000 were sent to our patrons :) This is madness! Test plan: 0/ Delete the content of the message_queue table. 1/ Pick 3 patrons and set them to receive due messages as digest. 2/ Check 1 item out for 3 separate patrons and specify a due date today. 3/ Launch the advance_notices.pl script. 4/ Before this patch, you got 6 notices (1+2+3 [!n]). Now, you get 3 notices, 1 for each patron. --- misc/cronjobs/advance_notices.pl | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/misc/cronjobs/advance_notices.pl b/misc/cronjobs/advance_notices.pl index e358010..c3304bb 100755 --- a/misc/cronjobs/advance_notices.pl +++ b/misc/cronjobs/advance_notices.pl @@ -337,8 +337,8 @@ SELECT biblio.*, items.*, issues.* AND issues.borrowernumber = ? AND (TO_DAYS(date_due)-TO_DAYS(NOW()) = ?) END_SQL -@letters = (); PATRON: while ( my ( $borrowernumber, $digest ) = each %$upcoming_digest ) { + @letters = (); my $count = $digest->{count}; my $from_address = $digest->{email}; @@ -392,8 +392,8 @@ PATRON: while ( my ( $borrowernumber, $digest ) = each %$upcoming_digest ) { } # Now, run through all the people that want digests and send them -@letters = (); PATRON: while ( my ( $borrowernumber, $digest ) = each %$due_digest ) { + @letters = (); my $count = $digest->{count}; my $from_address = $digest->{email}; -- 1.7.9.5