]> git.evergreen-ils.org Git - Evergreen.git/blob - Open-ILS/src/perlmods/OpenILS/Utils/PermitHold.pm
adding Identity method for finding the pkey
[Evergreen.git] / Open-ILS / src / perlmods / OpenILS / Utils / PermitHold.pm
1 package OpenILS::Utils::PermitHold;
2 use strict; use warnings;
3 use Data::Dumper;
4 use OpenSRF::Utils;
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";
11
12 my $script;                     # - the permit script
13 my $script_libs;        # - extra script libs
14
15 # mental note:  open-ils.storage.biblio.record_entry.ranged_tree
16
17
18 # params within a hash are: copy, patron, 
19 # requestor, request_lib, title, title_descriptor
20 sub permit_copy_hold {
21
22         my $params      = shift;
23         my $k                   = 'environment';
24
25         my $runner = OpenILS::Application::Circ::ScriptBuilder->build(
26                 {
27                         patron          => $$params{patron},
28                         copy                    => $$params{copy},
29                         requestor       => $$params{requestor},
30                         titleDescriptor => $$params{title_descriptor},
31                         _direct => {
32                                 requestLib      => $$params{request_lib},
33                                 pickupLib       => $$params{pickup_lib},
34                         }
35                 }
36         );
37
38 #       my $runner      = OpenILS::Utils::ScriptRunner->new;
39 #
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);
47
48 #       # we get the script result from the event 
49 #       $runner->insert( "result.event",        'SUCCESS' );
50 #       $runner->insert( "result.events", [] );
51
52         $logger->debug("Running permit_copy_hold on copy " . $$params{copy}->id);
53
54         load_scripts($runner);
55         $runner->run or throw OpenSRF::EX::ERROR ("Hold Copy Permit Script Died: $@");
56         my $evtname = $runner->retrieve('result.event');
57
58
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");
65
66         my @allevents;
67         push( @allevents, OpenILS::Event->new($_)) for @$events;
68         my %hash = map { ($_->{ilsevent} => $_) } @allevents;
69         @allevents = values %hash;
70
71         return \@allevents if $$params{show_event_list};
72         return 1 unless @allevents;
73         return 0;
74 }
75
76
77 sub load_scripts {
78         my $runner = shift;
79
80         if(!$script) {
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];
86         }
87
88         $runner->add_path($_) for(@$script_libs);
89         $runner->load($script);
90 }
91
92
93
94 23;