]> git.evergreen-ils.org Git - Evergreen.git/blob - Open-ILS/src/perlmods/OpenILS/Application/Trigger/Reactor.pm
fixed TT helper func
[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
10 sub fourty_two { return 42 }
11 sub NOOP_True { return 1 }
12 sub NOOP_False { return 0 }
13
14
15 # processes templates.  Returns template output on success, undef on error
16 sub run_TT {
17     my $self = shift;
18     my $env = shift;
19     return '' unless $env->{template};
20
21     my $output = '';
22     my $tt = Template->new;
23
24     $env->{format_date} = \&format_date;
25     $env->{escape_xml} = \&escape_xml;
26     $env->{user_locale} = \&user_locale;
27
28     $tt->process(\$env->{template}, $env, \$output) or 
29         $logger->error("Error processing Trigger template: " . $tt->error);
30
31     return $output;
32 }
33
34 # turns a date into something TT can understand
35 sub format_date {
36     my $date = shift;
37     $date = DateTime::Format::ISO8601->new->parse_datetime(clense_ISO8601($date));
38     return sprintf(
39         "%0.2d:%0.2d:%0.2d %0.2d-%0.2d-%0.4d",
40         $date->hour,
41         $date->minute,
42         $date->second,
43         $date->day,
44         $date->month,
45         $date->year
46     );
47 }
48
49 sub escape_xml {
50     my $str = shift;
51     $str =~ s/&/&/sog;
52     $str =~ s/</&lt;/sog;
53     $str =~ s/>/&gt;/sog;
54     return $str;
55 }
56
57
58 sub user_locale { 
59     my $user_id = shift;
60     return OpenILS::Application::AppUtils->get_user_locale($user_id);
61 }
62
63 1;