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

(-)a/koha-tmpl/intranet-tmpl/prog/en/modules/tools/scheduler.tt (-1 / +1 lines)
Lines 54-60 Link Here
54
<li><label for="format">Output format:</label>
54
<li><label for="format">Output format:</label>
55
<select name="format" id="format">
55
<select name="format" id="format">
56
<option value="text">Text</option>
56
<option value="text">Text</option>
57
<option value="url">URL</option>
57
<option value="csv">CSV</option>
58
</select>
58
</select>
59
</li>
59
</li>
60
<li><label for="email">Email:</label>
60
<li><label for="email">Email:</label>
(-)a/misc/cronjobs/runreport.pl (-20 / +40 lines)
Lines 25-31 use C4::Context; Link Here
25
25
26
use Getopt::Long qw(:config auto_help auto_version);
26
use Getopt::Long qw(:config auto_help auto_version);
27
use Pod::Usage;
27
use Pod::Usage;
28
use Mail::Sendmail;
28
use MIME::Lite;
29
use Text::CSV_XS;
29
use Text::CSV_XS;
30
use CGI;
30
use CGI;
31
use Carp;
31
use Carp;
Lines 149-154 my $from = ""; Link Here
149
my $subject = 'Koha Saved Report';
149
my $subject = 'Koha Saved Report';
150
my $separator = ',';
150
my $separator = ',';
151
my $quote = '"';
151
my $quote = '"';
152
my $message = "";
153
my $mail;
154
my $outfile;
152
155
153
GetOptions(
156
GetOptions(
154
    'help|?'     => \$help,
157
    'help|?'     => \$help,
Lines 169-179 unless ($format) { Link Here
169
    $format = 'text';
172
    $format = 'text';
170
}
173
}
171
174
172
if ($format eq 'tsv' || $format eq 'text') {
173
    $format = 'csv';
174
    $separator = "\t";
175
}
176
177
if ($to or $from or $email) {
175
if ($to or $from or $email) {
178
    $email = 1;
176
    $email = 1;
179
    $from or $from = C4::Context->preference('KohaAdminEmailAddress');
177
    $from or $from = C4::Context->preference('KohaAdminEmailAddress');
Lines 187-196 unless (scalar(@ARGV)) { Link Here
187
($verbose) and print scalar(@ARGV), " argument(s) after options: " . join(" ", @ARGV) . "\n";
185
($verbose) and print scalar(@ARGV), " argument(s) after options: " . join(" ", @ARGV) . "\n";
188
186
189
187
190
foreach my $report_id (@ARGV) {
188
foreach my $report (@ARGV) {
191
    my $report = get_saved_report($report_id);
189
    my ($sql, $type, $report_name) = get_saved_report($report);
192
    unless ($report) {
190
    unless ($sql) {
193
        warn "ERROR: No saved report $report_id found";
191
        carp "ERROR: No saved report $report found";
194
        next;
192
        next;
195
    }
193
    }
196
    my $sql         = $report->{savedsql};
194
    my $sql         = $report->{savedsql};
Lines 206-212 foreach my $report_id (@ARGV) { Link Here
206
    {
204
    {
207
        $subject = 'Koha Saved Report';
205
        $subject = 'Koha Saved Report';
208
    }
206
    }
209
    # my $results = execute_query($sql, undef, 0, 99999, $format, $report_id);
207
    # my $results = execute_query($sql, undef, 0, 99999, $format, $report); 
210
    my ($sth) = execute_query($sql);
208
    my ($sth) = execute_query($sql);
211
    # execute_query(sql, , 0, 20, , )
209
    # execute_query(sql, , 0, 20, , )
212
    my $count = scalar($sth->rows);
210
    my $count = scalar($sth->rows);
Lines 216-223 foreach my $report_id (@ARGV) { Link Here
216
    }
214
    }
217
    $verbose and print "$count results from execute_query\n";
215
    $verbose and print "$count results from execute_query\n";
218
216
219
    my $message;
217
    if ($format eq 'text') {
220
    if ($format eq 'html') {
221
        my $cgi = CGI->new();
218
        my $cgi = CGI->new();
222
        my @rows = ();
219
        my @rows = ();
223
        while (my $line = $sth->fetchrow_arrayref) {
220
        while (my $line = $sth->fetchrow_arrayref) {
Lines 225-230 foreach my $report_id (@ARGV) { Link Here
225
            push @rows, $cgi->TR( join('', $cgi->td($line)) ) . "\n";
222
            push @rows, $cgi->TR( join('', $cgi->td($line)) ) . "\n";
226
        }
223
        }
227
        $message = $cgi->table(join "", @rows);
224
        $message = $cgi->table(join "", @rows);
225
        if ( $email ) {
226
            $mail = MIME::Lite->new (
227
                To      => $to,
228
                From    => $from,
229
                Subject => $subject,
230
                Data    => $message,
231
                Type    => 'text/html'
232
            );
233
        }
228
    } elsif ($format eq 'csv') {
234
    } elsif ($format eq 'csv') {
229
        my $csv = Text::CSV_XS->new({
235
        my $csv = Text::CSV_XS->new({
230
            quote_char  => $quote,
236
            quote_char  => $quote,
Lines 240-258 foreach my $report_id (@ARGV) { Link Here
240
#            $message .= join ($separator, @$line) . "\n";
246
#            $message .= join ($separator, @$line) . "\n";
241
            $message .= $csv->string() . "\n";
247
            $message .= $csv->string() . "\n";
242
        }
248
        }
249
        if ($email) {
250
            $outfile = "/tmp/report$report.csv";
251
            open( my $fh, ">:encoding(UTF-8)", $outfile )  or die "unable to open $outfile: $!";
252
            print $fh $message;
253
            close $fh;
254
255
            $mail = MIME::Lite->new (
256
                From    => $from,
257
                To      => $to,
258
                Subject => $subject,
259
                Type    => 'multipart/mixed',
260
            );
261
            $mail->attach (
262
                Type    => 'application/csv',
263
                Path    => $outfile,
264
                Filename    => "report$report.csv",
265
            );
266
        }
243
    }
267
    }
244
268
245
    if ($email){
269
    if ($email){
246
        my %mail = (
270
        $mail->send or carp 'mail not sent:';
247
            To      => $to,
271
        unlink $outfile if ($outfile);
248
            From    => $from,
249
            Subject => encode('utf8', $subject ),
250
            Message => encode('utf8', $message )
251
        );
252
        sendmail(%mail) or carp 'mail not sent:' . $Mail::Sendmail::error;
253
    } else {
272
    } else {
254
        print $message;
273
        print $message;
255
    }
274
    }
275
256
    # my @xmlarray = ... ;
276
    # my @xmlarray = ... ;
257
    # my $url = "/cgi-bin/koha/reports/guided_reports.pl?phase=retrieve%20results&id=$id";
277
    # my $url = "/cgi-bin/koha/reports/guided_reports.pl?phase=retrieve%20results&id=$id";
258
    # my $xml = XML::Dumper->new()->pl2xml( \@xmlarray );
278
    # my $xml = XML::Dumper->new()->pl2xml( \@xmlarray );
(-)a/tools/scheduler.pl (-4 / +6 lines)
Lines 67-75 if ( $mode eq 'job_add' ) { Link Here
67
    my $report = $input->param('report');
67
    my $report = $input->param('report');
68
    my $format = $input->param('format');
68
    my $format = $input->param('format');
69
    my $email  = $input->param('email');
69
    my $email  = $input->param('email');
70
    my $command =
70
    my $command = "export KOHA_CONF=\"$CONFIG_NAME\"; ";
71
        "EXPORT KOHA_CONF=\"$CONFIG_NAME\"; " . $base
71
    $command .= $base . "/misc/cronjobs/runreport.pl";
72
      . "/tools/runreport.pl $report $format $email";
72
    $command .= " --format $format" if ( $format );
73
    $command .= " --to $email" if ( $email );
74
    $command .= " $report";
75
73
76
74
    if ($recurring) {
77
    if ($recurring) {
75
        my $frequency = $input->param('frequency');
78
        my $frequency = $input->param('frequency');
76
- 

Return to bug 1993