It would be nice to allow emails to be sent overnight, but limit the sending of SMS messages to hours when people are awake. Adding a type limit to process_message_queue.pl would allow this to be accomplished easily.
Signed-off-by: Charles Farmer <charles.farmer@inLibro.com>
Signed-off-by: Tomas Cohen Arazi <tomascohen@gmail.com>
Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org>
letter_code => $letter_code,
borrowernumber => $who_letter_is_for,
limit => 50,
- verbose => 1
+ verbose => 1,
+ type => 'sms',
});
Sends all of the 'pending' items in the message queue, unless
'limit' => $params->{'limit'} // 0,
'borrowernumber' => $params->{'borrowernumber'} // q{},
'letter_code' => $params->{'letter_code'} // q{},
+ 'type' => $params->{'type'} // q{},
};
my $unsent_messages = _get_unsent_messages( $which_unsent_messages );
MESSAGE: foreach my $message ( @$unsent_messages ) {
$statement .= ' AND mq.letter_code = ? ';
push @query_params, $params->{'letter_code'};
}
+ if ( $params->{'type'} ) {
+ $statement .= ' AND message_transport_type = ? ';
+ push @query_params, $params->{'type'};
+ }
if ( $params->{'limit'} ) {
$statement .= ' limit ? ';
push @query_params, $params->{'limit'};
my $method = 'LOGIN';
my $help = 0;
my $verbose = 0;
+my $type = q{};
GetOptions(
'u|username:s' => \$username,
'm|method:s' => \$method,
'h|help|?' => \$help,
'v|verbose' => \$verbose,
+ 't|type' => \$type,
);
my $usage = << 'ENDUSAGE';
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 )
-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;
password => $password,
method => $method,
limit => $limit,
+ type => $type,
}
);
# along with Koha; if not, see <http://www.gnu.org/licenses>.
use Modern::Perl;
-use Test::More tests => 76;
+use Test::More tests => 77;
use Test::MockModule;
use Test::Warn;
# SendQueuedMessages
-my $messages_processed = C4::Letters::SendQueuedMessages();
-is($messages_processed, 1, 'all queued messages processed');
+my $messages_processed = C4::Letters::SendQueuedMessages( { type => 'email' });
+is($messages_processed, 0, 'No queued messaged process if type limit passed with unused type');
+$messages_processed = C4::Letters::SendQueuedMessages( { type => 'sms' });
+is($messages_processed, 1, 'all queued messages processed, found correct number of messages with type limit');
$messages = C4::Letters::GetQueuedMessages({ borrowernumber => $borrowernumber });
is(
$messages->[0]->{status},