View | Details | Raw Unified | Return to bug 5253
Collapse All | Expand All

(-)a/misc/cronjobs/runreport.pl (-19 / +65 lines)
Lines 53-58 runreport.pl [ -h | -m ] [ -v ] reportID [ reportID ... ] Link Here
53
   -m --man        full documentation, same as --help --verbose
53
   -m --man        full documentation, same as --help --verbose
54
   -v --verbose    verbose output
54
   -v --verbose    verbose output
55
55
56
   --format=s      selects format. Choice of text, html, csv, or tsv
57
58
   -e --email      whether to use e-mail (implied by --to or --from)
59
   --to=s          e-mail address to send report to
60
   --from=s        e-mail address to send report from
61
   --subject=s     subject for the e-mail
62
63
56
 Arguments:
64
 Arguments:
57
   reportID        report ID Number from saved_sql.id, multiple ID's may be specified
65
   reportID        report ID Number from saved_sql.id, multiple ID's may be specified
58
66
Lines 72-77 Prints the manual page and exits. Link Here
72
80
73
Verbose. Without this flag set, only fatal errors are reported.
81
Verbose. Without this flag set, only fatal errors are reported.
74
82
83
=item B<-format>
84
85
Current options are text, html, csv, and tsv. At the moment, text and tsv both produce tab-separated tab-separated output.
86
87
=item B<-email>
88
89
Whether to use e-mail (implied by --to or --from).
90
91
=item B<-to>
92
93
E-mail address to send report to. Defaults to KohaAdminEmailAddress.
94
95
=item B<-from>
96
97
E-mail address to send report from. Defaults to KohaAdminEmailAddress.
98
99
=item B<-subject>
100
101
Subject for the e-mail message. Defaults to "Koha Saved Report"
102
75
=back
103
=back
76
104
77
=head1 DESCRIPTION
105
=head1 DESCRIPTION
Lines 93-109 Same as above, but also runs report #17. Link Here
93
121
94
=over
122
=over
95
123
96
=item * 
97
98
Complete testing for Sendmail related options: --email, --to, and --from.
99
124
100
=item *
125
=item *
101
126
102
Allow Saved Results option.
127
Allow Saved Results option.
103
128
104
=item *
105
106
Possible --format option for CSV or tab-delimited output.
107
129
108
=back
130
=back
109
131
Lines 120-137 my $help = 0; Link Here
120
my $man     = 0;
142
my $man     = 0;
121
my $verbose = 0;
143
my $verbose = 0;
122
my $email   = 0;
144
my $email   = 0;
123
my $format  = "";
145
my $format  = "text";
124
my $to      = "";
146
my $to      = "";
125
my $from    = "";
147
my $from    = "";
126
my $subject = 'Koha Saved Report';
148
my $subject = 'Koha Saved Report';
149
my $separator = ',';
150
my $quote = '"';
127
151
128
GetOptions(
152
GetOptions(
129
    'help|?'     => \$help,
153
    'help|?'     => \$help,
130
    'man'        => \$man,
154
    'man'        => \$man,
131
    'verbose'    => \$verbose,
155
    'verbose'    => \$verbose,
132
    'format'     => \$format,
156
    'format=s'   => \$format,
133
    'to'         => \$to,
157
    'to=s'       => \$to,
134
    'from'       => \$from,
158
    'from=s'     => \$from,
159
    'subject=s'  => \$subject,
135
    'email'      => \$email,
160
    'email'      => \$email,
136
) or pod2usage(2);
161
) or pod2usage(2);
137
pod2usage( -verbose => 2 ) if ($man);
162
pod2usage( -verbose => 2 ) if ($man);
Lines 140-147 pod2usage(1) if $help; Link Here
140
165
141
unless ($format) {
166
unless ($format) {
142
    $verbose and print STDERR "No format specified, assuming 'text'\n";
167
    $verbose and print STDERR "No format specified, assuming 'text'\n";
143
    $format = '';
168
    $format = 'text';
144
    # $format = 'text';
169
}
170
171
if ($format eq 'tsv' || $format eq 'text') {
172
    $format = 'csv';
173
    $separator = "\t";
145
}
174
}
146
175
147
if ($to or $from or $email) {
176
if ($to or $from or $email) {
Lines 174-186 foreach my $report (@ARGV) { Link Here
174
    }
203
    }
175
    $verbose and print "$count results from execute_query\n";
204
    $verbose and print "$count results from execute_query\n";
176
205
177
    my $cgi = CGI->new();
206
    my $message;
178
    my @rows = ();
207
    if ($format eq 'html') {
179
    while (my $line = $sth->fetchrow_arrayref) {
208
        my $cgi = CGI->new();
180
        foreach (@$line) { defined($_) or $_ = ''; }    # catch undef values, replace w/ ''
209
        my @rows = ();
181
        push @rows, $cgi->TR( join('', $cgi->td($line)) ) . "\n";
210
        while (my $line = $sth->fetchrow_arrayref) {
211
            foreach (@$line) { defined($_) or $_ = ''; }    # catch undef values, replace w/ ''
212
            push @rows, $cgi->TR( join('', $cgi->td($line)) ) . "\n";
213
        }
214
        $message = $cgi->table(join "", @rows);
215
    } elsif ($format eq 'csv') {
216
        my $csv = Text::CSV_XS->new({
217
            quote_char  => $quote,
218
            sep_char    => $separator,
219
            });
220
        while (my $line = $sth->fetchrow_arrayref) {
221
            $csv->combine(@$line);
222
#            foreach (@$line) {
223
#                defined($_) or $_ = '';
224
#                $_ =~ s/$quote/\\$quote/g;
225
#                $_ = "$quote$_$quote";
226
#            }    # catch undef values, replace w/ ''
227
#            $message .= join ($separator, @$line) . "\n";
228
            $message .= $csv->string() . "\n";
229
        }
182
    }
230
    }
183
    my $message = $cgi->table(join "", @rows);
184
231
185
    if ($email){
232
    if ($email){
186
        my %mail = (
233
        my %mail = (
187
- 

Return to bug 5253