Lines 21-27
use Modern::Perl;
Link Here
|
21 |
|
21 |
|
22 |
use Array::Utils qw( array_minus ); |
22 |
use Array::Utils qw( array_minus ); |
23 |
use Class::Inspector; |
23 |
use Class::Inspector; |
24 |
use List::MoreUtils qw( any ); |
24 |
use List::MoreUtils qw( any none ); |
25 |
use Module::Load::Conditional qw( can_load ); |
25 |
use Module::Load::Conditional qw( can_load ); |
26 |
use Module::Load; |
26 |
use Module::Load; |
27 |
use Module::Pluggable search_path => ['Koha::Plugin'], except => qr/::Edifact(|::Line|::Message|::Order|::Segment|::Transport)$/; |
27 |
use Module::Pluggable search_path => ['Koha::Plugin'], except => qr/::Edifact(|::Line|::Message|::Order|::Segment|::Transport)$/; |
Lines 32-37
use C4::Context;
Link Here
|
32 |
use C4::Output; |
32 |
use C4::Output; |
33 |
|
33 |
|
34 |
use Koha::Cache::Memory::Lite; |
34 |
use Koha::Cache::Memory::Lite; |
|
|
35 |
use Koha::Exceptions; |
35 |
use Koha::Exceptions::Plugin; |
36 |
use Koha::Exceptions::Plugin; |
36 |
use Koha::Plugins::Datas; |
37 |
use Koha::Plugins::Datas; |
37 |
use Koha::Plugins::Methods; |
38 |
use Koha::Plugins::Methods; |
Lines 296-341
sub InstallPlugins {
Link Here
|
296 |
my $verbose = $params->{verbose} // $self->_verbose; |
297 |
my $verbose = $params->{verbose} // $self->_verbose; |
297 |
|
298 |
|
298 |
my @plugin_classes = $self->plugins(); |
299 |
my @plugin_classes = $self->plugins(); |
299 |
my ( @plugins, @classes_filters ); |
300 |
my @plugins; |
300 |
|
301 |
|
301 |
my $has_filters = defined( $params->{include} ) || defined( $params->{exclude} ); |
302 |
Koha::Exceptions::BadParameter->throw("Only one of 'include' and 'exclude' can be passed") |
|
|
303 |
if ( $params->{exclude} && $params->{include} ); |
302 |
|
304 |
|
303 |
# Warn user if the specified classes doesn't exist and return nothing |
305 |
if ( defined( $params->{include} ) || defined( $params->{exclude} ) ) { |
304 |
if ($has_filters) { |
306 |
my @classes_filters = |
305 |
@classes_filters = defined( $params->{include} ) ? @{ $params->{include} } : @{ $params->{exclude} }; |
307 |
defined( $params->{include} ) |
|
|
308 |
? @{ $params->{include} } |
309 |
: @{ $params->{exclude} }; |
306 |
|
310 |
|
307 |
foreach my $classes_filter (@classes_filters) { |
311 |
# Warn user if the specified classes doesn't exist and return nothing |
308 |
my $is_found = 0; |
312 |
foreach my $class_name (@classes_filters) { |
309 |
|
313 |
unless ( any { $class_name eq $_ } @plugin_classes ) { |
310 |
foreach my $plugin_class (@plugin_classes) { |
314 |
warn "$class_name has not been found, try a different name"; |
311 |
$is_found = 1 |
|
|
312 |
if $plugin_class =~ ":$classes_filter\$|^$classes_filter\$" |
313 |
|| ( $classes_filter =~ "^::" && $plugin_class =~ "$classes_filter\$" ); |
314 |
} |
315 |
unless ($is_found) { |
316 |
warn "$classes_filter have not been found, try a different name"; |
317 |
return; |
315 |
return; |
318 |
} |
316 |
} |
319 |
} |
317 |
} |
|
|
318 |
|
319 |
# filter things |
320 |
if ( $params->{include} ) { |
321 |
@plugin_classes = grep { |
322 |
my $plugin_class = $_; |
323 |
any { $plugin_class eq $_ } @classes_filters |
324 |
} @plugin_classes; |
325 |
} else { # exclude |
326 |
@plugin_classes = grep { |
327 |
my $plugin_class = $_; |
328 |
none { $plugin_class eq $_ } @classes_filters |
329 |
} @plugin_classes; |
330 |
} |
320 |
} |
331 |
} |
321 |
|
332 |
|
322 |
foreach my $plugin_class (@plugin_classes) { |
333 |
foreach my $plugin_class (@plugin_classes) { |
323 |
if ( can_load( modules => { $plugin_class => undef }, verbose => $verbose, nocache => 1 ) ) { |
334 |
if ( can_load( modules => { $plugin_class => undef }, verbose => $verbose, nocache => 1 ) ) { |
324 |
next unless $plugin_class->isa('Koha::Plugins::Base'); |
335 |
next unless $plugin_class->isa('Koha::Plugins::Base'); |
325 |
|
336 |
|
326 |
# Apply the filters |
|
|
327 |
if ($has_filters) { |
328 |
my $is_found = 0; |
329 |
foreach my $classes_filter (@classes_filters) { |
330 |
$is_found = 1 |
331 |
if $plugin_class =~ ":$classes_filter\$|^$classes_filter\$" |
332 |
|| ( $classes_filter =~ "^::" && $plugin_class =~ "$classes_filter\$" ); |
333 |
} |
334 |
next |
335 |
if ( defined( $params->{include} ) && !$is_found ) |
336 |
|| ( defined( $params->{exclude} ) && $is_found ); |
337 |
} |
338 |
|
339 |
my $plugin; |
337 |
my $plugin; |
340 |
my $failed_instantiation; |
338 |
my $failed_instantiation; |
341 |
|
339 |
|
342 |
- |
|
|