Bug 21395: Make perlcritic happy
[koha.git] / misc / cronjobs / thirdparty / TalkingTech_itiva_inbound.pl
blobf00d9d6a3428688bf2b7c535de87cbe8428abfae
1 #!/usr/bin/perl
3 # Copyright (C) 2011 ByWater Solutions
5 # This file is part of Koha.
7 # Koha is free software; you can redistribute it and/or modify it
8 # under the terms of the GNU General Public License as published by
9 # the Free Software Foundation; either version 3 of the License, or
10 # (at your option) any later version.
12 # Koha is distributed in the hope that it will be useful, but
13 # WITHOUT ANY WARRANTY; without even the implied warranty of
14 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 # GNU General Public License for more details.
17 # You should have received a copy of the GNU General Public License
18 # along with Koha; if not, see <http://www.gnu.org/licenses>.
20 use strict;
21 use warnings;
23 BEGIN {
25 # find Koha's Perl modules
26 # test carefully before changing this
27 use FindBin;
28 eval { require "$FindBin::Bin/../kohalib.pl" };
31 use Getopt::Long;
32 use Pod::Usage;
34 use Koha::Script -cron;
35 use C4::Context;
37 sub usage {
38 pod2usage( -verbose => 2 );
39 exit;
42 die
43 "TalkingTechItivaPhoneNotification system preference not activated... dying\n"
44 unless ( C4::Context->preference("TalkingTechItivaPhoneNotification") );
46 # Database handle
47 my $dbh = C4::Context->dbh;
49 # Benchmarking
50 my $updated = 0;
51 my $total = 0;
53 # Options
54 my $verbose;
55 my $help;
56 my $infile;
58 GetOptions(
59 'i|input:s' => \$infile,
60 'v' => \$verbose,
61 'help|h' => \$help,
64 die pod2usage() if $help;
66 # initialize the input data, either file or query
67 if ( defined $infile ) {
68 open( my $IN, '<', $infile ) || die("Cannot open input file");
69 print "Opening $infile\n" if ( defined $verbose );
71 while (<$IN>) {
73 # data should take to form "<Transaction ID>","<SUCCESS or FAIL>"
74 s/["\n]//g; # strip quotes and newlines: they're unnecessary
75 my @data = split(/,/);
76 my $result = update_notice(@data);
77 $updated += $result;
78 $total++;
80 close($IN);
82 else {
83 die pod2usage( -verbose => 1 );
86 print "$updated of $total results lines processed\n" if ( defined $verbose );
88 =head1 NAME
90 TalkingTech_itiva_inbound.pl
92 =head1 SYNOPSIS
94 TalkingTech_itiva_inbound.pl
95 TalkingTech_itiva_inbound.pl -v --input=/tmp/talkingtech/results.csv
97 Script to process received Results files for Talking Tech i-tiva
98 phone notification system.
100 =over 8
102 =item B<--help> B<-h>
104 Prints this help
106 =item B<-v>
108 Provide verbose log information.
110 =item B<--input> B<-i>
112 REQUIRED. Path to incoming results file.
114 =back
116 =cut
118 sub update_notice {
119 my $message_id = shift;
120 my $status = shift;
122 if ( $status =~ m/SUCCESS/i ) {
123 $status = 'sent';
125 elsif ( $status =~ m/FAIL/i ) {
126 $status = 'failed';
128 else {
129 warn "unexpected status $status for message ID $message_id\n";
130 return 0;
133 my $query =
134 "UPDATE message_queue SET status = ? WHERE message_id = ? and status = 'pending'";
135 my $sth = $dbh->prepare($query);
137 my $result = $sth->execute( $status, $message_id );
138 return $result;