X-Git-Url: http://git.rot13.org/?a=blobdiff_plain;f=svc%2Freport;h=654ef1572b76c231badabfc1e1c782510734bee6;hb=65be03846d064dd6d9e7159550a269a352054b65;hp=b0507bd33dbfe5751fa17b35448b5082343c08a0;hpb=19264af3f4cb75f8111b9d095efde6fd44038cb3;p=koha.git diff --git a/svc/report b/svc/report index b0507bd33d..654ef1572b 100755 --- a/svc/report +++ b/svc/report @@ -33,13 +33,6 @@ my $query = CGI->new(); my $report_id = $query->param('id'); my $report_name = $query->param('name'); -my $cache; -my $sql; -my $type; -my $notes; -my $cache_expiry; -my $public; - my ( $template, $loggedinuser, $cookie ) = get_template_and_user( { template_name => "intranet-main.tmpl", @@ -50,39 +43,31 @@ my ( $template, $loggedinuser, $cookie ) = get_template_and_user( } ); -if (Koha::Cache->is_cache_active) { - if ($report_name) { # When retrieving by name, we have to hit the - # database to get the ID before we can check - # the cache. Yuck. - ( $sql, $type, $report_name, $notes, $cache_expiry, $public, $report_id ) = - get_saved_report( { 'name' => $report_name } ); - } - +my $cache_active = Koha::Cache->is_cache_active; +my ($cache_key, $cache, $json_text); +if ($cache_active) { + $cache_key = "intranet:report:".($report_name ? "name:$report_name" : "id:$report_id"); $cache = Koha::Cache->new(); - my $page = $cache->get_from_cache("intranet:report:$report_id"); - if ($page) { - print $query->header; - print $page; - exit; - } + $json_text = $cache->get_from_cache($cache_key); } -print $query->header; - -# $public isnt used for intranet -unless ($sql) { - ( $sql, $type, $report_name, $notes, $cache_expiry, $public, $report_id ) = - get_saved_report($report_name ? { 'name' => $report_name } : { 'id' => $report_id } ); -} -if ($sql) { +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( $sql, $offset, $limit ); - my $lines = $sth->fetchall_arrayref; - my $json_text = to_json($lines); - print $json_text; + my ( $sth, $errors ) = execute_query( $report_rec->{savedsql}, $offset, $limit ); + if ($sth) { + my $lines = $sth->fetchall_arrayref; + $json_text = to_json($lines); - if (Koha::Cache->is_cache_active) { - $cache->set_in_cache( "intranet:report:$report_id", $json_text, $cache_expiry ); + if ($cache_active) { + $cache->set_in_cache( $cache_key, $json_text, $report_rec->{cache_expiry} ); + } + } + else { + $json_text = to_json($errors); } } + +print $query->header; +print $json_text;