summaryrefslogtreecommitdiffstats
path: root/Bugzilla/Template/PreloadProvider.pm
diff options
context:
space:
mode:
Diffstat (limited to 'Bugzilla/Template/PreloadProvider.pm')
-rw-r--r--Bugzilla/Template/PreloadProvider.pm144
1 files changed, 72 insertions, 72 deletions
diff --git a/Bugzilla/Template/PreloadProvider.pm b/Bugzilla/Template/PreloadProvider.pm
index bddabfa2e..6d963f31f 100644
--- a/Bugzilla/Template/PreloadProvider.pm
+++ b/Bugzilla/Template/PreloadProvider.pm
@@ -15,7 +15,7 @@ use warnings;
use base qw(Template::Provider);
use File::Find ();
-use Cwd ();
+use Cwd ();
use File::Spec;
use Template::Constants qw( STATUS_ERROR );
use Template::Document;
@@ -24,88 +24,88 @@ use Template::Config;
use Bugzilla::Util qw(trick_taint);
sub _init {
- my $self = shift;
- $self->SUPER::_init(@_);
-
- my $path = $self->{INCLUDE_PATH};
- my $cache = $self->{_BZ_CACHE} = {};
- my $search = $self->{_BZ_SEARCH} = {};
-
- foreach my $template_dir (@$path) {
- $template_dir = Cwd::realpath($template_dir);
- my $wanted = sub {
- my ( $name, $dir ) = ($File::Find::name, $File::Find::dir);
- if ( $name =~ /\.tmpl$/ ) {
- my $key = $name;
- $key =~ s/^\Q$template_dir\///;
- unless ($search->{$key}) {
- $search->{$key} = $name;
- }
- trick_taint($name);
- my $data = {
- path => $name,
- name => $key,
- text => do {
- open my $fh, '<:utf8', $name or die "cannot open $name";
- local $/ = undef;
- scalar <$fh>; # $fh is closed it goes out of scope
- },
- time => (stat($name))[9],
- };
- trick_taint($data->{text}) if $data->{text};
- $cache->{$name} = $self->_bz_compile($data) or die "compile error: $name";
- }
+ my $self = shift;
+ $self->SUPER::_init(@_);
+
+ my $path = $self->{INCLUDE_PATH};
+ my $cache = $self->{_BZ_CACHE} = {};
+ my $search = $self->{_BZ_SEARCH} = {};
+
+ foreach my $template_dir (@$path) {
+ $template_dir = Cwd::realpath($template_dir);
+ my $wanted = sub {
+ my ($name, $dir) = ($File::Find::name, $File::Find::dir);
+ if ($name =~ /\.tmpl$/) {
+ my $key = $name;
+ $key =~ s/^\Q$template_dir\///;
+ unless ($search->{$key}) {
+ $search->{$key} = $name;
+ }
+ trick_taint($name);
+ my $data = {
+ path => $name,
+ name => $key,
+ text => do {
+ open my $fh, '<:utf8', $name or die "cannot open $name";
+ local $/ = undef;
+ scalar <$fh>; # $fh is closed it goes out of scope
+ },
+ time => (stat($name))[9],
};
- File::Find::find( { wanted => $wanted, no_chdir => 1 }, $template_dir );
- }
-
- return $self;
+ trick_taint($data->{text}) if $data->{text};
+ $cache->{$name} = $self->_bz_compile($data) or die "compile error: $name";
+ }
+ };
+ File::Find::find({wanted => $wanted, no_chdir => 1}, $template_dir);
+ }
+
+ return $self;
}
sub fetch {
- my ($self, $name, $prefix) = @_;
- my $file;
- if (File::Spec->file_name_is_absolute($name)) {
- $file = $name;
- }
- elsif ($name =~ m#^\./#) {
- $file = File::Spec->rel2abs($name);
- }
- else {
- $file = $self->{_BZ_SEARCH}{$name};
- }
-
- if (not $file) {
- return ("cannot find file - $name ($file)", STATUS_ERROR);
- }
-
- if ($self->{_BZ_CACHE}{$file}) {
- return ($self->{_BZ_CACHE}{$file}, undef);
- }
- else {
- return ("unknown file - $file", STATUS_ERROR);
- }
+ my ($self, $name, $prefix) = @_;
+ my $file;
+ if (File::Spec->file_name_is_absolute($name)) {
+ $file = $name;
+ }
+ elsif ($name =~ m#^\./#) {
+ $file = File::Spec->rel2abs($name);
+ }
+ else {
+ $file = $self->{_BZ_SEARCH}{$name};
+ }
+
+ if (not $file) {
+ return ("cannot find file - $name ($file)", STATUS_ERROR);
+ }
+
+ if ($self->{_BZ_CACHE}{$file}) {
+ return ($self->{_BZ_CACHE}{$file}, undef);
+ }
+ else {
+ return ("unknown file - $file", STATUS_ERROR);
+ }
}
sub _bz_compile {
- my ($self, $data) = @_;
+ my ($self, $data) = @_;
- my $parser = $self->{PARSER} ||= Template::Config->parser( $self->{PARAMS} )
- || return ( Template::Config->error(), STATUS_ERROR );
+ my $parser = $self->{PARSER} ||= Template::Config->parser($self->{PARAMS})
+ || return (Template::Config->error(), STATUS_ERROR);
- # discard the template text - we don't need it any more
- my $text = delete $data->{text};
+ # discard the template text - we don't need it any more
+ my $text = delete $data->{text};
- # call parser to compile template into Perl code
- if (my $parsedoc = $parser->parse($text, $data)) {
- $parsedoc->{METADATA} = {
- 'name' => $data->{name},
- 'modtime' => $data->{time},
- %{ $parsedoc->{METADATA} },
- };
+ # call parser to compile template into Perl code
+ if (my $parsedoc = $parser->parse($text, $data)) {
+ $parsedoc->{METADATA} = {
+ 'name' => $data->{name},
+ 'modtime' => $data->{time},
+ %{$parsedoc->{METADATA}},
+ };
- return Template::Document->new($parsedoc);
- }
+ return Template::Document->new($parsedoc);
+ }
}
1;