From 605a4aed7d15f4db615b21947aa8face0dffc663 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 patchset 2. Update database: - cd installer/data/mysql - sudo koha-shell - ./updatedatabase.pl 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: 6.a. EmailPatronRegistrations syspref = 'none'. Submit OPAC registration. = OUTCOME: Confirm no OPAC_REG notice in message_queue table 6.b. EmailPatronRegistrations syspref = 'email address of branch'. Submit OPAC registration. = OUTCOME: Confirm OPAC_REG notice in message_queue with to_address of branch address 6.c. EmailPatronRegistrations syspref = 'EmailAddressForPatronRegistrations'. Submit OPAC registration. = OUTCOME: Confirm OPAC_REG notice in message_queue with to_address equalling EmailAddressForPatronRegistrations syspref 6.d. 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 steps 6.a, 6.b, 6.c, 6.d but this time confirm 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 | 65 +++++++++++++++++++ ...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, 96 insertions(+), 20 deletions(-) diff --git a/Koha/Patron.pm b/Koha/Patron.pm index 0c16079fa9..6bd9d97ded 100644 --- a/Koha/Patron.pm +++ b/Koha/Patron.pm @@ -2063,6 +2063,71 @@ sub recalls { return Koha::Recalls->search({ borrowernumber => $self->borrowernumber }); } +=head3 account_balance + + my $balance = $patron->account_balance + +Return the patron's account balance + +=cut + +sub account_balance { + my ($self) = @_; + 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; + } + } +} + =head2 Internal methods =head3 _type 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 121276dbbc..953d158355 100644 --- a/installer/data/mysql/en/mandatory/sample_notices.yml +++ b/installer/data/mysql/en/mandatory/sample_notices.yml @@ -1648,15 +1648,14 @@ tables: - "

New OPAC self-registration

" - "

Self-registration made by

" - "" - "

" diff --git a/opac/opac-memberentry.pl b/opac/opac-memberentry.pl index e33ab0391e..432b28b81f 100755 --- a/opac/opac-memberentry.pl +++ b/opac/opac-memberentry.pl @@ -274,6 +274,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 99651eef5c..22de52decb 100755 --- a/opac/opac-registration-verify.pl +++ b/opac/opac-registration-verify.pl @@ -110,6 +110,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