Bug 27265: Enable message queue cron to accept multiple codes and types
It would be nice to be able to combine several types in a single run, but exclude others, without having to have multiple cron lines Test Plan: 1) Apply this patch 2) Run process_message_queue.pl with a single -c parameter 3) Note behavior is unchanged 4) Run process_message_queue.pl with multiple -c parameters 5) Note all the codes specified are processed 6) Repeat 2-5 with -t for type limits Signed-off-by: Andrew Fuerste-Henry <andrewfh@dubcolib.org> Signed-off-by: Marcel de Rooy <m.de.rooy@rijksmuseum.nl> Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
This commit is contained in:
parent
43ecb3c86c
commit
da7bcc2252
2 changed files with 24 additions and 14 deletions
|
@ -1232,8 +1232,10 @@ sub _add_attachments {
|
|||
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
|
||||
|
||||
|
@ -1264,12 +1266,20 @@ sub _get_unsent_messages {
|
|||
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'};
|
||||
my @types = ref $params->{'type'} eq "ARRAY" ? @{$params->{'type'}} : $params->{'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 = ?';
|
||||
|
|
|
@ -32,8 +32,8 @@ my $limit = undef;
|
|||
my $method = 'LOGIN';
|
||||
my $help = 0;
|
||||
my $verbose = 0;
|
||||
my $type = q{};
|
||||
my $letter_code;
|
||||
my @type;
|
||||
my @letter_code;
|
||||
|
||||
my $command_line_options = join(" ",@ARGV);
|
||||
|
||||
|
@ -44,8 +44,8 @@ GetOptions(
|
|||
'm|method:s' => \$method,
|
||||
'h|help|?' => \$help,
|
||||
'v|verbose' => \$verbose,
|
||||
't|type:s' => \$type,
|
||||
'c|code:s' => \$letter_code,
|
||||
't|type:s' => \@type,
|
||||
'c|code:s' => \@letter_code,
|
||||
);
|
||||
my $usage = << 'ENDUSAGE';
|
||||
|
||||
|
@ -58,8 +58,8 @@ advance_notices.pl script.
|
|||
This script has the following parameters :
|
||||
-u --username: username of mail account
|
||||
-p --password: password of mail account
|
||||
-t --type: If supplied, only processes this type of message ( email, sms )
|
||||
-c --code: If supplied, only processes messages with this letter code
|
||||
-t --type: If supplied, only processes this type of message ( email, sms ), repeatable
|
||||
-c --code: If supplied, only processes messages with this letter code, repeatable
|
||||
-l --limit: The maximum number of messages to process for this run
|
||||
-m --method: authentication method required by SMTP server (See perldoc Sendmail.pm for supported authentication types.)
|
||||
-h --help: this message
|
||||
|
@ -95,8 +95,8 @@ if ( C4::Context->config("enable_plugins") ) {
|
|||
{
|
||||
verbose => $verbose,
|
||||
limit => $limit,
|
||||
type => $type,
|
||||
letter_code => $letter_code,
|
||||
type => \@type,
|
||||
letter_code => @letter_code,
|
||||
}
|
||||
);
|
||||
}
|
||||
|
@ -114,8 +114,8 @@ C4::Letters::SendQueuedMessages(
|
|||
password => $password,
|
||||
method => $method,
|
||||
limit => $limit,
|
||||
type => $type,
|
||||
letter_code => $letter_code,
|
||||
type => \@type,
|
||||
letter_code => \@letter_code,
|
||||
}
|
||||
);
|
||||
|
||||
|
|
Loading…
Reference in a new issue