1 package OpenILS::Event;
2 use strict; use warnings;
4 use OpenSRF::Utils::SettingsClient;
5 use OpenSRF::Utils::Logger;
6 my $logger = "OpenSRF::Utils::Logger";
9 # Creates a new Event object.
10 # The first param is the event name
11 # Following the first param is an optional hash of params:
12 # perm => the name of the permission error for permimssion errors
13 # permloc => the location of the permission error for permission errors
14 # payload => the payload to be returned on successfull events
19 my( $class, $event, %params ) = @_;
21 my $perm = $params{perm};
22 my $permloc = $params{permloc};
23 my $payload = $params{payload};
25 _load_events() unless $events;
27 if( $event ne 'SUCCESS' ) {
28 my $p = (defined $perm) ? $perm : "(none)";
29 my $pl = (defined $permloc) ? $permloc : "(none)";
30 my $pa = (defined $payload) ? $payload : "(none)";
31 $logger->warn("Returning event object $event " .
32 "{ ilsperm => $p, ilspermloc => $pl, payload => $pa }");
35 my $e = $events->{$event};
37 ("No event defined with textcode: $event") unless defined $e;
39 my $h = { ilsevent => $e };
40 $h->{paylod} = $payload if defined $payload;
41 $h->{ilsperm} = $perm if defined $perm;
42 $h->{ilspermloc} = $permloc if defined $permloc;
43 $h->{textcode} = $event;
49 my $settings_client = OpenSRF::Utils::SettingsClient->new();
50 my $eventsxml = $settings_client->config_value( "ils_events" );
51 # my $eventsxml = "/openils/conf/ils_events.xml";
54 throw OpenSRF::EX ("No ils_events file found in settings config");
57 $logger->info("Loading events xml file $eventsxml");
59 my $doc = XML::LibXML->new->parse_file($eventsxml);
61 my @nodes = $doc->documentElement->findnodes('//event');
62 for my $node (@nodes) {
63 $events->{$node->getAttribute('textcode')} =
64 $node->getAttribute('code');