use C4::Log qw( logaction );
use C4::SMS;
use C4::Templates;
-use Koha::DateUtils qw( dt_from_string output_pref );
use Koha::SMS::Providers;
use Koha::Email;
use Koha::Notice::Messages;
use Koha::Notice::Templates;
use Koha::DateUtils qw( dt_from_string output_pref );
+use Koha::Auth::TwoFactorAuth;
use Koha::Patrons;
use Koha::SMTP::Servers;
use Koha::Subscriptions;
}
if ( $type eq 'orderacquisition') {
- my $basketno = $externalid;
+ $basketno = $externalid;
$strsth = qq{
SELECT aqorders.*,aqbasket.*,biblio.*,biblioitems.*
FROM aqorders
return { error => $error }
unless $success;
+ my $log_object = $action eq 'ACQUISITION ORDER' ? $externalid : undef;
my $module = $action eq 'ACQUISITION ORDER' ? 'ACQUISITIONS' : 'CLAIMS';
logaction(
$module,
$action,
- undef,
+ $log_object,
"To="
. join( ',', @email )
. " Title="
# in callers ( by changing / formatting values )
my $values = $values_in ? { %$values_in } : {};
+ # FIXME Dates formatting must be done in notice's templates
if ( $table eq 'borrowers' && $values->{'dateexpiry'} ){
$values->{'dateexpiry'} = output_pref({ dt => dt_from_string( $values->{'dateexpiry'} ), dateonly => 1 });
}
my $dbh = C4::Context->dbh();
my $statement = << 'ENDSQL';
INSERT INTO message_queue
-( borrowernumber, subject, content, metadata, letter_code, message_transport_type, status, time_queued, to_address, from_address, reply_address, content_type, failure_code )
-VALUES
-( ?, ?, ?, ?, ?, ?, ?, CAST(NOW() AS DATETIME), ?, ?, ?, ?, ? )
+( letter_id, borrowernumber, subject, content, metadata, letter_code, message_transport_type, status, time_queued, to_address, from_address, reply_address, content_type, failure_code )
+VALUES ( ?, ?, ?, ?, ?, ?, ?, ?, CAST(NOW() AS DATETIME), ?, ?, ?, ?, ? )
ENDSQL
my $sth = $dbh->prepare($statement);
my $result = $sth->execute(
+ $params->{letter}->{id} || undef, # letter.id
$params->{'borrowernumber'}, # borrowernumber
$params->{'letter'}->{'title'}, # subject
$params->{'letter'}->{'content'}, # content
'limit' => $params->{'limit'} // 0,
'borrowernumber' => $params->{'borrowernumber'} // q{},
'letter_code' => $params->{'letter_code'} // q{},
- 'type' => $params->{'type'} // q{},
+ 'message_transport_type' => $params->{'type'} // q{},
};
my $unsent_messages = _get_unsent_messages( $which_unsent_messages );
MESSAGE: foreach my $message ( @$unsent_messages ) {
This function's parameter hash reference takes the following
optional named parameters:
message_transport_type: method of message sending (e.g. email, sms, etc.)
+ Can be a single string, or an arrayref of strings
borrowernumber : who the message is to be sent
letter_code : type of message being sent (e.g. PASSWORD_RESET)
+ Can be a single string, or an arrayref of strings
message_id : the message_id of the message. In that case the sub will return only 1 result
limit : maximum number of messages to send
my @query_params = ('pending');
if ( ref $params ) {
- if ( $params->{'message_transport_type'} ) {
- $statement .= ' AND mq.message_transport_type = ? ';
- push @query_params, $params->{'message_transport_type'};
- }
if ( $params->{'borrowernumber'} ) {
$statement .= ' AND mq.borrowernumber = ? ';
push @query_params, $params->{'borrowernumber'};
}
if ( $params->{'letter_code'} ) {
- $statement .= ' AND mq.letter_code = ? ';
- push @query_params, $params->{'letter_code'};
+ my @letter_codes = ref $params->{'letter_code'} eq "ARRAY" ? @{$params->{'letter_code'}} : $params->{'letter_code'};
+ if ( @letter_codes ) {
+ my $q = join( ",", ("?") x @letter_codes );
+ $statement .= " AND mq.letter_code IN ( $q ) ";
+ push @query_params, @letter_codes;
+ }
}
- if ( $params->{'type'} ) {
- $statement .= ' AND message_transport_type = ? ';
- push @query_params, $params->{'type'};
+ if ( $params->{'message_transport_type'} ) {
+ my @types = ref $params->{'message_transport_type'} eq "ARRAY" ? @{$params->{'message_transport_type'}} : $params->{'message_transport_type'};
+ if ( @types ) {
+ my $q = join( ",", ("?") x @types );
+ $statement .= " AND message_transport_type IN ( $q ) ";
+ push @query_params, @types;
+ }
}
if ( $params->{message_id} ) {
$statement .= ' AND message_id = ?';
sub _send_message_by_sms {
my $message = shift or return;
my $patron = Koha::Patrons->find( $message->{borrowernumber} );
+ _update_message_to_address($message->{message_id}, $patron->smsalertnumber) if $patron;
unless ( $patron and $patron->smsalertnumber ) {
_set_message_status( { message_id => $message->{'message_id'},
my $content = $params->{content};
my $tables = $params->{tables};
my $loops = $params->{loops};
- my $objects = $params->{objects};
+ my $objects = $params->{objects} || {};
my $substitute = $params->{substitute} || {};
my $lang = defined($params->{lang}) && $params->{lang} ne 'default' ? $params->{lang} : 'en';
my ($theme, $availablethemes);