added batch hold reset call
authorerickson <erickson@dcc99617-32d9-48b4-a31d-7c20da2025e4>
Thu, 25 Jun 2009 03:02:03 +0000 (03:02 +0000)
committererickson <erickson@dcc99617-32d9-48b4-a31d-7c20da2025e4>
Thu, 25 Jun 2009 03:02:03 +0000 (03:02 +0000)
git-svn-id: svn://svn.open-ils.org/ILS/trunk@13463 dcc99617-32d9-48b4-a31d-7c20da2025e4

Open-ILS/src/perlmods/OpenILS/Application/Circ/Holds.pm

index 2e28e09..ebb3378 100644 (file)
@@ -948,13 +948,39 @@ sub reset_hold {
        my $reqr;
        my ($hold, $evt) = $U->fetch_hold($holdid);
        return $evt if $evt;
-       ($reqr, $evt) = $U->checksesperm($auth, 'UPDATE_HOLD'); # XXX stronger permission
+       ($reqr, $evt) = $U->checksesperm($auth, 'UPDATE_HOLD');
        return $evt if $evt;
        $evt = _reset_hold($self, $reqr, $hold);
        return $evt if $evt;
        return 1;
 }
 
+
+__PACKAGE__->register_method(
+       method  => 'reset_hold_batch',
+       api_name        => 'open-ils.circ.hold.reset.batch'
+);
+
+sub reset_hold_batch {
+    my($self, $conn, $auth, $hold_ids) = @_;
+
+    my $e = new_editor(authtoken => $auth);
+    return $e->event unless $e->checkauth;
+
+    for my $hold_id ($hold_ids) {
+
+        my $hold = $e->retrieve_action_hold_request(
+            [$hold_id, {flesh => 1, flesh_fields => {ahr => ['usr']}}]) 
+            or return $e->event;
+
+           next unless $e->allowed('UPDATE_HOLD', $hold->usr->home_ou);
+        _reset_hold($self, $e->requestor, $hold);
+    }
+
+    return 1;
+}
+
+
 sub _reset_hold {
        my ($self, $reqr, $hold) = @_;