X-Git-Url: http://git.rot13.org/?a=blobdiff_plain;f=circ%2Fysearch.pl;h=b9e75d0d4dc16283bc9194b3e234329da539b372;hb=refs%2Fheads%2Fkoha_ffzg;hp=ce890f5b1924a9b5f29036133ffb92519c12cf45;hpb=944831555e89c8fdb4dc865764de51887a98a23b;p=koha.git diff --git a/circ/ysearch.pl b/circ/ysearch.pl index ce890f5b19..b9e75d0d4d 100755 --- a/circ/ysearch.pl +++ b/circ/ysearch.pl @@ -3,61 +3,93 @@ # This software is placed under the gnu General Public License, v2 (http://www.gnu.org/licenses/gpl.html) # Copyright 2007 Tamil s.a.r.l. +# Parts copyright 2010-2012 Athens County Public Libraries # # This file is part of Koha. # -# Koha is free software; you can redistribute it and/or modify it under the -# terms of the GNU General Public License as published by the Free Software -# Foundation; either version 2 of the License, or (at your option) any later -# version. +# Koha is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. # -# Koha is distributed in the hope that it will be useful, but WITHOUT ANY -# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR -# A PARTICULAR PURPOSE. See the GNU General Public License for more details. +# Koha is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. # -# You should have received a copy of the GNU General Public License along -# with Koha; if not, write to the Free Software Foundation, Inc., -# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. +# You should have received a copy of the GNU General Public License +# along with Koha; if not, see . =head1 ysearch.pl - =cut -use strict; -#use warnings; FIXME - Bug 2505 -use CGI; +use Modern::Perl; +use CGI qw ( -utf8 ); use C4::Context; use C4::Auth qw/check_cookie_auth/; +use Koha::Patrons; +use Koha::DateUtils qw/format_sqldatetime/; + +use JSON qw( to_json ); -my $input = new CGI; -my $query = $input->param('query'); +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'), { catalogue => '1' } ); +if ( $auth_status ne "ok" ) { exit 0; } -my $dbh = C4::Context->dbh; -my $sql = qq(SELECT surname, firstname, cardnumber, address, city, zipcode, country - FROM borrowers - WHERE surname LIKE ? - OR firstname LIKE ? - OR cardnumber LIKE ? - ORDER BY surname, firstname - LIMIT 10); -my $sth = $dbh->prepare( $sql ); -$sth->execute("$query%", "$query%", "$query%"); - -while ( my $rec = $sth->fetchrow_hashref ) { - print $rec->{surname} . ", " . $rec->{firstname} . "\t" . - $rec->{cardnumber} . "\t" . - $rec->{address} . "\t" . - $rec->{city} . "\t" . - $rec->{zip} . "\t" . - $rec->{country} . - "\n"; +my $limit_on_branch; +if ( C4::Context->preference("IndependentBranches") + && C4::Context->userenv + && !C4::Context->IsSuperLibrarian() + && C4::Context->userenv->{'branch'} ) { + $limit_on_branch = 1; } + +my @parts = split( / /, $query ); +my @params; +foreach my $p (@parts) { + push( + @params, + -or => [ + surname => { -like => "%$p%" }, + firstname => { -like => "%$p%" }, + cardnumber => { -like => "$p%" }, + ] + ); +} + +push( @params, { branchcode => C4::Context->userenv->{branch} } ) if $limit_on_branch; + +my $borrowers_rs = Koha::Patrons->search_limited( + { -and => \@params }, + { + # Get the first 10 results + page => 1, + rows => 10, + order_by => [ 'surname', 'firstname' ], + }, +); + +my @borrowers; +while ( my $b = $borrowers_rs->next ) { + push @borrowers, + { borrowernumber => $b->borrowernumber, + surname => $b->surname // '', + firstname => $b->firstname // '', + cardnumber => $b->cardnumber // '', + dateofbirth => format_sqldatetime($b->dateofbirth, undef, undef, 1) // '', + address => $b->address // '', + city => $b->city // '', + zipcode => $b->zipcode // '', + country => $b->country // '', + }; +} + +print to_json( \@borrowers );