$args ||= {};
- return $derived_class->process({job_id => $self->id, %$args});
+ return $derived_class->process( $args );
}
=head3 job_type
my $derived_class = $self->_derived_class;
- return $derived_class->additional_report({job_id => $self->id});
+ return $derived_class->additional_report;
}
=head3 cancel
use Modern::Perl;
use JSON qw( encode_json decode_json );
-use Koha::BackgroundJobs;
use Koha::DateUtils qw( dt_from_string );
use Koha::Holds;
use Koha::Patrons;
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;
}
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 @hold_ids = @{ $args->{hold_ids} };
};
$report->{total_success}++;
}
- $job->progress( ++$job_progress )->store;
+ $self->progress( ++$job_progress )->store;
}
- my $job_data = decode_json $job->data;
+ my $job_data = decode_json $self->data;
$job_data->{messages} = \@messages;
$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;
}
sub additional_report {
my ( $self, $args ) = @_;
- my $job = Koha::BackgroundJobs->find( $args->{job_id} );
- my $messages = $job->messages;
+ my $messages = $self->messages;
for my $m ( @$messages ) {
$m->{patron} = Koha::Patrons->find($m->{patron_id});
$m->{biblio} = Koha::Biblios->find($m->{biblio_id});
use Modern::Perl;
use JSON qw( encode_json decode_json );
-use Koha::BackgroundJobs;
use Koha::DateUtils qw( dt_from_string );
use C4::AuthoritiesMarc;
sub process {
my ( $self, $args ) = @_;
- my $job_type = $args->{job_type};
-
- 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 delete the same records
my $job_progress = 0;
- $job->started_on(dt_from_string)
+ $self->started_on(dt_from_string)
->progress($job_progress)
->status('started')
->store;
my $schema = Koha::Database->new->schema;
RECORD_IDS: for my $record_id ( sort { $a <=> $b } @record_ids ) {
- last if $job->get_from_storage->status eq 'cancelled';
+ last if $self->get_from_storage->status eq 'cancelled';
next unless $record_id;
$schema->storage->txn_commit;
}
- $job->progress( ++$job_progress )->store;
+ $self->progress( ++$job_progress )->store;
}
- my $job_data = decode_json $job->data;
+ my $job_data = decode_json $self->data;
$job_data->{messages} = \@messages;
$job_data->{report} = $report;
- $job->ended_on(dt_from_string)
+ $self->ended_on(dt_from_string)
->data(encode_json $job_data);
- $job->status('finished') if $job->status ne 'cancelled';
- $job->store;
+ $self->status('finished') if $self->status ne 'cancelled';
+ $self->store;
}
sub enqueue {
use Modern::Perl;
use JSON qw( encode_json decode_json );
-use Koha::BackgroundJobs;
use Koha::DateUtils qw( dt_from_string );
use C4::Biblio;
sub process {
my ( $self, $args ) = @_;
- my $job_type = $args->{job_type};
-
- 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 delete the same records
my $job_progress = 0;
- $job->started_on(dt_from_string)
+ $self->started_on(dt_from_string)
->progress($job_progress)
->status('started')
->store;
my $schema = Koha::Database->new->schema;
RECORD_IDS: for my $record_id ( sort { $a <=> $b } @record_ids ) {
- last if $job->get_from_storage->status eq 'cancelled';
+ last if $self->get_from_storage->status eq 'cancelled';
next unless $record_id;
biblionumber => $biblionumber,
};
$schema->storage->txn_rollback;
- $job->progress( ++$job_progress )->store;
+ $self->progress( ++$job_progress )->store;
next;
}
error => "$@",
};
$schema->storage->txn_rollback;
- $job->progress( ++$job_progress )->store;
+ $self->progress( ++$job_progress )->store;
next RECORD_IDS;
}
}
error => @{$deleted->messages}[0]->message,
};
$schema->storage->txn_rollback;
- $job->progress( ++$job_progress )->store;
+ $self->progress( ++$job_progress )->store;
next RECORD_IDS;
}
}
error => ($@ ? $@ : $error),
};
$schema->storage->txn_rollback;
- $job->progress( ++$job_progress )->store;
+ $self->progress( ++$job_progress )->store;
next;
}
};
$report->{total_success}++;
$schema->storage->txn_commit;
- $job->progress( ++$job_progress )->store;
+ $self->progress( ++$job_progress )->store;
}
- my $job_data = decode_json $job->data;
+ my $job_data = decode_json $self->data;
$job_data->{messages} = \@messages;
$job_data->{report} = $report;
- $job->ended_on(dt_from_string)
+ $self->ended_on(dt_from_string)
->data(encode_json $job_data);
- $job->status('finished') if $job->status ne 'cancelled';
- $job->store;
+ $self->status('finished') if $self->status ne 'cancelled';
+ $self->store;
}
=head3 enqueue
use List::MoreUtils qw( uniq );
use Try::Tiny;
-use Koha::BackgroundJobs;
use Koha::DateUtils qw( dt_from_string );
use Koha::Items;
sub process {
my ( $self, $args ) = @_;
- my $job_type = $args->{job_type};
-
- 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 delete 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 (@biblionumbers);
for my $record_id ( sort { $a <=> $b } @record_ids ) {
- last if $job->get_from_storage->status eq 'cancelled';
+ last if $self->get_from_storage->status eq 'cancelled';
my $item = Koha::Items->find($record_id) || next;
push @biblionumbers, $item->biblionumber;
$report->{total_success}++;
- $job->progress( ++$job_progress )->store;
+ $self->progress( ++$job_progress )->store;
}
# If there are no items left, delete the biblio
$report->{not_deleted_itemnumbers} = \@not_deleted_itemnumbers;
$report->{deleted_biblionumbers} = \@deleted_biblionumbers;
- my $job_data = decode_json $job->data;
+ my $job_data = decode_json $self->data;
$job_data->{messages} = \@messages;
$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
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;
}
my $job_progress = 0;
- $job->started_on(dt_from_string)
+ $self->started_on(dt_from_string)
->progress($job_progress)
->status('started')
->store;
};
$report->{total_success}++;
}
- $job->progress( ++$job_progress )->store;
+ $self->progress( ++$job_progress )->store;
}
- my $job_data = decode_json $job->data;
+ my $job_data = decode_json $self->data;
$job_data->{messages} = \@messages;
$job_data->{report} = $report;
- $job->ended_on(dt_from_string)
+ $self->ended_on(dt_from_string)
->data(encode_json $job_data);
- $job->status('finished') if $job->status ne 'cancelled';
- $job->store;
+ $self->status('finished') if $self->status ne 'cancelled';
+ $self->store;
}
use Modern::Perl;
use JSON qw( decode_json encode_json );
-use Koha::BackgroundJobs;
use Koha::DateUtils qw( dt_from_string );
use Koha::Virtualshelves;
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)
+ $self->started_on(dt_from_string)
->progress($job_progress)
->status('started')
->store;
my @messages;
RECORD_IDS: for my $biblionumber ( sort { $a <=> $b } @record_ids ) {
- last if $job->get_from_storage->status eq 'cancelled';
+ last if $self->get_from_storage->status eq 'cancelled';
next unless $biblionumber;
};
$report->{total_success}++;
}
- $job->progress( ++$job_progress )->store;
+ $self->progress( ++$job_progress )->store;
}
- my $job_data = decode_json $job->data;
+ my $job_data = decode_json $self->data;
$job_data->{messages} = \@messages;
$job_data->{report} = $report;
- $job->ended_on(dt_from_string)
+ $self->ended_on(dt_from_string)
->data(encode_json $job_data);
- $job->status('finished') if $job->status ne 'cancelled';
- $job->store;
+ $self->status('finished') if $self->status ne 'cancelled';
+ $self->store;
}
=head3 enqueue
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} };
$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
sub additional_report {
my ( $self, $args ) = @_;
- my $job = Koha::BackgroundJobs->find( $args->{job_id} );
-
- my $itemnumbers = $job->report->{modified_itemnumbers};
+ my $itemnumbers = $self->report->{modified_itemnumbers};
if ( scalar(@$itemnumbers) > C4::Context->preference('MaxItemsToDisplayForBatchMod') ) {
return { too_many_items_display => 1 };
} else {