[PATCH] overdue_notices did not retrieve email addresses correctly.

Sébastien Hinderer Sebastien.Hinderer at ens-lyon.org
Sat Oct 17 23:48:35 CEST 2009


The (not yet reported) bug fixed by this patch has been introduced
by f1f833c96568284552dae2b12f14229ef5c991bc
Indeed, that commit added a row to the select query which introduced a
shift, because the rows where retrieved and assigned to variables
with fetchrow_array.

Now the code uses fetchrow_hashref, which shold make it more resistant
to changes in the SQL request.
---
 misc/cronjobs/overdue_notices.pl |   15 ++++++++++++---
 1 files changed, 12 insertions(+), 3 deletions(-)
 mode change 100755 => 100644 misc/cronjobs/overdue_notices.pl

diff --git a/misc/cronjobs/overdue_notices.pl b/misc/cronjobs/overdue_notices.pl
old mode 100755
new mode 100644
index 831cdfc..2b9bc4d
--- a/misc/cronjobs/overdue_notices.pl
+++ b/misc/cronjobs/overdue_notices.pl
@@ -340,7 +340,7 @@ END_SQL
             # <date> <itemcount> <firstname> <lastname> <address1> <address2> <address3> <city> <postcode>
 
             my $borrower_sql = <<'END_SQL';
-SELECT COUNT(*), issues.borrowernumber, firstname, surname, address, address2, city, zipcode, country, email, MIN(date_due) as longest_issue
+SELECT COUNT(*) as itemcount, issues.borrowernumber, firstname, surname, address, address2, city, zipcode, country, email, MIN(date_due) as longest_issue
 FROM   issues,borrowers,categories
 WHERE  issues.borrowernumber=borrowers.borrowernumber
 AND    borrowers.categorycode=categories.categorycode
@@ -369,7 +369,16 @@ END_SQL
             $sth->execute(@borrower_parameters);
             $verbose and warn $borrower_sql . "\n $branchcode | " . $overdue_rules->{'categorycode'} . "\n ($mindays, $maxdays)\nreturns " . $sth->rows . " rows";
 
-            while( my ( $itemcount, $borrowernumber, $firstname, $lastname, $address1, $address2, $city, $postcode, $email ) = $sth->fetchrow ) {
+            while( my $row = $sth->fetchrow_hashref ) {
+                my $itemcount = $row->{'itemcount'};
+                my $borrowernumber = $row->{'borrowernumber'};
+                my $firstname = $row->{'firstname'};
+                my $lastname = $row->{'surname'};
+                my $address1 = $row->{'address'}; 
+                my $address2 = $row->{'address2'};
+                my $city = $row->{'city'};
+                my $postcode = $row->{'zipcode'};
+                my $email = $row->{'email'};
                 $verbose and warn "borrower $firstname, $lastname ($borrowernumber) has $itemcount items triggering level $i.";
     
                 my $letter = C4::Letters::getletter( 'circulation', $overdue_rules->{"letter$i"} );
@@ -388,7 +397,7 @@ END_SQL
                     $verbose and warn "debarring $borrowernumber $firstname $lastname\n";
                 }
                 $sth2->execute( ($listall) ? ( $borrowernumber , 1 , $MAX ) : ( $borrowernumber, $mindays, $maxdays ) );
-                my $itemcount = 0;
+                $itemcount = 0;
                 my $titles = "";
                 while ( my $item_info = $sth2->fetchrow_hashref() ) {
                     my @item_info = map { $_ =~ /^date|date$/ ? format_date( $item_info->{$_} ) : $item_info->{$_} || '' } @item_content_fields;
-- 
1.6.3.3


--ZPt4rx8FFjLCG7dd--


More information about the Koha-patches mailing list