Prevent multiple warnings per notice filling cron logs.
[koha_fer] / C4 / Letters.pm
index 73608b0..3bcc514 100644 (file)
@@ -23,6 +23,7 @@ use Mail::Sendmail;
 use C4::Members;
 use C4::Log;
 use C4::SMS;
+use Encode;
 
 use vars qw($VERSION @ISA @EXPORT @EXPORT_OK %EXPORT_TAGS);
 
@@ -466,27 +467,32 @@ sub SendAlerts {
 =cut
 
 sub parseletter {
-    my ( $letter, $table, $pk ) = @_;
+    my ( $letter, $table, $pk, $pk2 ) = @_;
 
     #  warn "Parseletter : ($letter,$table,$pk)";
     my $dbh = C4::Context->dbh;
     my $sth;
     if ( $table eq 'biblio' ) {
         $sth = $dbh->prepare("select * from biblio where biblionumber=?");
-    }
-    elsif ( $table eq 'biblioitems' ) {
+    } elsif ( $table eq 'biblioitems' ) {
         $sth = $dbh->prepare("select * from biblioitems where biblionumber=?");
-    }
-    elsif ( $table eq 'borrowers' ) {
+    } elsif ( $table eq 'items' ) {
+        $sth = $dbh->prepare("select * from items where itemnumber=?");
+    } elsif ( $table eq 'reserves' ) {
+        $sth = $dbh->prepare("select * from reserves where borrowernumber = ? and biblionumber=?");
+    } elsif ( $table eq 'borrowers' ) {
         $sth = $dbh->prepare("select * from borrowers where borrowernumber=?");
-    }
-    elsif ( $table eq 'branches' ) {
+    } elsif ( $table eq 'branches' ) {
         $sth = $dbh->prepare("select * from branches where branchcode=?");
-    }
-    elsif ( $table eq 'aqbooksellers' ) {
+    } elsif ( $table eq 'aqbooksellers' ) {
         $sth = $dbh->prepare("select * from aqbooksellers where id=?");
     }
-    $sth->execute($pk);
+
+    if ( $pk2 ) {
+        $sth->execute($pk, $pk2);
+    } else {
+        $sth->execute($pk);
+    }
 
     # store the result in an hash
     my $values = $sth->fetchrow_hashref;
@@ -496,9 +502,7 @@ sub parseletter {
     $sth->execute;
     while ( ( my $field ) = $sth->fetchrow_array ) {
         my $replacefield = "<<$table.$field>>";
-        my $replacedby   = $values->{$field};
-
-        #              warn "REPLACE $replacefield by $replacedby";
+        my $replacedby   = $values->{$field} || '';
         $letter->{title}   =~ s/$replacefield/$replacedby/g;
         $letter->{content} =~ s/$replacefield/$replacedby/g;
     }
@@ -748,12 +752,15 @@ sub _send_message_by_email {
     my $message = shift;
 
     my $member = C4::Members::GetMember( $message->{'borrowernumber'} );
+    return unless $message->{'to_address'} or $member->{'email'};
 
+       my $content = encode('utf8', $message->{'content'});
     my %sendmail_params = (
         To   => $message->{'to_address'}   || $member->{'email'},
         From => $message->{'from_address'} || C4::Context->preference('KohaAdminEmailAddress'),
         Subject => $message->{'subject'},
-        Message => $message->{'content'},
+               charset => 'utf8',
+        Message => $content,
     );
     if ($message->{'content_type'}) {
         $sendmail_params{'content-type'} = $message->{'content_type'};