|
Lines 115-136
sub GetPlugins {
Link Here
|
| 115 |
|
115 |
|
| 116 |
my $method = $params->{method}; |
116 |
my $method = $params->{method}; |
| 117 |
my $req_metadata = $params->{metadata} // {}; |
117 |
my $req_metadata = $params->{metadata} // {}; |
| 118 |
|
118 |
my $all = $params->{all} // 0; |
| 119 |
my $filter = ( $method ) ? { plugin_method => $method } : undef; |
119 |
my $nocache = 0; |
| 120 |
|
120 |
|
| 121 |
my $plugin_classes = Koha::Plugins::Methods->search( |
121 |
my @plugin_classes; |
| 122 |
$filter, |
122 |
if ($all) { |
| 123 |
{ columns => 'plugin_class', |
123 |
@plugin_classes = $self->plugins(); |
| 124 |
distinct => 1 |
124 |
|
| 125 |
} |
125 |
# Do not use Module::Load::Conditional cache if we want all plugins |
| 126 |
)->_resultset->get_column('plugin_class'); |
126 |
# as $self->plugins can return uninstalled plugins |
|
|
127 |
$nocache = 1; |
| 128 |
} else { |
| 129 |
my $rs = Koha::Database->schema->resultset('PluginData'); |
| 130 |
$rs = $rs->search({ plugin_key => '__ENABLED__', plugin_value => 1 }); |
| 131 |
@plugin_classes = $rs->get_column('plugin_class')->all(); |
| 132 |
} |
| 127 |
|
133 |
|
| 128 |
my @plugins; |
134 |
my @plugins; |
| 129 |
|
135 |
foreach my $plugin_class (@plugin_classes) { |
| 130 |
# Loop through all plugins that implement at least a method |
136 |
if ( can_load( modules => { $plugin_class => undef }, nocache => $nocache ) ) { |
| 131 |
while ( my $plugin_class = $plugin_classes->next ) { |
137 |
next unless $plugin_class->isa('Koha::Plugins::Base'); |
| 132 |
|
138 |
next if $method && !$plugin_class->can($method); |
| 133 |
if ( can_load( modules => { $plugin_class => undef }, nocache => 1 ) ) { |
|
|
| 134 |
|
139 |
|
| 135 |
my $plugin; |
140 |
my $plugin; |
| 136 |
my $failed_instantiation; |
141 |
my $failed_instantiation; |
|
Lines 149-163
sub GetPlugins {
Link Here
|
| 149 |
|
154 |
|
| 150 |
next if $failed_instantiation; |
155 |
next if $failed_instantiation; |
| 151 |
|
156 |
|
| 152 |
next unless $plugin->is_enabled or |
|
|
| 153 |
defined($params->{all}) && $params->{all}; |
| 154 |
|
| 155 |
# filter the plugin out by metadata |
157 |
# filter the plugin out by metadata |
| 156 |
my $plugin_metadata = $plugin->get_metadata; |
158 |
if (%$req_metadata) { |
| 157 |
next |
159 |
my $plugin_metadata = $plugin->get_metadata; |
| 158 |
if $plugin_metadata |
160 |
next |
| 159 |
and %$req_metadata |
161 |
if $plugin_metadata |
| 160 |
and any { !$plugin_metadata->{$_} || $plugin_metadata->{$_} ne $req_metadata->{$_} } keys %$req_metadata; |
162 |
and any { !$plugin_metadata->{$_} || $plugin_metadata->{$_} ne $req_metadata->{$_} } keys %$req_metadata; |
|
|
163 |
} |
| 161 |
|
164 |
|
| 162 |
push @plugins, $plugin; |
165 |
push @plugins, $plugin; |
| 163 |
} elsif ( defined($params->{errors}) && $params->{errors} ){ |
166 |
} elsif ( defined($params->{errors}) && $params->{errors} ){ |
| 164 |
- |
|
|