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
21 my( $class, $event, %params ) = @_;
23 _load_events() unless $events;
25 if( $event ne 'SUCCESS' ) {
26 $logger->info("Returning non-success event object: $event ");
29 my $e = $events->{$event};
31 ("No event defined with textcode: $event") unless defined $e;
33 my( $m, $f, $l ) = caller(0);
34 my( $mm, $ff, $ll ) = caller(1);
35 my( $mmm, $fff, $lll ) = caller(1);
44 my $lang = 'en-US'; # assume english for now
46 my $t = CORE::localtime();
51 stacktrace => "$f:$l $ff:$ll $fff:$lll",
52 desc => $descs->{$lang}->{$e},
58 my $settings_client = OpenSRF::Utils::SettingsClient->new();
59 my $eventsxml = $settings_client->config_value( "ils_events" );
62 throw OpenSRF::EX ("No ils_events file found in settings config");
65 $logger->info("Loading events xml file $eventsxml");
67 my $doc = XML::LibXML->new->parse_file($eventsxml);
69 my @nodes = $doc->documentElement->findnodes('//event');
70 for my $node (@nodes) {
71 $events->{$node->getAttribute('textcode')} =
72 $node->getAttribute('code');
76 my @desc = $doc->documentElement->findnodes('//desc');
78 my $lang = $d->getAttribute('lang');
79 my $code = $d->parentNode->getAttribute('code');
80 $descs->{$lang} = {} unless $descs->{$lang};
81 $descs->{$lang}->{$code} = $d->textContent;