1 package OpenILS::Utils::PermitHold;
2 use strict; use warnings;
5 use OpenSRF::Utils::SettingsClient;
6 use OpenILS::Utils::ScriptRunner;
7 use OpenILS::Application::AppUtils;
8 use OpenILS::Application::Circ::ScriptBuilder;
9 use OpenSRF::Utils::Logger qw(:logger);
10 my $U = "OpenILS::Application::AppUtils";
12 my $script; # - the permit script
13 my $script_libs; # - extra script libs
15 # mental note: open-ils.storage.biblio.record_entry.ranged_tree
18 # params within a hash are: copy, patron,
19 # requestor, request_lib, title, title_descriptor
20 sub permit_copy_hold {
23 my $k = 'environment';
25 my $runner = OpenILS::Application::Circ::ScriptBuilder->build(
27 patron => $$params{patron},
28 copy => $$params{copy},
29 requestor => $$params{requestor},
30 titleDescriptor => $$params{title_descriptor},
32 requestLib => $$params{request_lib},
33 pickupLib => $$params{pickup_lib},
38 # my $runner = OpenILS::Utils::ScriptRunner->new;
40 # $runner->insert( "$k.patron", $$params{patron}, 1);
41 # $runner->insert( "$k.title", $$params{title}, 1);
42 # $runner->insert( "$k.copy", $$params{copy}, 1);
43 # $runner->insert( "$k.requestor", $$params{requestor}, 1);
44 # $runner->insert( "$k.requestLib", $$params{request_lib}, 1);
45 # $runner->insert( "$k.pickupLib", $$params{pickup_lib}, 1);
46 # $runner->insert( "$k.titleDescriptor", $$params{title_descriptor},1);
48 # # we get the script result from the event
49 # $runner->insert( "result.event", 'SUCCESS' );
50 # $runner->insert( "result.events", [] );
52 $logger->debug("Running permit_copy_hold on copy " . $$params{copy}->id);
54 load_scripts($runner);
55 $runner->run or throw OpenSRF::EX::ERROR ("Hold Copy Permit Script Died: $@");
56 my $evtname = $runner->retrieve('result.event');
59 # --------------------------------------------------------------
60 # Extract and uniquify the event list
61 # --------------------------------------------------------------
62 my $events = $runner->retrieve('result.events');
63 $events = [ split(/,/, $events) ];
64 $logger->debug("circ_permit_hold for user ".$params->{patron}->id." returned events: @$events");
67 push( @allevents, OpenILS::Event->new($_)) for @$events;
68 my %hash = map { ($_->{ilsevent} => $_) } @allevents;
69 @allevents = values %hash;
71 return \@allevents if $$params{show_event_list};
72 return 1 unless @allevents;
81 my $conf = OpenSRF::Utils::SettingsClient->new;
82 my @pfx = ( "apps", "open-ils.circ","app_settings" );
83 my $libs = $conf->config_value(@pfx, 'script_path');
84 $script = $conf->config_value(@pfx, 'scripts', 'circ_permit_hold');
85 $script_libs = (ref($libs)) ? $libs : [$libs];
88 $runner->add_path($_) for(@$script_libs);
89 $runner->load($script);