use C4::Biblio;
use C4::Items;
-use Koha::BackgroundJobs;
use Koha::DateUtils qw( dt_from_string );
use Koha::SearchEngine::Indexer;
use Koha::Items;
sub process {
my ( $self, $args ) = @_;
- my $job = Koha::BackgroundJobs->find( $args->{job_id} );
-
- if ( !exists $args->{job_id} || !$job || $job->status eq 'cancelled' ) {
+ if ( $self->status eq 'cancelled' ) {
return;
}
# Then we will start from scratch and so double process the same records
my $job_progress = 0;
- $job->started_on(dt_from_string)->progress($job_progress)
+ $self->started_on(dt_from_string)->progress($job_progress)
->status('started')->store;
my @record_ids = @{ $args->{record_ids} };
my $report = {
total_records => scalar @record_ids,
- modified_itemitemnumbers => [],
modified_fields => 0,
};
$exclude_from_local_holds_priority,
callback => sub {
my ($progress) = @_;
- $job->progress($progress)->store;
+ $self->progress($progress)->store;
},
}
);
if ( $_ =~ /Rollback failed/ ); # Rollback failed
};
- $job->discard_changes;
- my $job_data = decode_json encode_utf8 $job->data;
+ $self->discard_changes;
+ my $job_data = decode_json encode_utf8 $self->data;
$job_data->{report} = $report;
- $job->ended_on(dt_from_string)->data( encode_json $job_data);
- $job->status('finished') if $job->status ne 'cancelled';
- $job->store;
+ $self->ended_on(dt_from_string)->data( encode_json $job_data);
+ $self->status('finished') if $self->status ne 'cancelled';
+ $self->store;
}
=head3 enqueue
{
job_size => scalar @record_ids,
job_args => {%$args},
+ queue => 'long_tasks',
}
);
}
sub additional_report {
my ( $self, $args ) = @_;
- my $job = Koha::BackgroundJobs->find( $args->{job_id} );
-
- my $itemnumbers = $job->report->{modified_itemnumbers};
- my $items_table =
- Koha::UI::Table::Builder::Items->new( { itemnumbers => $itemnumbers } )
- ->build_table;
-
- return {
- items => $items_table->{items},
- item_header_loop => $items_table->{headers},
- };
+ my $itemnumbers = $self->report->{modified_itemnumbers};
+ if ( scalar(@$itemnumbers) > C4::Context->preference('MaxItemsToDisplayForBatchMod') ) {
+ return { too_many_items_display => 1 };
+ } else {
+ my $items_table =
+ Koha::UI::Table::Builder::Items->new( { itemnumbers => $itemnumbers } )
+ ->build_table;
+
+ return {
+ items => $items_table->{items},
+ item_header_loop => $items_table->{headers},
+ };
+ }
}
1;