From 96ef286867ca2e8b81e5c4f0e3e1bc180e84539c Mon Sep 17 00:00:00 2001 From: Dylan William Hardison Date: Tue, 2 May 2017 09:39:05 -0400 Subject: Revert "Bug 1352264 - Preload all templates" This reverts commit c82963a57cf97932870e11de8cf2a6205132b954. --- Bugzilla/Template/PreloadProvider.pm | 110 ----------------------------------- 1 file changed, 110 deletions(-) delete mode 100644 Bugzilla/Template/PreloadProvider.pm (limited to 'Bugzilla/Template') diff --git a/Bugzilla/Template/PreloadProvider.pm b/Bugzilla/Template/PreloadProvider.pm deleted file mode 100644 index 2588b1a79..000000000 --- a/Bugzilla/Template/PreloadProvider.pm +++ /dev/null @@ -1,110 +0,0 @@ -# This Source Code Form is subject to the terms of the Mozilla Public -# License, v. 2.0. If a copy of the MPL was not distributed with this -# file, You can obtain one at http://mozilla.org/MPL/2.0/. -# -# This Source Code Form is "Incompatible With Secondary Licenses", as -# defined by the Mozilla Public License, v. 2.0. - -# This exists to implement the template-before_process hook. -package Bugzilla::Template::PreloadProvider; - -use 5.10.1; -use strict; -use warnings; - -use base qw(Template::Provider); - -use File::Find (); -use Cwd (); -use File::Spec; -use Template::Constants qw( STATUS_ERROR ); -use Template::Document; -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 = { - 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"; - } - }; - 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); - } -} - -sub _bz_compile { - my ($self, $data) = @_; - - 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}; - - # 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); - } -} - -1; -- cgit v1.2.3-24-g4f1b