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'], |
27 |
use Module::Pluggable search_path => ['Koha::Plugin'], |
Lines 33-38
use C4::Context;
Link Here
|
33 |
use C4::Output; |
33 |
use C4::Output; |
34 |
|
34 |
|
35 |
use Koha::Cache::Memory::Lite; |
35 |
use Koha::Cache::Memory::Lite; |
|
|
36 |
use Koha::Exceptions; |
36 |
use Koha::Exceptions::Plugin; |
37 |
use Koha::Exceptions::Plugin; |
37 |
use Koha::Plugins::Datas; |
38 |
use Koha::Plugins::Datas; |
38 |
use Koha::Plugins::Methods; |
39 |
use Koha::Plugins::Methods; |
Lines 303-348
sub InstallPlugins {
Link Here
|
303 |
my $verbose = $params->{verbose} // $self->_verbose; |
304 |
my $verbose = $params->{verbose} // $self->_verbose; |
304 |
|
305 |
|
305 |
my @plugin_classes = $self->plugins(); |
306 |
my @plugin_classes = $self->plugins(); |
306 |
my ( @plugins, @classes_filters ); |
307 |
my @plugins; |
307 |
|
308 |
|
308 |
my $has_filters = defined( $params->{include} ) || defined( $params->{exclude} ); |
309 |
Koha::Exceptions::BadParameter->throw("Only one of 'include' and 'exclude' can be passed") |
|
|
310 |
if ( $params->{exclude} && $params->{include} ); |
309 |
|
311 |
|
310 |
# Warn user if the specified classes doesn't exist and return nothing |
312 |
if ( defined( $params->{include} ) || defined( $params->{exclude} ) ) { |
311 |
if ($has_filters) { |
313 |
my @classes_filters = |
312 |
@classes_filters = defined( $params->{include} ) ? @{ $params->{include} } : @{ $params->{exclude} }; |
314 |
defined( $params->{include} ) |
|
|
315 |
? @{ $params->{include} } |
316 |
: @{ $params->{exclude} }; |
313 |
|
317 |
|
314 |
foreach my $classes_filter (@classes_filters) { |
318 |
# Warn user if the specified classes doesn't exist and return nothing |
315 |
my $is_found = 0; |
319 |
foreach my $class_name (@classes_filters) { |
316 |
|
320 |
unless ( any { $class_name eq $_ } @plugin_classes ) { |
317 |
foreach my $plugin_class (@plugin_classes) { |
321 |
warn "$class_name has not been found, try a different name"; |
318 |
$is_found = 1 |
|
|
319 |
if $plugin_class =~ ":$classes_filter\$|^$classes_filter\$" |
320 |
|| ( $classes_filter =~ "^::" && $plugin_class =~ "$classes_filter\$" ); |
321 |
} |
322 |
unless ($is_found) { |
323 |
warn "$classes_filter have not been found, try a different name"; |
324 |
return; |
322 |
return; |
325 |
} |
323 |
} |
326 |
} |
324 |
} |
|
|
325 |
|
326 |
# filter things |
327 |
if ( $params->{include} ) { |
328 |
@plugin_classes = grep { |
329 |
my $plugin_class = $_; |
330 |
any { $plugin_class eq $_ } @classes_filters |
331 |
} @plugin_classes; |
332 |
} else { # exclude |
333 |
@plugin_classes = grep { |
334 |
my $plugin_class = $_; |
335 |
none { $plugin_class eq $_ } @classes_filters |
336 |
} @plugin_classes; |
337 |
} |
327 |
} |
338 |
} |
328 |
|
339 |
|
329 |
foreach my $plugin_class (@plugin_classes) { |
340 |
foreach my $plugin_class (@plugin_classes) { |
330 |
if ( can_load( modules => { $plugin_class => undef }, verbose => $verbose, nocache => 1 ) ) { |
341 |
if ( can_load( modules => { $plugin_class => undef }, verbose => $verbose, nocache => 1 ) ) { |
331 |
next unless $plugin_class->isa('Koha::Plugins::Base'); |
342 |
next unless $plugin_class->isa('Koha::Plugins::Base'); |
332 |
|
343 |
|
333 |
# Apply the filters |
|
|
334 |
if ($has_filters) { |
335 |
my $is_found = 0; |
336 |
foreach my $classes_filter (@classes_filters) { |
337 |
$is_found = 1 |
338 |
if $plugin_class =~ ":$classes_filter\$|^$classes_filter\$" |
339 |
|| ( $classes_filter =~ "^::" && $plugin_class =~ "$classes_filter\$" ); |
340 |
} |
341 |
next |
342 |
if ( defined( $params->{include} ) && !$is_found ) |
343 |
|| ( defined( $params->{exclude} ) && $is_found ); |
344 |
} |
345 |
|
346 |
my $plugin; |
344 |
my $plugin; |
347 |
my $failed_instantiation; |
345 |
my $failed_instantiation; |
348 |
|
346 |
|
349 |
- |
|
|