From 087ce7ab851b9649904cb38bc0feedf7a1a2cf7e Mon Sep 17 00:00:00 2001 From: Jonathan Druart Date: Mon, 23 Mar 2015 13:13:38 +0100 Subject: [PATCH] [Signed-off] Bug 13892: Make ysearch.pl not using C4::Members::Search MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit To get rid of SQLHelper, we should not use this C4::Members::Search anymore. Test plan: 0/ Enable the CircAutocompl pref 1/ Go on the circulation home page, or the reserve page 2/ Search for a patron and wait for the autocompletion box 3/ Confirm there is no regression Works as expected. Signed-off-by: Marc VĂ©ron --- Koha/Objects.pm | 6 ++--- circ/ysearch.pl | 80 ++++++++++++++++++++++++++++--------------------------- 2 files changed, 44 insertions(+), 42 deletions(-) diff --git a/Koha/Objects.pm b/Koha/Objects.pm index 6b3100a..f347157 100644 --- a/Koha/Objects.pm +++ b/Koha/Objects.pm @@ -96,17 +96,17 @@ my @objects = Koha::Objects->search($params); =cut sub search { - my ( $self, $params ) = @_; + my ( $self, $params, $attributes ) = @_; if (wantarray) { - my @dbic_rows = $self->_resultset()->search($params); + my @dbic_rows = $self->_resultset()->search($params, $attributes); return $self->_wrap(@dbic_rows); } else { my $class = ref($self) ? ref($self) : $self; - my $rs = $self->_resultset()->search($params); + my $rs = $self->_resultset()->search($params, $attributes); return $class->_new_from_dbic($rs); } diff --git a/circ/ysearch.pl b/circ/ysearch.pl index 4ac19f5..8e43b8e 100755 --- a/circ/ysearch.pl +++ b/circ/ysearch.pl @@ -22,61 +22,63 @@ =head1 ysearch.pl - =cut -use strict; -#use warnings; FIXME - Bug 2505 +use Modern::Perl; use CGI qw ( -utf8 ); use C4::Context; -use C4::Members; use C4::Auth qw/check_cookie_auth/; +use Koha::Borrowers; + +use JSON qw( to_json ); -my $input = new CGI; -my $query = $input->param('term'); +my $input = new CGI; +my $query = $input->param('term'); binmode STDOUT, ":encoding(UTF-8)"; -print $input->header(-type => 'text/plain', -charset => 'UTF-8'); +print $input->header( -type => 'text/plain', -charset => 'UTF-8' ); -my ($auth_status, $sessionID) = check_cookie_auth($input->cookie('CGISESSID'), { circulate => '*' }); -if ($auth_status ne "ok") { +my ( $auth_status, $sessionID ) = check_cookie_auth( $input->cookie('CGISESSID'), { circulate => '*' } ); +if ( $auth_status ne "ok" ) { exit 0; } -my $dbh = C4::Context->dbh; -my $sql = q( - SELECT borrowernumber, surname, firstname, cardnumber, address, city, zipcode, country - FROM borrowers - WHERE ( surname LIKE ? - OR firstname LIKE ? - OR cardnumber LIKE ? ) -); +my $limit_on_branch; if ( C4::Context->preference("IndependentBranches") && C4::Context->userenv && !C4::Context->IsSuperLibrarian() - && C4::Context->userenv->{'branch'} ) -{ - $sql .= " AND borrowers.branchcode =" - . $dbh->quote( C4::Context->userenv->{'branch'} ); + && C4::Context->userenv->{'branch'} ) { + $limit_on_branch = 1; } -$sql .= q( ORDER BY surname, firstname LIMIT 10); -my $sth = $dbh->prepare( $sql ); -$sth->execute("$query%", "$query%", "$query%"); +my $borrowers_rs = Koha::Borrowers->search( + { -or => { + surname => { -like => "$query%" }, + firstname => { -like => "$query%" }, + cardnumber => { -like => "$query%" }, + ( $limit_on_branch ? { branchcode => C4::Context->userenv->{branch} } : () ), + }, + }, + { + # Get the first 10 results + page => 1, + rows => 10, + order_by => [ 'surname', 'firstname' ], + }, +); -print "["; -my $i = 0; -while ( my $rec = $sth->fetchrow_hashref ) { - if($i > 0){ print ","; } - print "{\"borrowernumber\":\"" . $rec->{borrowernumber} . "\",\"" . - "surname\":\"".$rec->{surname} . "\",\"" . - "firstname\":\"".$rec->{firstname} . "\",\"" . - "cardnumber\":\"".$rec->{cardnumber} . "\",\"" . - "address\":\"".$rec->{address} . "\",\"" . - "city\":\"".$rec->{city} . "\",\"" . - "zipcode\":\"".$rec->{zipcode} . "\",\"" . - "country\":\"".$rec->{country} . "\"" . - "}"; - $i++; +my @borrowers; +while ( my $b = $borrowers_rs->next ) { + push @borrowers, + { borrowernumber => $b->borrowernumber, + surname => $b->surname, + firstname => $b->firstname, + cardnumber => $b->cardnumber, + address => $b->address, + city => $b->city, + zipcode => $b->zipcode, + country => $b->country + }; } -print "]"; + +print to_json( \@borrowers ); -- 1.7.10.4