Action/trigger user barred/unbarred hooks
authorBill Erickson <berick@esilibrary.com>
Thu, 27 Dec 2012 15:58:01 +0000 (10:58 -0500)
committerBill Erickson <berick@esilibrary.com>
Fri, 11 Jan 2013 13:39:17 +0000 (08:39 -0500)
New active A/T hooks 'au.barred' and 'au.unbarred', plus PatronBarred
and PatronNotBarred validators, plus code to make the hooks dance.

Signed-off-by: Bill Erickson <berick@esilibrary.com>
Open-ILS/src/perlmods/lib/OpenILS/Application/Actor.pm
Open-ILS/src/perlmods/lib/OpenILS/Application/Trigger/Validator.pm
Open-ILS/src/sql/Pg/950.data.seed-values.sql
Open-ILS/src/sql/Pg/upgrade/XXXX.data.user_barred_hook.sql [new file with mode: 0644]

index 1e79cb5..dcbbce7 100644 (file)
@@ -373,6 +373,7 @@ sub update_patron {
     # if we want to represent the old patron.
 
     my $old_patron;
+    my $barred_hook = '';
 
        if($patron->isnew()) {
                ( $new_patron, $evt ) = _add_patron($session, _clone_patron($patron), $user_obj);
@@ -392,6 +393,9 @@ sub update_patron {
         if($U->is_true($old_patron->barred) != $U->is_true($new_patron->barred)) {
             $evt = $U->check_perms($user_obj->id, $patron->home_ou, $U->is_true($old_patron->barred) ? 'UNBAR_PATRON' : 'BAR_PATRON');
             return $evt if $evt;
+
+            $barred_hook = $U->is_true($new_patron->barred) ? 
+                'au.barred' : 'au.unbarred';
         }
     }
 
@@ -429,6 +433,9 @@ sub update_patron {
         $tses->request('open-ils.trigger.event.autocreate', 'au.create', $new_patron, $new_patron->home_ou);
        } else {
         $tses->request('open-ils.trigger.event.autocreate', 'au.update', $new_patron, $new_patron->home_ou);
+
+        $tses->request('open-ils.trigger.event.autocreate', $barred_hook, 
+            $new_patron, $new_patron->home_ou) if $barred_hook;
     }
 
        return flesh_user($new_patron->id(), new_editor(requestor => $user_obj, xact => 1));
index f3a701a..6b5dc3c 100644 (file)
@@ -151,4 +151,14 @@ sub HoldNotifyCheck {
     return 1;
 }
 
+# core_type au
+sub PatronBarred {
+    my ($self, $env) = @_;
+    return $U->is_true($env->{target}->barred);
+}
+
+sub PatronNotBarred {
+    return !PatronBarred(@_);
+}
+
 1;
index 9f2c2f2..256e06f 100644 (file)
@@ -11879,3 +11879,44 @@ INSERT INTO config.org_unit_setting_type
         ),
         'integer'
     );
+
+INSERT INTO action_trigger.hook (
+        key,
+        core_type,
+        description,
+        passive
+    ) VALUES (
+        'au.barred',
+        'au',
+        'A user was barred by staff',
+        FALSE
+    );
+
+INSERT INTO action_trigger.hook (
+        key,
+        core_type,
+        description,
+        passive
+    ) VALUES (
+        'au.unbarred',
+        'au',
+        'A user was un-barred by staff',
+        FALSE
+    );
+
+INSERT INTO action_trigger.validator (
+        module, 
+        description
+    ) VALUES (
+        'PatronBarred',
+        'Tests if a patron is currently marked as barred'
+    );
+
+INSERT INTO action_trigger.validator (
+        module, 
+        description
+    ) VALUES (
+        'PatronNotBarred',
+        'Tests if a patron is currently not marked as barred'
+    );
+
diff --git a/Open-ILS/src/sql/Pg/upgrade/XXXX.data.user_barred_hook.sql b/Open-ILS/src/sql/Pg/upgrade/XXXX.data.user_barred_hook.sql
new file mode 100644 (file)
index 0000000..20ea301
--- /dev/null
@@ -0,0 +1,44 @@
+
+BEGIN;
+
+INSERT INTO action_trigger.hook (
+        key,
+        core_type,
+        description,
+        passive
+    ) VALUES (
+        'au.barred',
+        'au',
+        'A user was barred by staff',
+        FALSE
+    );
+
+INSERT INTO action_trigger.hook (
+        key,
+        core_type,
+        description,
+        passive
+    ) VALUES (
+        'au.unbarred',
+        'au',
+        'A user was un-barred by staff',
+        FALSE
+    );
+
+INSERT INTO action_trigger.validator (
+        module, 
+        description
+    ) VALUES (
+        'PatronBarred',
+        'Tests if a patron is currently marked as barred'
+    );
+
+INSERT INTO action_trigger.validator (
+        module, 
+        description
+    ) VALUES (
+        'PatronNotBarred',
+        'Tests if a patron is currently not marked as barred'
+    );
+
+COMMIT;