]> git.evergreen-ils.org Git - Evergreen.git/blob - Open-ILS/src/perlmods/OpenILS/Application/Trigger/Reactor.pm
added copy price and org setting helpers. put helper functions into 'helpers' hash...
[Evergreen.git] / Open-ILS / src / perlmods / OpenILS / Application / Trigger / Reactor.pm
1 package OpenILS::Application::Trigger::Reactor;
2 use strict; use warnings;
3 use Template;
4 use DateTime;
5 use DateTime::Format::ISO8601;
6 use OpenSRF::Utils qw/:datetime/;
7 use OpenSRF::Utils::Logger qw(:logger);
8 use OpenILS::Application::AppUtils;
9 my $U = 'OpenILS::Application::AppUtils';
10
11 sub fourty_two { return 42 }
12 sub NOOP_True { return 1 }
13 sub NOOP_False { return 0 }
14
15
16
17
18 # helper functions inserted into the TT environment
19 my $_TT_helpers = {
20
21     # turns a date into something TT can understand
22     format_date => sub {
23         my $date = shift;
24         $date = DateTime::Format::ISO8601->new->parse_datetime(clense_ISO8601($date));
25         return sprintf(
26             "%0.2d:%0.2d:%0.2d %0.2d-%0.2d-%0.4d",
27             $date->hour,
28             $date->minute,
29             $date->second,
30             $date->day,
31             $date->month,
32             $date->year
33         );
34     },
35
36     # escapes a string for inclusion in an XML document.  escapes &, <, and > characters
37     escape_xml => sub {
38         my $str = shift;
39         $str =~ s/&/&amp;/sog;
40         $str =~ s/</&lt;/sog;
41         $str =~ s/>/&gt;/sog;
42         return $str;
43     },
44
45     # returns the calculated user locale
46     get_user_locale => sub { 
47         my $user_id = shift;
48         return $U->get_user_locale($user_id);
49     },
50
51     # returns the calculated copy price
52     get_copy_price => sub {
53         my $copy_id = shift;
54         return $U->get_copy_price($copy_id);
55     },
56
57     # returns the org unit setting value
58     get_org_setting => sub {
59         my($org_id, $setting) = @_;
60         return $U->ou_ancestor_setting_value($org_id, $setting);
61     }
62 };
63
64
65 # processes templates.  Returns template output on success, undef on error
66 sub run_TT {
67     my $self = shift;
68     my $env = shift;
69     return undef unless $env->{template};
70
71     my $output = '';
72     my $tt = Template->new;
73     $env->{helpers} = $_TT_helpers;
74
75     $tt->process(\$env->{template}, $env, \$output) or 
76         $logger->error("Error processing Trigger template: " . $tt->error);
77
78     return $output;
79 }
80
81
82 1;