Bugzilla – Attachment 10309 Details for
Bug 8256
Reports webservice should allow selection by name
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
Bug 8256: Teach webservice to select reports by name
Bug-8256-Teach-webservice-to-select-reports-by-nam.patch (text/plain), 5.15 KB, created by
Jared Camins-Esakov
on 2012-06-15 18:40:27 UTC
(
hide
)
Description:
Bug 8256: Teach webservice to select reports by name
Filename:
MIME Type:
Creator:
Jared Camins-Esakov
Created:
2012-06-15 18:40:27 UTC
Size:
5.15 KB
patch
obsolete
>From 566eb89b34e373566af1f872edb6c86d4e496223 Mon Sep 17 00:00:00 2001 >From: Jared Camins-Esakov <jcamins@cpbibliography.com> >Date: Fri, 15 Jun 2012 14:43:03 -0400 >Subject: [PATCH] Bug 8256: Teach webservice to select reports by name >Content-Type: text/plain; charset="UTF-8" > >Adds the ability to pass a hash to C4::Reports::Guided::get_saved_report >which specifies a name or id to select the report. >--- > C4/Reports/Guided.pm | 26 +++++++++++++++++++++----- > opac/svc/report | 11 ++++++----- > svc/report | 25 ++++++++++++++++++++----- > 3 files changed, 47 insertions(+), 15 deletions(-) > >diff --git a/C4/Reports/Guided.pm b/C4/Reports/Guided.pm >index f1ebe0c..5e44824 100644 >--- a/C4/Reports/Guided.pm >+++ b/C4/Reports/Guided.pm >@@ -607,13 +607,29 @@ sub get_saved_reports { > } > > sub get_saved_report { >- my ($id) = @_; > my $dbh = C4::Context->dbh(); >- my $query = " SELECT * FROM saved_sql WHERE id = ?"; >- my $sth = $dbh->prepare($query); >- $sth->execute($id); >+ my $query; >+ my $sth; >+ my $report_arg; >+ if ($#_ == 0 && ref $_[0] eq 'SCALAR') { >+ ($report_arg) = @_; >+ $query = " SELECT * FROM saved_sql WHERE id = ?"; >+ } elsif (ref $_[0] eq 'HASH') { >+ my ($selector) = @_; >+ if ($selector->{name}) { >+ $query = " SELECT * FROM saved_sql WHERE report_name LIKE ?"; >+ $report_arg = $selector->{name}; >+ } elsif ($selector->{id} || $selector->{id} eq '0') { >+ $query = " SELECT * FROM saved_sql WHERE id = ?"; >+ $report_arg = $selector->{id}; >+ } >+ } else { >+ return; >+ } >+ $sth = $dbh->prepare($query); >+ $sth->execute($report_arg); > my $data = $sth->fetchrow_hashref(); >- return ( $data->{'savedsql'}, $data->{'type'}, $data->{'report_name'}, $data->{'notes'}, $data->{'cache_expiry'}, $data->{'public'} ); >+ return ( $data->{'savedsql'}, $data->{'type'}, $data->{'report_name'}, $data->{'notes'}, $data->{'cache_expiry'}, $data->{'public'}, $data->{'id'} ); > } > > =item create_compound($masterID,$subreportID) >diff --git a/opac/svc/report b/opac/svc/report >index 0f9d5fb..c02a2eb 100755 >--- a/opac/svc/report >+++ b/opac/svc/report >@@ -28,18 +28,19 @@ use CGI; > use Koha::Cache; > > my $query = CGI->new(); >-my $report = $query->param('id'); >+my $report_id = $query->param('id'); >+my $report_name = $query->param('name'); > > my $cache; > >-my ( $sql, $type, $name, $notes, $cache_expiry, $public ) = >- get_saved_report($report); >+my ( $sql, $type, $report_name, $notes, $cache_expiry, $public, $report_id ) = >+ get_saved_report($report_name ? { 'name' => $report_name } : { 'id' => $report_id } ); > 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"); >+ my $page = $cache->get_from_cache("opac:report:$report_id"); > if ($page) { > print $query->header; > print $page; >@@ -56,5 +57,5 @@ 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 ); >+ $cache->set_in_cache( "opac:report:$report_id", $json_text, $cache_expiry ); > } >diff --git a/svc/report b/svc/report >index 18e1986..9917df3 100755 >--- a/svc/report >+++ b/svc/report >@@ -30,9 +30,15 @@ use Koha::Cache; > > > my $query = CGI->new(); >-my $report = $query->param('id'); >+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( > { >@@ -45,8 +51,15 @@ 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 } ); >+ } >+ > $cache = Koha::Cache->new(); >- my $page = $cache->get_from_cache("intranet:report:$report"); >+ my $page = $cache->get_from_cache("intranet:report:$report_id"); > if ($page) { > print $query->header; > print $page; >@@ -57,8 +70,10 @@ if (Koha::Cache->is_cache_active) { > print $query->header; > > # $public isnt used for intranet >-my ( $sql, $type, $name, $notes, $cache_expiry, $public ) = >- get_saved_report($report); >+unless ($sql) { >+ ( $sql, $type, $report_name, $notes, $cache_expiry, $public, $report_id ) = >+ 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 ); >@@ -67,5 +82,5 @@ my $json_text = to_json($lines); > print $json_text; > > if (Koha::Cache->is_cache_active) { >- $cache->set_in_cache( "intranet:report:$report", $json_text, $cache_expiry ); >+ $cache->set_in_cache( "intranet:report:$report_id", $json_text, $cache_expiry ); > } >-- >1.7.2.5
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
|
Splinter Review
Attachments on
bug 8256
:
10309
|
10314
|
10318
|
10320