From 0f6839bdec41cdc28a9250c4ed4e8e050682bd0a Mon Sep 17 00:00:00 2001 From: theminh Date: Thu, 24 Feb 2022 15:48:04 -0500 Subject: [PATCH] Bug 12532: Send email to guarantee and guarantor; This patch allows guarantors to receive emails sended to their guarentees. This patch is a rebase of the previous patches. NOTE: Attachment "Rebase and correction of the patch by adding the possibility of sending emails to several guarantors" generate an sha1 error. I had to took its content and put it in another commit. TO TEST: Before applying: 1) Search, or create, a patron with guarantor. 2) Enable checkout emails for both guarantors and guarantees. 3) Checkout an item. An email should be sent only to the guarantee. 4) Apply the patch. 5) Run updatedatabase.pl 6) Enable 'RedirectGuaranteeEmail' 7) Run misc/cronjobs/process_message_queue.pl 8) Notice that the email should be sended to both the guarantee AND the guarantor. --- C4/Letters.pm | 5 +++++ Koha/Email.pm | 17 ++++++++++++----- Koha/Patron.pm | 22 ++++++++++++---------- 3 files changed, 29 insertions(+), 15 deletions(-) diff --git a/C4/Letters.pm b/C4/Letters.pm index 4c21c62a1d..454180b0a3 100644 --- a/C4/Letters.pm +++ b/C4/Letters.pm @@ -1475,6 +1475,11 @@ sub _send_message_by_email { if !$message->{to_address} || $message->{to_address} ne $email->email->header('To'); + _update_message_from_address($message->{'message_id'},$email->email->header('From') ) + if !$message->{from_address} + || $message->{from_address} ne $email->email->header('From'); + + try { $email->send_or_die({ transport => $smtp_server->transport }); diff --git a/Koha/Email.pm b/Koha/Email.pm index 090f475938..6f6b69f979 100644 --- a/Koha/Email.pm +++ b/Koha/Email.pm @@ -118,11 +118,18 @@ sub create { $args->{to} = $params->{to}; } - Koha::Exceptions::BadParameter->throw( - error => "Invalid 'to' parameter: " . $args->{to}, - parameter => 'to' - ) unless Koha::Email->is_valid( $args->{to} ); # to is mandatory - + # Koha::Exceptions::BadParameter->throw( + # error => "Invalid 'to' parameter: " . $args->{to}, + # parameter => 'to' + # ) unless Koha::Email->is_valid( $args->{to} ); # to is mandatory + my @emails = split(',', $args->{to}); + foreach my $email (@emails) { + $email =~ s/ //g; + Koha::Exceptions::BadParameter->throw( + error => "Invalid 'to' parameter: ".$email, + parameter => 'to' + ) unless Koha::Email->is_valid($email); + } my $addresses = {}; $addresses->{reply_to} = $params->{reply_to}; $addresses->{reply_to} ||= C4::Context->preference('ReplytoDefault') diff --git a/Koha/Patron.pm b/Koha/Patron.pm index d22f9637fe..e79a598793 100755 --- a/Koha/Patron.pm +++ b/Koha/Patron.pm @@ -1338,17 +1338,19 @@ sub notice_email_address{ my $use_guarantor = C4::Context->preference('RedirectGuaranteeEmail'); if ($use_guarantor) { - my $guarantor = $self->guarantor; - if ($guarantor) { - if ( $which_address eq 'OFF' ) { - $guarantor_address = $guarantor->first_valid_email_address; - } else { - $guarantor_address = $guarantor->$which_address || ''; - } - if ($address){ - $address .= ', '; - } + my @guarantors = map { $_->guarantors->as_list } $self->guarantor_relationships(); + if (@guarantors) { + foreach my $guarantor (@guarantors) { + if ( $which_address eq 'OFF' ) { + $guarantor_address = $guarantor->first_valid_email_address; + } else { + $guarantor_address = $guarantor->$which_address || ''; + } + if ($address){ + $address .= ', '; + } $address .= $guarantor_address if $guarantor_address; + } } } return $address; -- 2.25.1