@@ -, +, @@ queue is processed --- C4/Letters.pm | 29 +++++++++++++++++++++++++++-- Koha/Patron/Password/Recovery.pm | 2 ++ 2 files changed, 29 insertions(+), 2 deletions(-) --- a/C4/Letters.pm +++ a/C4/Letters.pm @@ -1072,6 +1072,27 @@ sub SendQueuedMessages { return scalar( @$unsent_messages ); } +=head2 SendPasswordEmailFromQueue ($borrowernumber) + + my $sent_pw = SendPasswordEmailFromQueue($borrowernumber) + +Used to immediately send a forgotten password request rather than have the user wait until the next time the entire queue is processed. +Messages from the `message_queue` table are matched on borrowernumber and letter_code='PASSWORD_RESET' + +=cut + +sub SendPasswordEmailFromQueue { + my $borrowernumber = shift; + + my $pw_msg = _get_unsent_messages( { borrowernumber => $borrowernumber, + letter_code => 'PASSWORD_RESET' } ); + if ( $pw_msg ) { + _send_message_by_email( $pw_msg->[0], undef, undef, 'LOGIN' ); + } else { + return 0; + } +} + =head2 GetRSSMessages my $message_list = GetRSSMessages( { limit => 10, borrowernumber => '14' } ) @@ -1278,17 +1299,21 @@ ENDSQL my @query_params = ('pending'); if ( ref $params ) { if ( $params->{'message_transport_type'} ) { - $statement .= ' AND message_transport_type = ? '; + $statement .= ' AND mq.message_transport_type = ? '; push @query_params, $params->{'message_transport_type'}; } if ( $params->{'borrowernumber'} ) { - $statement .= ' AND borrowernumber = ? '; + $statement .= ' AND mq.borrowernumber = ? '; push @query_params, $params->{'borrowernumber'}; } if ( $params->{'limit'} ) { $statement .= ' limit ? '; push @query_params, $params->{'limit'}; } + if ( $params->{'letter_code'} ) { + $statement .= ' AND mq.letter_code = ? '; + push @query_params, $params->{'letter_code'}; + } } $debug and warn "_get_unsent_messages SQL: $statement"; --- a/Koha/Patron/Password/Recovery.pm +++ a/Koha/Patron/Password/Recovery.pm @@ -161,6 +161,8 @@ sub SendPasswordRecoveryEmail { } ); + my $sent_pw = C4::Letters::SendPasswordEmailFromQueue($borrower->borrowernumber); + return 1; } --