Fix for Bug 4290 - search for author in repository
[koha.git] / C4 / Members.pm
index eba71f5..00716cd 100644 (file)
@@ -56,6 +56,8 @@ BEGIN {
                &getzipnamecity 
                &getidcity
 
+                &GetFirstValidEmailAddress
+
                &GetAge 
                &GetCities 
                &GetRoadTypes 
@@ -482,7 +484,7 @@ sub patronflags {
         $flags{'NOTES'}      = \%flaginfo;
     }
     my ( $odues, $itemsoverdue ) = checkoverdues($patroninformation->{'borrowernumber'});
-    if ( $odues > 0 ) {
+    if ( $odues && $odues > 0 ) {
         my %flaginfo;
         $flaginfo{'message'}  = "Yes";
         $flaginfo{'itemlist'} = $itemsoverdue;
@@ -935,22 +937,16 @@ with the modified information
 
 #'
 sub UpdateGuarantees {
-    my (%data) = @_;
+    my %data = shift;
     my $dbh = C4::Context->dbh;
     my ( $count, $guarantees ) = GetGuarantees( $data{'borrowernumber'} );
-    for ( my $i = 0 ; $i < $count ; $i++ ) {
-
-        # FIXME
-        # It looks like the $i is only being returned to handle walking through
-        # the array, which is probably better done as a foreach loop.
-        #
+    foreach my $guarantee (@$guarantees){
         my $guaquery = qq|UPDATE borrowers 
-              SET address='$data{'address'}',fax='$data{'fax'}',
-                  B_city='$data{'B_city'}',mobile='$data{'mobile'}',city='$data{'city'}',phone='$data{'phone'}'
-              WHERE borrowernumber='$guarantees->[$i]->{'borrowernumber'}'
+              SET address=?,fax=?,B_city=?,mobile=?,city=?,phone=?
+              WHERE borrowernumber=?
         |;
-        my $sth3 = $dbh->prepare($guaquery);
-        $sth3->execute;
+        my $sth = $dbh->prepare($guaquery);
+        $sth->execute($data{'address'},$data{'fax'},$data{'B_city'},$data{'mobile'},$data{'city'},$data{'phone'},$guarantee->{'borrowernumber'});
     }
 }
 =head2 GetPendingIssues
@@ -1247,6 +1243,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 
 
@@ -2050,7 +2073,7 @@ sub GetMessages {
     my $query = "SELECT
                   branches.branchname,
                   messages.*,
-                  DATE_FORMAT( message_date, '%m/%d/%Y' ) AS message_date_formatted,
+                  message_date,
                   messages.branchcode LIKE '$branchcode' AS can_delete
                   FROM messages, branches
                   WHERE borrowernumber = ?
@@ -2062,6 +2085,8 @@ sub GetMessages {
     my @results;
 
     while ( my $data = $sth->fetchrow_hashref ) {
+        my $d = C4::Dates->new( $data->{message_date}, 'iso' );
+        $data->{message_date_formatted} = $d->output;
         push @results, $data;
     }
     return \@results;