Bug 20495: (follow-up) Correct search for report by name
authorNick Clemens <nick@bywatersolutions.com>
Fri, 25 May 2018 03:01:48 +0000 (03:01 +0000)
committerNick Clemens <nick@bywatersolutions.com>
Mon, 2 Jul 2018 12:06:54 +0000 (12:06 +0000)
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

Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org>
Note: We should not remove the param "name", it's a feature, see bug 8256.

Signed-off-by: Nick Clemens <nick@bywatersolutions.com>

opac/svc/report
svc/report

index 49afb3d..ddf445f 100755 (executable)
@@ -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;
 
index 662aa58..3c2ad96 100755 (executable)
@@ -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);
 }