1 package OpenILS::Application::Trigger::Reactor;
2 use strict; use warnings;
5 use DateTime::Format::ISO8601;
6 use OpenSRF::Utils qw/:datetime/;
7 use OpenSRF::Utils::Logger qw(:logger);
8 use OpenILS::Application::AppUtils;
9 use OpenILS::Utils::CStoreEditor qw/:funcs/;
10 my $U = 'OpenILS::Application::AppUtils';
12 sub fourty_two { return 42 }
13 sub NOOP_True { return 1 }
14 sub NOOP_False { return 0 }
19 # helper functions inserted into the TT environment
22 # turns a date into something TT can understand
25 $date = DateTime::Format::ISO8601->new->parse_datetime(clense_ISO8601($date));
27 "%0.2d:%0.2d:%0.2d %0.2d-%0.2d-%0.4d",
37 # escapes a string for inclusion in an XML document. escapes &, <, and > characters
40 $str =~ s/&/&/sog;
46 # returns the calculated user locale
47 get_user_locale => sub {
49 return $U->get_user_locale($user_id);
52 # returns the calculated copy price
53 get_copy_price => sub {
55 return $U->get_copy_price(new_editor(), $copy_id);
58 # returns the org unit setting value
59 get_org_setting => sub {
60 my($org_id, $setting) = @_;
61 return $U->ou_ancestor_setting_value($org_id, $setting);
64 # returns fines summary information for open transactions
65 get_user_fines_summary => sub {
69 'open-ils.storage.money.open_user_summary.search', $user_id);
74 # processes templates. Returns template output on success, undef on error
79 return undef unless $env->{template};
83 my $tt = Template->new;
84 $env->{helpers} = $_TT_helpers;
86 unless( $tt->process(\$env->{template}, $env, \$output) ) {
88 ($error = $tt->error) =~ s/\n/ /og;
89 $logger->error("Error processing Trigger template: $error");
92 if ( $error or (!$nostore && $output) ) {
93 my $t_o = Fieldmapper::action_trigger::event_output->new;
94 $t_o->data( ($error) ? $error : $output );
95 $t_o->is_error( ($error) ? 't' : 'f' );
97 $env->{EventProcessor}->editor->xact_begin;
98 $t_o = $env->{EventProcessor}->editor->create_action_trigger_event_output( $t_o );
100 my $state = (ref $$env{event} eq 'ARRAY') ? $$env{event}->[0]->state : $env->{event}->state;
101 my $key = ($error) ? 'error_output' : 'template_output';
102 $env->{EventProcessor}->update_state( $state, { $key => $t_o->id } );