Kyle M Hall
b48869f1b8
The message_queue.pl currently will send all the messages queued up. It would be nice to have some control over which messages are to be sent. Example: We have libraries who only wanted to send 'hold notices' but not overdue, advance notice, etc during the covid-19 quarantine. And some that were the opposite - turn off hold notices, but send other generated notices. Test Plan: 1) Apply this patch 2) Enqueue some messages with different letter codes 3) Run process_message_queue.pl with the new -c parameter using one of the letter codes enqueued 4) Note that only the messages with the selected code were processed! Signed-off-by: Andrew Fuerste-Henry <andrew@bywatersolutions.com> Signed-off-by: Alex Arnaud <alex.arnaud@biblibre.com> Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org>
104 lines
2.9 KiB
Perl
Executable file
104 lines
2.9 KiB
Perl
Executable file
#!/usr/bin/perl
|
|
|
|
# Copyright 2008 LibLime
|
|
#
|
|
# This file is part of Koha.
|
|
#
|
|
# Koha is free software; you can redistribute it and/or modify it
|
|
# under the terms of the GNU General Public License as published by
|
|
# the Free Software Foundation; either version 3 of the License, or
|
|
# (at your option) any later version.
|
|
#
|
|
# Koha is distributed in the hope that it will be useful, but
|
|
# WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
# GNU General Public License for more details.
|
|
#
|
|
# You should have received a copy of the GNU General Public License
|
|
# along with Koha; if not, see <http://www.gnu.org/licenses>.
|
|
|
|
use strict;
|
|
use warnings;
|
|
BEGIN {
|
|
# find Koha's Perl modules
|
|
# test carefully before changing this
|
|
use FindBin;
|
|
eval { require "$FindBin::Bin/../kohalib.pl" };
|
|
}
|
|
|
|
use Koha::Script -cron;
|
|
use C4::Letters;
|
|
use C4::Log;
|
|
use Getopt::Long;
|
|
|
|
my $username = undef;
|
|
my $password = undef;
|
|
my $limit = undef;
|
|
my $method = 'LOGIN';
|
|
my $help = 0;
|
|
my $verbose = 0;
|
|
my $type = q{};
|
|
my $letter_code;
|
|
|
|
GetOptions(
|
|
'u|username:s' => \$username,
|
|
'p|password:s' => \$password,
|
|
'l|limit:s' => \$limit,
|
|
'm|method:s' => \$method,
|
|
'h|help|?' => \$help,
|
|
'v|verbose' => \$verbose,
|
|
't|type:s' => \$type,
|
|
'c|code:s' => \$letter_code,
|
|
);
|
|
my $usage = << 'ENDUSAGE';
|
|
|
|
This script processes the message queue in the message_queue database
|
|
table. It sends out the messages in that queue and marks them
|
|
appropriately to indicate success or failure. It is recommended that
|
|
you run this regularly from cron, especially if you are using the
|
|
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
|
|
-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
|
|
-v --verbose: provides verbose output to STDOUT
|
|
ENDUSAGE
|
|
|
|
die $usage if $help;
|
|
|
|
cronlogaction();
|
|
|
|
if ( C4::Context->config("enable_plugins") ) {
|
|
my @plugins = Koha::Plugins->new->GetPlugins({
|
|
method => 'before_send_messages',
|
|
});
|
|
|
|
if (@plugins) {
|
|
foreach my $plugin ( @plugins ) {
|
|
try {
|
|
$plugin->before_send_messages();
|
|
}
|
|
catch {
|
|
warn "$_";
|
|
};
|
|
}
|
|
}
|
|
}
|
|
|
|
C4::Letters::SendQueuedMessages(
|
|
{
|
|
verbose => $verbose,
|
|
username => $username,
|
|
password => $password,
|
|
method => $method,
|
|
limit => $limit,
|
|
type => $type,
|
|
letter_code => $letter_code,
|
|
}
|
|
);
|
|
|