=cut
-use strict;
-use warnings;
+use Modern::Perl;
+
use Module::Load::Conditional qw(can_load);
use Module::Pluggable::Object;
=cut
sub new {
+
my $class = shift;
my $param = shift;
- my $schema = $param->{schema} || 'MARC';
+ my $schema = $param->{schema} || 'MARC';
my $options = $param->{options} || '';
+
+ my $req_filters = ( ref($param->{filters}) ne 'ARRAY' )
+ ? [ $param->{filters} ]
+ : $param->{filters};
my @filters = ( );
- foreach my $filter ($param->{filters}) {
- next unless $filter;
- my $filter_module = $filter =~ m/:/ ? $filter : "Koha::Filter::${schema}::${filter}";
+ foreach my $filter_name (@{ $req_filters }) {
+ next unless $filter_name;
+ # Fully qualify the module name.
+ my $filter_module = $filter_name =~ m/:/ ? $filter_name : "Koha::Filter::${schema}::${filter_name}";
if (can_load( modules => { $filter_module => undef } )) {
- my $object = $filter_module->new();
- $filter_module->initialize($param);
- push @filters, $object;
+ my $filter = $filter_module->new();
+ $filter->initialize($param);
+ push @filters, $filter;
}
}
return unless defined $record;
- my $newrecord = $record;
-
foreach my $filterobj (@{$self->filters}) {
next unless $filterobj;
- $newrecord = $filterobj->filter($newrecord);
+ $filterobj->filter($record);
}
- return $newrecord;
+ return $record;
}
sub DESTROY {