From e02df0b2beb3b023bc3c1224ce124e43ca10994d Mon Sep 17 00:00:00 2001 From: Martin Renvoize Date: Tue, 19 Dec 2023 17:09:17 +0000 Subject: [PATCH] Bug 12802: Update notice_email_address method to return a list This patch updates the notice_email_address method to return a comma separated list of addresses as expected by Email::Sender if you wish to send mail to multiple To addresses. To test: 1. Install database update and restart services 2. Go to Koha Administration -> system preferences. Search for EmailFieldPrimary. Confirm the options show as checkboxes and you can select multiple. 3. Search for a patron. Put different email addresses in each of the possible email fields (i.e. primary email, secondary email, alternate email). 4. Make sure 'first valid' is checked in EmailFieldPrimary. 5. Go to your patron, click the More dropdown and send a welcome email. 6. In your terminal, go into the database to view the message queue. sudo koha-mysql instance select * from message_queue\G 7. Confirm your welcome email is visible, with ONLY the first valid email in the to_address field. 8. Select other combinations of emails in EmailFieldPrimary. 9. Send another welcome email to the same patron, then run the message_queue SQL query again. 10. Confirm your welcome email is visible and shows all selected addresses concatenated by , in the to_address field. 11. Enable KTD to send email [1] (without email configured you will not be able to confirm the delivery to multiple addresses). 12. Run misc/cronjobs/process_message_queue.pl to trigger sending the queued notices from above. 13. Check that the addresses in the to_address all actually recieve the notice. [1] To test sending emails using a Google account: - Set up an App password for your Google Account - Configure a new 'SMTP Server' under 'Administration > SMTP servers' using the following settings where `User name` = your Google email address and `Password` = your APP password, not your Google account password): Host: smtp.gmail.com Port: 587 Timeout: 120 SSL: STARTTLS User name: GOOGLEACCOUNTUSER Password: GOOGLEAPPPASSWORD - Set this server as default Sponsored-by: St Luke's Grammar School & Pymble Ladies' College --- Koha/Patron.pm | 15 +++++++++++---- t/db_dependent/Koha/Patron.t | 5 ++++- 2 files changed, 15 insertions(+), 5 deletions(-) diff --git a/Koha/Patron.pm b/Koha/Patron.pm index 1a4a9205806..b1f3f972de4 100644 --- a/Koha/Patron.pm +++ b/Koha/Patron.pm @@ -1616,12 +1616,19 @@ sub notice_email_address{ my ( $self ) = @_; my $which_address = C4::Context->preference("EmailFieldPrimary"); - # if syspref is set to 'first valid' (value == OFF), look up email address - if ( $which_address eq 'OFF' ) { - return $self->first_valid_email_address; + my @addresses; + for my $email_field ( split ",", $which_address ) { + + # if syspref is set to 'first valid' (value == OFF), look up email address + if ( $email_field eq 'OFF' ) { + return $self->first_valid_email_address; + } + + my $email_address = $self->$email_field; + push @addresses, $email_address if $email_address; } - return $self->$which_address || ''; + return join(",",@addresses); } =head3 first_valid_email_address diff --git a/t/db_dependent/Koha/Patron.t b/t/db_dependent/Koha/Patron.t index e07e90eaf82..583d61f292f 100755 --- a/t/db_dependent/Koha/Patron.t +++ b/t/db_dependent/Koha/Patron.t @@ -1790,7 +1790,7 @@ subtest 'notify_library_of_registration()' => sub { }; subtest 'notice_email_address' => sub { - plan tests => 2; + plan tests => 3; $schema->storage->txn_begin; my $patron = $builder->build_object({ class => 'Koha::Patrons' }); @@ -1802,6 +1802,9 @@ subtest 'notice_email_address' => sub { t::lib::Mocks::mock_preference( 'EmailFieldPrimary', 'emailpro' ); is ($patron->notice_email_address, $patron->emailpro, "Koha::Patron->notice_email_address returns correct value when EmailFieldPrimary is emailpro"); + t::lib::Mocks::mock_preference( 'EmailFieldPrimary', 'email,emailpro' ); + is ($patron->notice_email_address, $patron->email.",".$patron->emailpro, "Koha::Patron->notice_email_address returns correct value when EmailFieldPrimary is email|emailpro"); + $patron->delete; $schema->storage->txn_rollback; }; -- 2.43.0