-print map $_->{surname} . ", " . $_->{firstname} . "\t" .
- $_->{cardnumber} . "\t" .
- $_->{address} . "\t" .
- $_->{city} . "\t" .
- $_->{zipcode} . "\t" .
- $_->{country} .
- "\n",
- @{ Search($query, [qw(surname firstname cardnumber)], [10], [qw(surname firstname cardnumber address city zipcode country)]) };
+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 );