|
Lines 81-87
sub call {
Link Here
|
| 81 |
return unless C4::Context->config('enable_plugins'); |
81 |
return unless C4::Context->config('enable_plugins'); |
| 82 |
|
82 |
|
| 83 |
my @responses; |
83 |
my @responses; |
| 84 |
my @plugins = $class->get_enabled_plugins(); |
84 |
my @plugins = $class->get_enabled_plugins( { verbose => 0 } ); |
| 85 |
@plugins = grep { $_->can($method) } @plugins; |
85 |
@plugins = grep { $_->can($method) } @plugins; |
| 86 |
|
86 |
|
| 87 |
# TODO: Remove warn when after_hold_create is removed from the codebase |
87 |
# TODO: Remove warn when after_hold_create is removed from the codebase |
|
Lines 167-173
sub feature_enabled {
Link Here
|
| 167 |
my $key = "ENABLED_PLUGIN_FEATURE_" . $method; |
167 |
my $key = "ENABLED_PLUGIN_FEATURE_" . $method; |
| 168 |
my $feature = Koha::Cache::Memory::Lite->get_from_cache($key); |
168 |
my $feature = Koha::Cache::Memory::Lite->get_from_cache($key); |
| 169 |
unless ( defined($feature) ) { |
169 |
unless ( defined($feature) ) { |
| 170 |
my @plugins = $class->get_enabled_plugins(); |
170 |
my @plugins = $class->get_enabled_plugins( { verbose => 0 } ); |
| 171 |
my $enabled = any { $_->can($method) } @plugins; |
171 |
my $enabled = any { $_->can($method) } @plugins; |
| 172 |
Koha::Cache::Memory::Lite->set_in_cache( $key, $enabled ); |
172 |
Koha::Cache::Memory::Lite->set_in_cache( $key, $enabled ); |
| 173 |
} |
173 |
} |
|
Lines 182-193
method or metadata value.
Link Here
|
| 182 |
my @plugins = Koha::Plugins::GetPlugins({ |
182 |
my @plugins = Koha::Plugins::GetPlugins({ |
| 183 |
method => 'some_method', |
183 |
method => 'some_method', |
| 184 |
metadata => { some_key => 'some_value' }, |
184 |
metadata => { some_key => 'some_value' }, |
| 185 |
[ verbose => 1 ], |
185 |
[ all => 1, errors => 1, verbose => 1 ], |
| 186 |
}); |
186 |
}); |
| 187 |
|
187 |
|
| 188 |
The method and metadata parameters are optional. |
188 |
The method and metadata parameters are optional. |
| 189 |
If you pass multiple keys in the metadata hash, all keys must match. |
189 |
If you pass multiple keys in the metadata hash, all keys must match. |
| 190 |
|
190 |
|
|
|
191 |
If you pass errors (only used in plugins-home), we return two arrayrefs: |
| 192 |
|
| 193 |
( $good, $bad ) = Koha::Plugins::GetPlugins( { errors => 1 } ); |
| 194 |
|
| 195 |
If you pass verbose, you can enable or disable explicitly warnings |
| 196 |
from Module::Load::Conditional. Disabled by default to not flood |
| 197 |
the logs. |
| 198 |
|
| 191 |
=cut |
199 |
=cut |
| 192 |
|
200 |
|
| 193 |
sub GetPlugins { |
201 |
sub GetPlugins { |
|
Lines 195-201
sub GetPlugins {
Link Here
|
| 195 |
|
203 |
|
| 196 |
my $method = $params->{method}; |
204 |
my $method = $params->{method}; |
| 197 |
my $req_metadata = $params->{metadata} // {}; |
205 |
my $req_metadata = $params->{metadata} // {}; |
| 198 |
my $verbose = delete $params->{verbose} // $self->_verbose; |
206 |
my $errors = $params->{errors}; |
|
|
207 |
|
| 208 |
# By default dont warn here unless asked to do so. |
| 209 |
my $verbose = $params->{verbose} // 0; |
| 199 |
|
210 |
|
| 200 |
my $filter = ( $method ) ? { plugin_method => $method } : undef; |
211 |
my $filter = ( $method ) ? { plugin_method => $method } : undef; |
| 201 |
|
212 |
|
|
Lines 206-216
sub GetPlugins {
Link Here
|
| 206 |
} |
217 |
} |
| 207 |
)->_resultset->get_column('plugin_class'); |
218 |
)->_resultset->get_column('plugin_class'); |
| 208 |
|
219 |
|
| 209 |
my @plugins; |
|
|
| 210 |
|
220 |
|
| 211 |
# Loop through all plugins that implement at least a method |
221 |
# Loop through all plugins that implement at least a method |
|
|
222 |
my ( @plugins, @failing ); |
| 212 |
while ( my $plugin_class = $plugin_classes->next ) { |
223 |
while ( my $plugin_class = $plugin_classes->next ) { |
| 213 |
|
|
|
| 214 |
if ( can_load( modules => { $plugin_class => undef }, verbose => $verbose, nocache => 1 ) ) { |
224 |
if ( can_load( modules => { $plugin_class => undef }, verbose => $verbose, nocache => 1 ) ) { |
| 215 |
|
225 |
|
| 216 |
my $plugin; |
226 |
my $plugin; |
|
Lines 241-253
sub GetPlugins {
Link Here
|
| 241 |
and any { !$plugin_metadata->{$_} || $plugin_metadata->{$_} ne $req_metadata->{$_} } keys %$req_metadata; |
251 |
and any { !$plugin_metadata->{$_} || $plugin_metadata->{$_} ne $req_metadata->{$_} } keys %$req_metadata; |
| 242 |
|
252 |
|
| 243 |
push @plugins, $plugin; |
253 |
push @plugins, $plugin; |
| 244 |
} elsif ( defined($params->{errors}) && $params->{errors} ){ |
254 |
} elsif( $errors ) { |
| 245 |
push @plugins, { error => 'cannot_load', name => $plugin_class }; |
255 |
push @failing, { error => 1, name => $plugin_class }; |
| 246 |
} |
256 |
} |
| 247 |
|
|
|
| 248 |
} |
257 |
} |
| 249 |
|
258 |
|
| 250 |
return @plugins; |
259 |
return $errors ? ( \@plugins, \@failing ) : @plugins; |
| 251 |
} |
260 |
} |
| 252 |
|
261 |
|
| 253 |
=head2 InstallPlugins |
262 |
=head2 InstallPlugins |