Bug 17600: Standardize our EXPORT_OK
[srvgit] / Koha / Patron / Password / Recovery.pm
index 04491e6..5fb1402 100644 (file)
@@ -20,18 +20,19 @@ package Koha::Patron::Password::Recovery;
 use Modern::Perl;
 use C4::Context;
 use C4::Letters;
-use Crypt::Eksblowfish::Bcrypt qw(en_base64);
-
-use vars qw(@ISA @EXPORT);
+use Crypt::Eksblowfish::Bcrypt qw( en_base64 );
+use Koha::DateUtils qw( dt_from_string );
 
+our (@ISA, @EXPORT_OK);
 BEGIN {
     require Exporter;
     @ISA = qw(Exporter);
-    push @EXPORT, qw(
+    @EXPORT_OK = qw(
       &ValidateBorrowernumber
       &SendPasswordRecoveryEmail
       &GetValidLinkInfo
       &CompletePasswordRecovery
+      &DeleteExpiredPasswordRecovery
     );
 }
 
@@ -66,11 +67,9 @@ sub ValidateBorrowernumber {
         },
         { columns => 'borrowernumber' }
     );
-
     if ( $rs->next ) {
         return 1;
     }
-
     return 0;
 }
 
@@ -116,7 +115,7 @@ sub SendPasswordRecoveryEmail {
 
     # insert into database
     my $expirydate =
-      DateTime->now( time_zone => C4::Context->tz() )->add( days => 2 );
+      dt_from_string()->add( days => 2 );
     if ($update) {
         my $rs =
           $schema->resultset('BorrowerPasswordRecovery')
@@ -144,14 +143,16 @@ sub SendPasswordRecoveryEmail {
         module      => 'members',
         letter_code => 'PASSWORD_RESET',
         branchcode  => $borrower->branchcode,
+        lang        => $borrower->lang,
         substitute =>
           { passwordreseturl => $uuidLink, user => $borrower->userid },
     );
 
-    # define to/from emails
-    my $kohaEmail = C4::Context->preference('KohaAdminEmailAddress');    # from
+    # define from emails
+    my $library = $borrower->library;
+    my $kohaEmail = $library->from_email_address; # send from patron's branch or Koha Admin
 
-    C4::Letters::EnqueueLetter(
+    my $message_id = C4::Letters::EnqueueLetter(
         {
             letter                 => $letter,
             borrowernumber         => $borrower->borrowernumber,
@@ -161,7 +162,10 @@ sub SendPasswordRecoveryEmail {
         }
     );
 
-    return 1;
+    my $num_letters_attempted =
+      C4::Letters::SendQueuedMessages( { message_id => $message_id } );
+
+    return ($num_letters_attempted > 0);
 }
 
 =head2 CompletePasswordRecovery
@@ -181,6 +185,24 @@ sub CompletePasswordRecovery {
     return $entry->delete();
 }
 
+=head2 DeleteExpiredPasswordRecovery
+
+    $bool = DeleteExpiredPasswordRecovery($borrowernumber)
+
+    Deletes an expired password recovery entry.
+
+=cut
+
+sub DeleteExpiredPasswordRecovery {
+    my $borrower_number = shift;
+    my $model =
+      Koha::Database->new->schema->resultset('BorrowerPasswordRecovery');
+    my $entry = $model->search(
+        { borrowernumber => $borrower_number } );
+    return $entry->delete();
+}
+
+
 END { }    # module clean-up code here (global destructor)
 
 1;