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);
66 # processes templates. Returns template output on success, undef on error
70 return undef unless $env->{template};
73 my $tt = Template->new;
74 $env->{helpers} = $_TT_helpers;
76 $tt->process(\$env->{template}, $env, \$output) or
77 $logger->error("Error processing Trigger template: " . $tt->error);
79 if (!$nostore && $output) {
80 my $t_o = Fieldmapper::action_trigger::template_output->new;
81 $t_o->data( $output );
83 $env->{EventProcessor}->editor->xact_begin;
84 $t_o = $env->{EventProcessor}->editor->create_action_trigger_template_output( $t_o );
85 $env->{EventProcessor}->update_state( $env->{event}->state, { template_output => $t_o->id } );