X-Git-Url: http://git.rot13.org/?a=blobdiff_plain;f=opac%2Fsvc%2Freport;h=38cbd426d875d84cc32b5f9f1ef4a2801131aae8;hb=42acfbf75b7bb4ee53c6a6f035e258a0b522ce10;hp=0f9d5fb7086d7df75d1e623095275c5e3751d5df;hpb=63cd3b9000b8e2744358df8ac07660d403c990df;p=koha.git diff --git a/opac/svc/report b/opac/svc/report index 0f9d5fb708..38cbd426d8 100755 --- a/opac/svc/report +++ b/opac/svc/report @@ -28,33 +28,37 @@ use CGI; use Koha::Cache; my $query = CGI->new(); -my $report = $query->param('id'); - -my $cache; - -my ( $sql, $type, $name, $notes, $cache_expiry, $public ) = - get_saved_report($report); -die "Sorry this report is not public\n" unless $public; - -if (Koha::Cache->is_cache_active) { - $cache = Koha::Cache->new( - ); - my $page = $cache->get_from_cache("opac:report:$report"); - if ($page) { - print $query->header; - print $page; - exit; +my $report_id = $query->param('id'); +my $report_name = $query->param('name'); + +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}; + + +my $cache_active = Koha::Cache->is_cache_active; +my ($cache_key, $cache, $json_text); +if ($cache_active) { + $cache_key = "opac:report:".($report_name ? "name:$report_name" : "id:$report_id"); + $cache = Koha::Cache->new(); + $json_text = $cache->get_from_cache($cache_key); +} + +unless ($json_text) { + 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; + $json_text = to_json($lines); + + if ($cache_active) { + $cache->set_in_cache( $cache_key, $json_text, $report_rec->{cache_expiry} ); + } + } + else { + $json_text = to_json($errors); } } print $query->header; -my $offset = 0; -my $limit = C4::Context->preference("SvcMaxReportRows") || 10; -my ( $sth, $errors ) = execute_query( $sql, $offset, $limit ); -my $lines = $sth->fetchall_arrayref; -my $json_text = to_json($lines); print $json_text; - -if (Koha::Cache->is_cache_active) { - $cache->set_in_cache( "opac:report:$report", $json_text, $cache_expiry ); -}