From 700044aea956ec76b659b8ca369fd062f29c716d Mon Sep 17 00:00:00 2001 From: Nick Clemens Date: Fri, 25 May 2018 03:01:48 +0000 Subject: [PATCH] Bug 20495: (follow-up) Correct search for report by name Ultimately we should probably remove name access as it is not a unique id, but this should preserve existing behaviour To test: Create a report Use the service link to confirm the report runs Replace id=# parameter with name=XXXXXX Confirm URL works --- opac/svc/report | 5 +++-- svc/report | 7 ++++--- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/opac/svc/report b/opac/svc/report index 49afb3d..ddf445f 100755 --- a/opac/svc/report +++ b/opac/svc/report @@ -35,8 +35,9 @@ my $report_id = $query->param('id'); my $report_name = $query->param('name'); my $report_annotation = $query->param('annotated'); -my $report_rec = Koha::Reports->find( $report_name ? { 'name' => $report_name } : { 'id' => $report_id } ); -if (!$report_rec) { die "There is no such report.\n"; } +my $report_recs = Koha::Reports->search( $report_name ? { 'report_name' => $report_name } : { 'id' => $report_id } ); +if ( !$report_recs || $report_recs->count == 0 ) { die "There is no such report.\n"; } +my $report_rec = $report_recs->next(); die "Sorry this report is not public\n" unless $report_rec->public; diff --git a/svc/report b/svc/report index 662aa58..3c2ad96 100755 --- a/svc/report +++ b/svc/report @@ -34,8 +34,9 @@ my $report_id = $query->param('id'); my $report_name = $query->param('name'); my $report_annotation = $query->param('annotated'); -my $report_rec = Koha::Reports->find( $report_name ? { 'name' => $report_name } : { 'id' => $report_id } ); -if (!$report_rec) { die "There is no such report.\n"; } +my $report_recs = Koha::Reports->search( $report_name ? { 'report_name' => $report_name } : { 'id' => $report_id } ); +if (!$report_recs || $report_recs->count == 0 ) { die "There is no such report.\n"; } +my $report_rec = $report_recs->next(); my @sql_params = $query->param('sql_params'); @@ -53,7 +54,7 @@ my $cache = Koha::Caches->get_instance(); my $cache_active = $cache->is_cache_active; my ($cache_key, $json_text); if ($cache_active) { - $cache_key = "intranet:report:".($report_name ? "name:$report_name" : "id:$report_id") + $cache_key = "intranet:report:".($report_name ? "report_name:$report_name" : "id:$report_id") . join( '-', @sql_params ); $json_text = $cache->get_from_cache($cache_key); } -- 2.1.4