@@ -, +, @@ --------- 1) Log into staff client 2) Reports 3) Used save reports 4) Click the Action button on any report WITHOUT PARAMETERS. -- with parameters blows up in master and this. 5) Click Edit 6) Make the report public 7) Update the SQL 8) Note the ID number of the report 9) Note the ID number of a non-public report https://OPAC/cgi-bin/koha/svc/report?id=# from step 8 -- JSON data has arrays of field values. https://OPAC/cgi-bin/koha/svc/report?id=# from step 8&annotated=1 -- JSON data has arrays of field values. https://OPAC/cgi-bin/koha/svc/report?id=# from step 9 -- Software error: Sorry this report is not public https://OPAC/cgi-bin/koha/svc/report?id=# from step 9&annotated=1 -- Software error: Sorry this report is not public https://OPAC/cgi-bin/koha/svc/report?id=# from step 10 -- Software error: Sorry this report is not public https://OPAC/cgi-bin/koha/svc/report?id=# from step 10&annotated=1 -- Software error: Sorry this report is not public https://STAFF/cgi-bin/koha/svc/report?id=# from step 8 -- JSON data has arrays of field values. https://STAFF/cgi-bin/koha/svc/report?id=# from step 8&annotated=1 -- JSON data has arrays of field values. https://STAFF/cgi-bin/koha/svc/report?id=# from step 9 -- JSON data has arrays of field values. https://STAFF/cgi-bin/koha/svc/report?id=# from step 9&annotated=1 -- JSON data has arrays of field values. https://STAFF/cgi-bin/koha/svc/report?id=# from step 10 -- Software error: hash- or arrayref expected (not a simple scalar, use allow_nonref to allow this) at /usr/share/perl5/JSON.pm line 154. https://STAFF/cgi-bin/koha/svc/report?id=# from step 10&annotated=1 -- Software error: hash- or arrayref expected (not a simple scalar, use allow_nonref to allow this) at /usr/share/perl5/JSON.pm line 154. -- There should be no problems. All OK. https://OPAC/cgi-bin/koha/svc/report?id=# from step 8 -- JSON data has arrays of field values. https://OPAC/cgi-bin/koha/svc/report?id=# from step 8&annotated=1 -- JSON data has arrays of hashes with field names as keys https://OPAC/cgi-bin/koha/svc/report?id=# from step 9 -- Software error: Sorry this report is not public https://OPAC/cgi-bin/koha/svc/report?id=# from step 9&annotated=1 -- Software error: Sorry this report is not public https://OPAC/cgi-bin/koha/svc/report?id=# from step 10 -- Software error: There is no such report. https://OPAC/cgi-bin/koha/svc/report?id=# from step 10&annotated=1 -- Software error: There is no such report. https://STAFF/cgi-bin/koha/svc/report?id=# from step 8 -- JSON data has arrays of field values. https://STAFF/cgi-bin/koha/svc/report?id=# from step 8&annotated=1 -- JSON data has arrays of hashes with field names as keys https://STAFF/cgi-bin/koha/svc/report?id=# from step 9 -- JSON data has arrays of field values. https://STAFF/cgi-bin/koha/svc/report?id=# from step 9&annotated=1 -- JSON data has arrays of hashes with field names as keys https://STAFF/cgi-bin/koha/svc/report?id=# from step 10 -- Software error: There is no such report. https://STAFF/cgi-bin/koha/svc/report?id=# from step 10&annotated=1 -- Software error: There is no such report. --- opac/svc/report | 12 ++++++++++-- svc/report | 13 +++++++++++-- 2 files changed, 21 insertions(+), 4 deletions(-) --- a/opac/svc/report +++ a/opac/svc/report @@ -30,10 +30,12 @@ use Koha::Cache; my $query = CGI->new(); my $report_id = $query->param('id'); my $report_name = $query->param('name'); +my $report_annotation = $query->param('annotated'); my $report_rec = get_saved_report( $report_name ? { 'name' => $report_name } : { 'id' => $report_id } ); -die "Sorry this report is not public\n" unless $report_rec->{public}; +if (!$report_rec) { die "There is no such report.\n"; } +die "Sorry this report is not public\n" unless $report_rec->{public}; my $cache_active = Koha::Cache->is_cache_active; my ($cache_key, $cache, $json_text); @@ -48,7 +50,13 @@ unless ($json_text) { my $limit = C4::Context->preference("SvcMaxReportRows") || 10; my ( $sth, $errors ) = execute_query( $report_rec->{savedsql}, $offset, $limit ); if ($sth) { - my $lines = $sth->fetchall_arrayref; + my $lines; + if ($report_annotation) { + $lines = $sth->fetchall_arrayref({}); + } + else { + $lines = $sth->fetchall_arrayref; + } $json_text = to_json($lines); if ($cache_active) { --- a/svc/report +++ a/svc/report @@ -32,6 +32,10 @@ use Koha::Cache; my $query = CGI->new(); my $report_id = $query->param('id'); my $report_name = $query->param('name'); +my $report_annotation = $query->param('annotated'); + +my $report_rec = get_saved_report( $report_name ? { 'name' => $report_name } : { 'id' => $report_id } ); +if (!$report_rec) { die "There is no such report.\n"; } my ( $template, $loggedinuser, $cookie ) = get_template_and_user( { @@ -52,12 +56,17 @@ if ($cache_active) { } unless ($json_text) { - my $report_rec = get_saved_report($report_name ? { 'name' => $report_name } : { 'id' => $report_id }); my $offset = 0; my $limit = C4::Context->preference("SvcMaxReportRows") || 10; my ( $sth, $errors ) = execute_query( $report_rec->{savedsql}, $offset, $limit ); if ($sth) { - my $lines = $sth->fetchall_arrayref; + my $lines; + if ($report_annotation) { + $lines = $sth->fetchall_arrayref({}); + } + else { + $lines = $sth->fetchall_arrayref; + } $json_text = to_json($lines); if ($cache_active) { --