Make inactive cards/patrons "not exist" via SIP2
authorThomas Berezansky <tsbere@mvlc.org>
Mon, 18 Jul 2011 00:28:14 +0000 (20:28 -0400)
committerBill Erickson <berick@esilibrary.com>
Tue, 19 Jul 2011 20:34:55 +0000 (16:34 -0400)
And make sure if we do get a deleted patron for some reason they are ignored too.

Signed-off-by: Thomas Berezansky <tsbere@mvlc.org>
Signed-off-by: Bill Erickson <berick@esilibrary.com>
Open-ILS/src/perlmods/lib/OpenILS/SIP/Patron.pm

index c3dbb21..17389fa 100644 (file)
@@ -85,7 +85,7 @@ sub new {
 
         my $card = $e->search_actor_card([{barcode => $patron_id}, $usr_flesh])->[0];
 
-        if(!$card) {
+        if(!$card or !$U->is_true($card->active)) {
             syslog("LOG_WARNING", "No such patron barcode: $patron_id");
             return undef;
         }
@@ -96,11 +96,16 @@ sub new {
            $user = $e->retrieve_actor_user([$patron_id, $usr_flesh]);
     }
 
-    if(!$user) {
+    if(!$user or $U->is_true($user->deleted)) {
         syslog("LOG_WARNING", "OILS: Unable to find patron %s => %s", $key, $patron_id);
         return undef;
     }
 
+    if(!$U->is_true($user->active)) {
+        syslog("LOG_WARNING", "OILS: Patron is inactive %s => %s", $key, $patron_id);
+        return undef;
+    }
+
     # now grab the user's penalties
 
     $self->flesh_user_penalties($user, $e) unless $args{slim_user};