Bug 13990: ILS-DI LookupPatron requires ID Type
authorJon Knight <J.P.Knight@lboro.ac.uk>
Tue, 7 Nov 2017 17:27:56 +0000 (17:27 +0000)
committerJonathan Druart <jonathan.druart@bugs.koha-community.org>
Tue, 30 Jan 2018 17:18:21 +0000 (14:18 -0300)
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 <id> element in
   the XML with Mabel's patron ID in it.

Signed-off-by: Mark Tompsett <mtompset@hotmail.com>
Signed-off-by: Nick Clemens <nick@bywatersolutions.com>
Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org>
C4/ILSDI/Services.pm
koha-tmpl/opac-tmpl/bootstrap/en/modules/ilsdi.tt
opac/ilsdi.pl

index e7b3bca..469e5d1 100644 (file)
@@ -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' };
     }
index 993af71..f62f310 100644 (file)
                                     <dd>the type of the identifier, possible values:
                                         <ul>
                                             <li>cardnumber</li>
-                                            <li>surname</li>
+                                            <li>userid</li>
+                                            <li>email</li>
                                             <li>borrowernumber</li>
+                                            <li>surname</li>
+                                            <li>firstname</li>
                                         </ul>
                                     </dd>
                                 </dl>
index 8320495..b43ca74 100755 (executable)
@@ -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