summaryrefslogtreecommitdiffstats
path: root/Bugzilla/Template/Plugin/Hook.pm
diff options
context:
space:
mode:
Diffstat (limited to 'Bugzilla/Template/Plugin/Hook.pm')
-rw-r--r--Bugzilla/Template/Plugin/Hook.pm109
1 files changed, 54 insertions, 55 deletions
diff --git a/Bugzilla/Template/Plugin/Hook.pm b/Bugzilla/Template/Plugin/Hook.pm
index a2b76a80f..e20ca1016 100644
--- a/Bugzilla/Template/Plugin/Hook.pm
+++ b/Bugzilla/Template/Plugin/Hook.pm
@@ -21,74 +21,73 @@ use Bugzilla::Error;
use File::Spec;
sub new {
- my ($class, $context) = @_;
- return bless { _CONTEXT => $context }, $class;
+ my ($class, $context) = @_;
+ return bless {_CONTEXT => $context}, $class;
}
sub _context { return $_[0]->{_CONTEXT} }
sub process {
- my ($self, $hook_name, $template) = @_;
- my $context = $self->_context();
- $template ||= $context->stash->{component}->{name};
-
- # sanity check:
- if (!$template =~ /[\w\.\/\-_\\]+/) {
- ThrowCodeError('template_invalid', { name => $template });
- }
-
- my (undef, $path, $filename) = File::Spec->splitpath($template);
- $path ||= '';
- $filename =~ m/(.+)\.(.+)\.tmpl$/;
- my $template_name = $1;
- my $type = $2;
-
- # Hooks are named like this:
- my $extension_template = "$path$template_name-$hook_name.$type.tmpl";
-
- # Get the hooks out of the cache if they exist. Otherwise, read them
- # from the disk.
- my $cache = Bugzilla->request_cache->{template_plugin_hook_cache} ||= {};
- my $lang = $context->{bz_language} || '';
- $cache->{"${lang}__$extension_template"}
- ||= $self->_get_hooks($extension_template);
-
- # process() accepts an arrayref of templates, so we just pass the whole
- # arrayref.
- $context->{bz_in_hook} = 1; # See Bugzilla::Template::Context
- return $context->process($cache->{"${lang}__$extension_template"});
+ my ($self, $hook_name, $template) = @_;
+ my $context = $self->_context();
+ $template ||= $context->stash->{component}->{name};
+
+ # sanity check:
+ if (!$template =~ /[\w\.\/\-_\\]+/) {
+ ThrowCodeError('template_invalid', {name => $template});
+ }
+
+ my (undef, $path, $filename) = File::Spec->splitpath($template);
+ $path ||= '';
+ $filename =~ m/(.+)\.(.+)\.tmpl$/;
+ my $template_name = $1;
+ my $type = $2;
+
+ # Hooks are named like this:
+ my $extension_template = "$path$template_name-$hook_name.$type.tmpl";
+
+ # Get the hooks out of the cache if they exist. Otherwise, read them
+ # from the disk.
+ my $cache = Bugzilla->request_cache->{template_plugin_hook_cache} ||= {};
+ my $lang = $context->{bz_language} || '';
+ $cache->{"${lang}__$extension_template"}
+ ||= $self->_get_hooks($extension_template);
+
+ # process() accepts an arrayref of templates, so we just pass the whole
+ # arrayref.
+ $context->{bz_in_hook} = 1; # See Bugzilla::Template::Context
+ return $context->process($cache->{"${lang}__$extension_template"});
}
sub _get_hooks {
- my ($self, $extension_template) = @_;
-
- my $template_sets = $self->_template_hook_include_path();
- my @hooks;
- foreach my $dir_set (@$template_sets) {
- foreach my $template_dir (@$dir_set) {
- my $file = "$template_dir/hook/$extension_template";
- if (-e $file) {
- my $template = $self->_context->template($file);
- push(@hooks, $template);
- # Don't run the hook for more than one language.
- last;
- }
- }
+ my ($self, $extension_template) = @_;
+
+ my $template_sets = $self->_template_hook_include_path();
+ my @hooks;
+ foreach my $dir_set (@$template_sets) {
+ foreach my $template_dir (@$dir_set) {
+ my $file = "$template_dir/hook/$extension_template";
+ if (-e $file) {
+ my $template = $self->_context->template($file);
+ push(@hooks, $template);
+
+ # Don't run the hook for more than one language.
+ last;
+ }
}
+ }
- return \@hooks;
+ return \@hooks;
}
sub _template_hook_include_path {
- my $self = shift;
- my $cache = Bugzilla->request_cache;
- my $language = $self->_context->{bz_language} || '';
- my $cache_key = "template_plugin_hook_include_path_$language";
- $cache->{$cache_key} ||= template_include_path({
- language => $language,
- hook => 1,
- });
- return $cache->{$cache_key};
+ my $self = shift;
+ my $cache = Bugzilla->request_cache;
+ my $language = $self->_context->{bz_language} || '';
+ my $cache_key = "template_plugin_hook_include_path_$language";
+ $cache->{$cache_key}
+ ||= template_include_path({language => $language, hook => 1,});
+ return $cache->{$cache_key};
}
1;