From: erickson Date: Thu, 25 Jun 2009 03:02:03 +0000 (+0000) Subject: added batch hold reset call X-Git-Tag: sprint4-merge-nov22~9764 X-Git-Url: https://old-git.evergreen-ils.org/?a=commitdiff_plain;h=0a6ca7bcb98ba6201f88385980c7896257cd8dc1;p=working%2FEvergreen.git added batch hold reset call git-svn-id: svn://svn.open-ils.org/ILS/trunk@13463 dcc99617-32d9-48b4-a31d-7c20da2025e4 --- diff --git a/Open-ILS/src/perlmods/OpenILS/Application/Circ/Holds.pm b/Open-ILS/src/perlmods/OpenILS/Application/Circ/Holds.pm index 2e28e09053..ebb33783ee 100644 --- a/Open-ILS/src/perlmods/OpenILS/Application/Circ/Holds.pm +++ b/Open-ILS/src/perlmods/OpenILS/Application/Circ/Holds.pm @@ -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) = @_;