From 423d3da6727f74de399cb36ea3642126cc735c52 Mon Sep 17 00:00:00 2001 From: Nick Clemens Date: Wed, 5 Sep 2018 11:15:01 +0000 Subject: [PATCH] Bug 16219: Add 'params' parameter to runreport.pl Content-Type: text/plain; charset=utf-8 To test: 1 - Apply patch 2 - Write a report that takes no variables 3 - Run this using runreport.pl perl misc/cronjobs/runreport.pl 1 4 - Confirm results as expected 5 - Write a report that takes one or more variables 6 - Run using runreport.pl, but pass no params 7 - You should get a SQL error 8 - Now run passing the correct number of params perl misc/cronjobs/runreport.pl --param first --param=2nd 2 9 - Verify results as expected 10 - call runreport with no parameters perl misc/cronjobs/runreport.pl 11 - Verify documentation is correct and helpful Signed-off-by: Claire Gravely Signed-off-by: Marcel de Rooy --- misc/cronjobs/runreport.pl | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/misc/cronjobs/runreport.pl b/misc/cronjobs/runreport.pl index b62639b7d5..869ede8168 100755 --- a/misc/cronjobs/runreport.pl +++ b/misc/cronjobs/runreport.pl @@ -67,6 +67,7 @@ runreport.pl [ -h | -m ] [ -v ] reportID [ reportID ... ] --to=s e-mail address to send report to --from=s e-mail address to send report from --subject=s subject for the e-mail + --params=s parameters for the report --store-results store the result of the report --csv-header add column names as first line of csv output @@ -122,6 +123,10 @@ E-mail address to send report from. Defaults to KohaAdminEmailAddress. Subject for the e-mail message. Defaults to "Koha Saved Report" +=item B<--params> + +Repeatable, should provide one param per param requested for the report + =item B<--store-results> Store the result of the report into the saved_reports DB table. @@ -175,6 +180,7 @@ my $format = "text"; my $to = ""; my $from = ""; my $subject = ""; +my @params = (); my $separator = ','; my $quote = '"'; my $store_results = 0; @@ -192,6 +198,7 @@ GetOptions( 'to=s' => \$to, 'from=s' => \$from, 'subject=s' => \$subject, + 'param=s' => \@params, 'email' => \$email, 'a|attachment' => \$attachment, 'username:s' => \$username, @@ -254,7 +261,11 @@ foreach my $report_id (@ARGV) { $subject = 'Koha Saved Report'; } } - my ($sth) = execute_query( $sql, undef, undef, undef, $report_id ); + + # convert SQL parameters to placeholders + $sql =~ s/(<<.*?>>)/\?/g; + + my ($sth) = execute_query( $sql, undef, undef, \@params, $report_id ); my $count = scalar($sth->rows); unless ($count) { print "NO OUTPUT: 0 results from execute_query\n"; -- 2.11.0