Koha/circ/ysearch.pl
Martin Renvoize d5608b8ff0
Bug 21978: Add support for middle name
This patch adds the new 'Middle name' field to the patron record.

To test:
1) Apply patches
2) Update database, restart all and clear the browser cache
3) Load a patron in the staff module
4) Confirm you can see and edit the new 'Middle name' field
5) Confirm the new middle name data displays on patron details
6) Confirm the new middle name data displays on patron search results
7) Confirm the new middle name data displays everywhere patron names are
   displayed.
8) Confirm the new middle name data displays on the OPAC
9) Confirm the 'Middle name' field appears in the OPAC borrower
   modification screens
10) Edit sysprefs `BorrowerMandatoryFields`, `BorrowerUnwantedFields`,
    `SelfModificationBorrowerUnwantedField`, `PatronSelfModificationMandatoryField`,
    `PatronSelfRegistrationBorrowerMandatoryField` and
    `PatronSelfRegistrationBorrowerUnwantedField` to confirm you can make
    the new field required or hidden.
11) Verify that DefaultPatronSearchFields contains the new field if you
    already had 'firstname' in the field list
12) Enable PatronAutoComplete system preference
13) Type patrons surname into checkout or patron search but don't hit
    return
14) Confirm the patrons middle name is displayed in the preview
15) Go to tools > patron lists and attempt to add a patron to a list
16) Patrons middle name should appear in the autocomplete here too

Signed-off-by: Sally <sally.healey@cheshiresharedservices.gov.uk>

Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
2022-06-24 12:24:11 -03:00

103 lines
3.1 KiB
Perl
Executable file

#!/usr/bin/perl
# 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 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.
#
# You should have received a copy of the GNU General Public License
# along with Koha; if not, see <http://www.gnu.org/licenses>.
=head1 ysearch.pl
=cut
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 Koha::Libraries;
use JSON qw( to_json );
my $input = CGI->new;
my $query = $input->param('term');
binmode STDOUT, ":encoding(UTF-8)";
print $input->header( -type => 'text/plain', -charset => 'UTF-8' );
my ( $auth_status ) = check_cookie_auth( $input->cookie('CGISESSID'), { catalogue => '1' } );
if ( $auth_status ne "ok" ) {
exit 0;
}
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( /,\s|\s/, $query );
my @params;
foreach my $p (@parts) {
push(
@params,
-or => [
surname => { -like => "%$p%" },
firstname => { -like => "%$p%" },
middle_name => { -like => "%$p%" },
cardnumber => { -like => "$p%" },
]
);
}
push( @params, { 'me.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', 'middle_name' ],
prefetch => 'branchcode',
},
);
my @borrowers;
while ( my $b = $borrowers_rs->next ) {
push @borrowers,
{
borrowernumber => $b->borrowernumber,
surname => $b->surname // '',
firstname => $b->firstname // '',
middle_name => $b->middle_name // '',
cardnumber => $b->cardnumber // '',
dateofbirth => format_sqldatetime( $b->dateofbirth, undef, undef, 1 ) // '',
age => $b->get_age // '',
address => $b->address // '',
city => $b->city // '',
zipcode => $b->zipcode // '',
country => $b->country // '',
branchcode => $b->branchcode // '',
branchname => $b->library->branchname // '',
};
}
print to_json( \@borrowers );