Removing duplicate syspref
[koha.git] / C4 / Letters.pm
index 6df8fb0..469627d 100644 (file)
@@ -400,18 +400,26 @@ sub SendAlerts {
 
         # ... then send mail
         if (   $databookseller->{bookselleremail}
-            || $databookseller->{contemail} )
-        {
+            || $databookseller->{contemail} ) {
+            my $mail_to = $databookseller->{bookselleremail};
+            if ($databookseller->{contemail}) {
+                if (!$mail_to) {
+                    $mail_to = $databookseller->{contemail};
+                } else {
+                    $mail_to .= q|,|;
+                    $mail_to .= $databookseller->{contemail};
+                }
+            }
+            my $mail_subj = $innerletter->{title};
+            my $mail_msg  = $innerletter->{content};
+            $mail_msg  ||= q{};
+            $mail_subj ||= q{};
+
             my %mail = (
-                To => $databookseller->{bookselleremail}
-                  . (
-                    $databookseller->{contemail}
-                    ? "," . $databookseller->{contemail}
-                    : ""
-                  ),
+                To => $mail_to,
                 From    => $userenv->{emailaddress},
-                Subject => "" . $innerletter->{title},
-                Message => "" . $innerletter->{content},
+                Subject => $mail_subj,
+                Message => $mail_msg,
                 'Content-Type' => 'text/plain; charset="utf8"',
             );
             sendmail(%mail);
@@ -605,7 +613,7 @@ sub SendQueuedMessages (;$) {
         if ( lc( $message->{'message_transport_type'} ) eq 'email' ) {
             _send_message_by_email( $message );
         }
-        if ( lc( $message->{'message_transport_type'} ) eq 'sms' ) {
+        elsif ( lc( $message->{'message_transport_type'} ) eq 'sms' ) {
             _send_message_by_sms( $message );
         }
     }
@@ -759,24 +767,35 @@ ENDSQL
 }
 
 sub _send_message_by_email ($) {
-    my $message = shift or return undef;
-
-    my $member = C4::Members::GetMember( $message->{'borrowernumber'} );
-    return unless $message->{'to_address'} or $member->{'email'};
+    my $message = shift or return;
+
+    my $to_address = $message->{to_address};
+    unless ($to_address) {
+        my $member = C4::Members::GetMember( $message->{'borrowernumber'} );
+        unless ($member) {
+            warn "FAIL: No 'to_address' and INVALID borrowernumber ($message->{borrowernumber})";
+            _set_message_status( { message_id => $message->{'message_id'},
+                                   status     => 'failed' } );
+            return;
+        }
+        unless ($to_address = $member->{email}) {   # assigment, not comparison
+            # warn "FAIL: No 'to_address' and no email for " . ($member->{surname} ||'') . ", borrowernumber ($message->{borrowernumber})";
+            # warning too verbose for this more common case?
+            _set_message_status( { message_id => $message->{'message_id'},
+                                   status     => 'failed' } );
+            return;
+        }
+    }
 
        my $content = encode('utf8', $message->{'content'});
     my %sendmail_params = (
-        To   => $message->{'to_address'}   || $member->{'email'},
+        To   => $to_address,
         From => $message->{'from_address'} || C4::Context->preference('KohaAdminEmailAddress'),
         Subject => $message->{'subject'},
-               charset => 'utf8',
+        charset => 'utf8',
         Message => $content,
+        'content-type' => $message->{'content_type'} || 'text/plain; charset="UTF-8"',
     );
-    if ($message->{'content_type'}) {
-        $sendmail_params{'content-type'} = $message->{'content_type'};
-    }else{
-        $sendmail_params{'content-type'} = 'text/plain; charset="UTF-8"';
-    }
     
     my $success = sendmail( %sendmail_params );