|
Lines 25-30
use Try::Tiny qw( catch try );
Link Here
|
| 25 |
use C4::Context; |
25 |
use C4::Context; |
| 26 |
use Koha::DateUtils qw( dt_from_string ); |
26 |
use Koha::DateUtils qw( dt_from_string ); |
| 27 |
use Koha::Exceptions; |
27 |
use Koha::Exceptions; |
|
|
28 |
use Koha::Plugins; |
| 28 |
|
29 |
|
| 29 |
use base qw( Koha::Object ); |
30 |
use base qw( Koha::Object ); |
| 30 |
|
31 |
|
|
Lines 245-253
sub _derived_class {
Link Here
|
| 245 |
|
246 |
|
| 246 |
=head3 type_to_class_mapping |
247 |
=head3 type_to_class_mapping |
| 247 |
|
248 |
|
|
|
249 |
my $mapping = Koha::BackgrounJob->new->type_to_class_mapping; |
| 250 |
|
| 251 |
Returns the available types to class mappings. |
| 252 |
|
| 248 |
=cut |
253 |
=cut |
| 249 |
|
254 |
|
| 250 |
sub type_to_class_mapping { |
255 |
sub type_to_class_mapping { |
|
|
256 |
my ($self) = @_; |
| 257 |
|
| 258 |
my $plugins_mapping = $self->plugin_type_to_class; |
| 259 |
|
| 260 |
return ($plugins_mapping) |
| 261 |
? { %{ $self->core_type_to_class }, %{ $self->plugin_type_to_class } } |
| 262 |
: $self->core_type_to_class; |
| 263 |
} |
| 264 |
|
| 265 |
=head3 core_type_to_class |
| 266 |
|
| 267 |
my $mappings = Koha::BackgrounJob->new->core_type_to_class |
| 268 |
|
| 269 |
Returns the core background jobs types to class mappings. |
| 270 |
|
| 271 |
=cut |
| 272 |
|
| 273 |
sub core_type_to_class { |
| 251 |
return { |
274 |
return { |
| 252 |
batch_authority_record_deletion => 'Koha::BackgroundJob::BatchDeleteAuthority', |
275 |
batch_authority_record_deletion => 'Koha::BackgroundJob::BatchDeleteAuthority', |
| 253 |
batch_authority_record_modification => 'Koha::BackgroundJob::BatchUpdateAuthority', |
276 |
batch_authority_record_modification => 'Koha::BackgroundJob::BatchUpdateAuthority', |
|
Lines 259-264
sub type_to_class_mapping {
Link Here
|
| 259 |
}; |
282 |
}; |
| 260 |
} |
283 |
} |
| 261 |
|
284 |
|
|
|
285 |
=head3 plugin_type_to_class |
| 286 |
|
| 287 |
my $mappings = Koha::BackgroundJob->new->plugin_type_to_class |
| 288 |
|
| 289 |
Returns the plugin-refined background jobs types to class mappings. |
| 290 |
|
| 291 |
=cut |
| 292 |
|
| 293 |
sub plugin_type_to_class { |
| 294 |
my ($self) = @_; |
| 295 |
|
| 296 |
unless ( exists $self->{_plugin_mapping} ) { |
| 297 |
my @plugins = Koha::Plugins->new()->GetPlugins( { method => 'background_tasks', } ); |
| 298 |
|
| 299 |
foreach my $plugin (@plugins) { |
| 300 |
|
| 301 |
my $tasks = $plugin->background_tasks; |
| 302 |
my $metadata = $plugin->get_metadata; |
| 303 |
|
| 304 |
unless ( $metadata->{namespace} ) { |
| 305 |
Koha::Logger->get->warn( |
| 306 |
"The plugin includes the 'background_tasks' method, but doesn't provide the required 'namespace' method (" |
| 307 |
. $plugin->{class} |
| 308 |
. ')' ); |
| 309 |
next; |
| 310 |
} |
| 311 |
|
| 312 |
my $namespace = $metadata->{namespace}; |
| 313 |
|
| 314 |
foreach my $type ( keys %{$tasks} ) { |
| 315 |
my $class = $tasks->{$type}; |
| 316 |
|
| 317 |
# skip if conditions not met |
| 318 |
next unless $type and $class; |
| 319 |
|
| 320 |
my $key = "plugin_$namespace" . "_$type"; |
| 321 |
|
| 322 |
$self->{_plugin_mapping}->{$key} = $tasks->{$type}; |
| 323 |
} |
| 324 |
} |
| 325 |
} |
| 326 |
|
| 327 |
return $self->{_plugin_mapping}; |
| 328 |
} |
| 329 |
|
| 262 |
=head3 _type |
330 |
=head3 _type |
| 263 |
|
331 |
|
| 264 |
=cut |
332 |
=cut |
| 265 |
- |
|
|