[Koha-patches] [PATCH] Fixes bug 3619: _send_message_by_email not respecting AutoEmailPrimaryAddress = 'OFF'

Ian Walls ian.walls at bywatersolutions.com
Mon Jun 14 16:26:09 CEST 2010


---
 C4/Letters.pm |    7 ++++++-
 C4/Members.pm |   29 +++++++++++++++++++++++++++++
 2 files changed, 35 insertions(+), 1 deletions(-)

diff --git a/C4/Letters.pm b/C4/Letters.pm
index 3dc3e52..82c6227 100644
--- a/C4/Letters.pm
+++ b/C4/Letters.pm
@@ -822,7 +822,12 @@ sub _send_message_by_email ($;$$$) {
             return;
         }
         my $which_address = C4::Context->preference('AutoEmailPrimaryAddress');
-        $to_address = $member->{$which_address};
+        # If the system preference is set to 'first valid' (value == OFF), look up email address
+        if ($which_address eq 'OFF') {
+            $to_address = GetFirstValidEmailAddress( $message->{'borrowernumber'} );
+        } else {
+            $to_address = $member->{$which_address};
+        }
         unless ($to_address) {  
             # warn "FAIL: No 'to_address' and no email for " . ($member->{surname} ||'') . ", borrowernumber ($message->{borrowernumber})";
             # warning too verbose for this more common case?
diff --git a/C4/Members.pm b/C4/Members.pm
index 30e9f2d..bde6912 100644
--- a/C4/Members.pm
+++ b/C4/Members.pm
@@ -56,6 +56,8 @@ BEGIN {
 		&getzipnamecity 
 		&getidcity
 
+                &GetFirstValidEmailAddress
+
 		&GetAge 
 		&GetCities 
 		&GetRoadTypes 
@@ -1263,6 +1265,33 @@ sub getidcity {
     return $data;
 }
 
+=head2 GetFirstValidEmailAddress
+
+  $email = GetFirstValidEmailAddress($borrowernumber);
+
+Return the first valid email address for a borrower, given the borrowernumber.  For now, the order 
+is defined as email, emailpro, B_email.  Returns the empty string if the borrower has no email 
+addresses.
+
+=cut
+
+sub GetFirstValidEmailAddress {
+    my $borrowernumber = shift;
+    my $dbh = C4::Context->dbh;
+    my $sth = $dbh->prepare( "SELECT email, emailpro, B_email FROM borrowers where borrowernumber = ? ");
+    $sth->execute( $borrowernumber );
+    my $data = $sth->fetchrow_hashref;
+
+    if ($data->{'email'}) {
+       return $data->{'email'};
+    } elsif ($data->{'emailpro'}) {
+       return $data->{'emailpro'};
+    } elsif ($data->{'B_email'}) {
+       return $data->{'B_email'};
+    } else {
+       return '';
+    }
+}
 
 =head2 GetExpiryDate 
 
-- 
1.5.6.5



More information about the Koha-patches mailing list