From 4332c4227fce5b12c11d1beb8b88bf25e4488fb4 Mon Sep 17 00:00:00 2001 From: Alex Buckley Date: Wed, 6 Apr 2022 09:33:12 +1200 Subject: [PATCH] Bug 23538: Email library when new patron self-registers Test plan: 1. Apply all patches 2. Update database 3. Restart services 4. Set email addresses in: - KohaAdminEmailAddress syspref - EmailAddressForPatronRegistrations syspref - Email address in the library branch 5. Enable PatronSelfRegistration syspref 6. Test the following use cases: - EmailPatronRegistrations syspref = 'none'. Submit OPAC registration. = OUTCOME: Confirm no OPAC_REG notice in message_queue table --- - EmailPatronRegistrations syspref = 'email address of branch'. Submit OPAC registration. = OUTCOME: Confirm OPAC_REG notice in message_queue with to_address equalling the branch address --- - EmailPatronRegistrations syspref = 'EmailAddressForPatronRegistrations'. Submit OPAC registration. = OUTCOME: Confirm OPAC_REG notice in message_queue with to_address equalling EmailAddressForPatronRegistrations syspref --- - EmailPatronRegistrations syspref = 'KohaAdminEmailAddress'. Submit OPAC registration. = OUTCOME: Confirm OPAC_REG notice in message_queue with to_address equalling KohaAdminEmailAddress syspref 7. Enable PatronSelfRegistrationVerifyByEmail syspref 8. Repeat testing all use cases. Confirm this time the expected outcomes only happen AFTER you have clicked the verification link in the OPAC_REG_VERIFY notice Sponsored-by: Catalyst IT --- Koha/Patron.pm | 51 +++++++++++++++++++ ...lAddressForPatronRegistrations_sysprefs.pl | 19 ++++--- .../mysql/en/mandatory/sample_notices.yml | 19 ++++--- opac/opac-memberentry.pl | 7 +++ opac/opac-registration-verify.pl | 6 +++ 5 files changed, 82 insertions(+), 20 deletions(-) diff --git a/Koha/Patron.pm b/Koha/Patron.pm index 0a165ae0d1..82bcc5c9d2 100644 --- a/Koha/Patron.pm +++ b/Koha/Patron.pm @@ -2093,6 +2093,57 @@ sub account_balance { return $self->account->balance; } +=head3 notify_library_of_registration + +$patron->notify_library_of_registration( $email_patron_registrations ); + +Send patron registration email to library if EmailPatronRegistrations system preference is enabled. + +=cut + +sub notify_library_of_registration { + my ( $self, $email_patron_registrations ) = @_; + + if ( + my $letter = C4::Letters::GetPreparedLetter( + module => 'members', + letter_code => 'OPAC_REG', + branchcode => $self->branchcode, + lang => $self->lang || 'default', + tables => { + 'borrowers' => $self->borrowernumber + }, + ) + ) { + my $to_address; + if ( $email_patron_registrations eq "BranchEmailAddress" ) { + my $library = Koha::Libraries->find( $self->branchcode ); + $to_address = $library->inbound_email_address; + } + elsif ( $email_patron_registrations eq "KohaAdminEmailAddress" ) { + $to_address = C4::Context->preference('ReplytoDefault') + || C4::Context->preference('KohaAdminEmailAddress'); + } + else { + $to_address = + C4::Context->preference('EmailAddressForPatronRegistrations') + || C4::Context->preference('ReplytoDefault') + || C4::Context->preference('KohaAdminEmailAddress'); + } + + my $message_id = C4::Letters::EnqueueLetter( + { + letter => $letter, + borrowernumber => $self->borrowernumber, + to_address => $to_address, + message_transport_type => 'email' + } + ) or warn "can't enqueue letter $letter"; + if ( $message_id ) { + return 1; + } + } +} =head3 has_messaging_preference diff --git a/installer/data/mysql/atomicupdate/bug23538-add_EmailPatronRegistrations_and_EmailAddressForPatronRegistrations_sysprefs.pl b/installer/data/mysql/atomicupdate/bug23538-add_EmailPatronRegistrations_and_EmailAddressForPatronRegistrations_sysprefs.pl index 61ee73395e..55082df006 100755 --- a/installer/data/mysql/atomicupdate/bug23538-add_EmailPatronRegistrations_and_EmailAddressForPatronRegistrations_sysprefs.pl +++ b/installer/data/mysql/atomicupdate/bug23538-add_EmailPatronRegistrations_and_EmailAddressForPatronRegistrations_sysprefs.pl @@ -13,16 +13,15 @@ return { '

New OPAC self-registration

Self-registration made by

', 'email', 'default') }); }, diff --git a/installer/data/mysql/en/mandatory/sample_notices.yml b/installer/data/mysql/en/mandatory/sample_notices.yml index fcd76b85f8..36a5d61342 100644 --- a/installer/data/mysql/en/mandatory/sample_notices.yml +++ b/installer/data/mysql/en/mandatory/sample_notices.yml @@ -1711,15 +1711,14 @@ tables: - "

New OPAC self-registration

" - "

Self-registration made by

" - "" - "

" diff --git a/opac/opac-memberentry.pl b/opac/opac-memberentry.pl index f456362c3a..7ae7f343fa 100755 --- a/opac/opac-memberentry.pl +++ b/opac/opac-memberentry.pl @@ -275,6 +275,13 @@ if ( $action eq 'create' ) { }; } } + + # Notify library of new patron registration + my $notify_library = C4::Context->preference('EmailPatronRegistrations'); + if ($notify_library) { + $patron->notify_library_of_registration($notify_library); + } + } else { # FIXME Handle possible errors here } diff --git a/opac/opac-registration-verify.pl b/opac/opac-registration-verify.pl index 73ff55e6e5..673507ab3e 100755 --- a/opac/opac-registration-verify.pl +++ b/opac/opac-registration-verify.pl @@ -117,6 +117,12 @@ if ( } } + # Notify library of new patron registration + my $notify_library = C4::Context->preference("EmailPatronRegistrations"); + if ($notify_library) { + $patron->notify_library_of_registration($notify_library); + } + $template->param( PatronSelfRegistrationAdditionalInstructions => C4::Context->preference( -- 2.20.1