From 65e541085c86ab2f6873a0c98d631b7719bcc62d Mon Sep 17 00:00:00 2001 From: Jon Knight Date: Tue, 7 Nov 2017 17:27:56 +0000 Subject: [PATCH] Bug 13990: ILS-DI LookupPatron requires ID Type Patch provides a constrained set of borrower attributes to try in turn if the ID type is not specified. Also added "email" to the POD documented list of id types seeing as its quite a useful one for integration developers. Test plan: 1) without the patch applied, turn on ils-di interface in your admin sysprefs and then try accessing the URL: https://your-server/cgi-bin/koha/ilsdi.pl?service=LookupPatron&id=Mabel replacing "your-server" your Koha dev test domain name (localhost:8080 if you're using a kohadevbox VM) and "Mabel" with the first name of a patron (Mabel is in the test database already if you're using that). You should get back an error message in the XML. 2) Apply the patch and repeat. This time you should get an element in the XML with Mabel's patron ID in it. Signed-off-by: Mark Tompsett Signed-off-by: Nick Clemens Signed-off-by: Jonathan Druart --- C4/ILSDI/Services.pm | 21 ++++++++++++++++--- .../opac-tmpl/bootstrap/en/modules/ilsdi.tt | 5 ++++- opac/ilsdi.pl | 2 +- 3 files changed, 23 insertions(+), 5 deletions(-) diff --git a/C4/ILSDI/Services.pm b/C4/ILSDI/Services.pm index e7b3bcaccd..469e5d1d65 100644 --- a/C4/ILSDI/Services.pm +++ b/C4/ILSDI/Services.pm @@ -84,7 +84,6 @@ Parameters: =head3 id (Required) list of either biblionumbers or itemnumbers - =head3 id_type (Required) defines the type of record identifier being used in the request, @@ -299,16 +298,32 @@ Parameters: - id_type (Optional) the type of the identifier, possible values: - cardnumber - - firstname - userid + - email - borrowernumber + - firstname + - surname =cut sub LookupPatron { my ($cgi) = @_; - my $patrons = Koha::Patrons->search( { $cgi->param('id_type') => $cgi->param('id') } ); + my $patrons; + + if(!$cgi->param('id')) { + return { message => 'PatronNotFound' }; + } + + if($cgi->param('id_type')) { + $patrons = Koha::Patrons->search( { $cgi->param('id_type') => $cgi->param('id') } ); + } else { + foreach my $id_type ('cardnumber', 'userid', 'email', 'borrowernumber', + 'surname', 'firstname') { + $patrons = Koha::Patrons->search( { $id_type => $cgi->param('id') } ); + last if($patrons->count); + } + } unless ( $patrons->count ) { return { message => 'PatronNotFound' }; } diff --git a/koha-tmpl/opac-tmpl/bootstrap/en/modules/ilsdi.tt b/koha-tmpl/opac-tmpl/bootstrap/en/modules/ilsdi.tt index 993af71b65..f62f310272 100644 --- a/koha-tmpl/opac-tmpl/bootstrap/en/modules/ilsdi.tt +++ b/koha-tmpl/opac-tmpl/bootstrap/en/modules/ilsdi.tt @@ -459,8 +459,11 @@
the type of the identifier, possible values:
  • cardnumber
  • -
  • surname
  • +
  • userid
  • +
  • email
  • borrowernumber
  • +
  • surname
  • +
  • firstname
diff --git a/opac/ilsdi.pl b/opac/ilsdi.pl index 8320495d5d..b43ca7408c 100755 --- a/opac/ilsdi.pl +++ b/opac/ilsdi.pl @@ -47,7 +47,7 @@ my @services = ( # Level 1: Basic Discovery Interfaces # 'HarvestBibliographicRecords', # OAI-PMH # 'HarvestExpandedRecords', # OAI-PMH - 'GetAvailability', # FIXME Add bibbliographic level + 'GetAvailability', # FIXME Add bibliographic level # 'GoToBibliographicRequestPage' # I don't understant this one # Level 2: Elementary OPAC supplement -- 2.20.1