@@ -, +, @@ - Check that the plugin has the method before calling it - Call the method in an eval block to prevent fatal errors --- Koha/Plugins.pm | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) --- a/Koha/Plugins.pm +++ a/Koha/Plugins.pm @@ -66,8 +66,14 @@ sub call { if (C4::Context->config('enable_plugins')) { my @plugins = $class->new({ enable_plugins => 1 })->GetPlugins({ method => $method }); my @responses; + @plugins = grep { $_->can($method) } @plugins; foreach my $plugin (@plugins) { - my $response = $plugin->$method(@args); + my $response = eval { $plugin->$method(@args) }; + if ($@) { + warn sprintf("Plugin error (%s): %s", $plugin->get_metadata->{name}, $@); + next; + } + push @responses, $response; } --