# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
# A PARTICULAR PURPOSE. See the GNU General Public License for more details.
#
-# You should have received a copy of the GNU General Public License along with
-# Koha; if not, write to the Free Software Foundation, Inc., 59 Temple Place,
-# Suite 330, Boston, MA 02111-1307 USA
+# You should have received a copy of the GNU General Public License along
+# with Koha; if not, write to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
use strict;
+#use warnings; FIXME - Bug 2505
use C4::Context;
use C4::Auth qw/get_session/;
use Digest::MD5;
BEGIN {
# set the version for version checking
- $VERSION = 3.00;
+ $VERSION = 3.07.00.049;
}
=head1 NAME
=head1 SYNOPSIS
-=over 4
-
-# start tracking a job
-my $job = C4::BackgroundJob->new($sessionID, $job_name, $job_invoker, $num_work_units);
-my $jobID = $job->id();
-$job->progress($work_units_processed);
-$job->finish($job_result_hashref);
-
-# get status and results of a job
-my $job = C4::BackgroundJob->fetch($sessionID, $jobID);
-my $max_work_units = $job->size();
-my $work_units_processed = $job->progress();
-my $job_status = $job->status();
-my $job_name = $job->name();
-my $job_invoker = $job->invoker();
-my $results_hashref = $job->results();
-
-=back
+ # start tracking a job
+ my $job = C4::BackgroundJob->new($sessionID, $job_name, $job_invoker, $num_work_units);
+ my $jobID = $job->id();
+ $job->progress($work_units_processed);
+ $job->finish($job_result_hashref);
+
+ # get status and results of a job
+ my $job = C4::BackgroundJob->fetch($sessionID, $jobID);
+ my $max_work_units = $job->size();
+ my $work_units_processed = $job->progress();
+ my $job_status = $job->status();
+ my $job_name = $job->name();
+ my $job_invoker = $job->invoker();
+ my $results_hashref = $job->results();
This module manages tracking the progress and results
of (potentially) long-running jobs initiated from
the staff user interface. Such jobs can include
batch MARC and patron record imports.
-=cut
-
=head1 METHODS
-=cut
-
=head2 new
-=over 4
-
-my $job = C4::BackgroundJob->new($sessionID, $job_name, $job_invoker, $num_work_units);
-
-=back
+ my $job = C4::BackgroundJob->new($sessionID, $job_name, $job_invoker, $num_work_units);
Create a new job object and set its status to 'running'. C<$num_work_units>
should be a number representing the size of the job; the units of the
$self->{'progress'} = 0;
$self->{'status'} = "running";
$self->{'jobID'} = Digest::MD5::md5_hex(Digest::MD5::md5_hex(time().{}.rand().{}.$$));
+ $self->{'extra_values'} = {};
bless $self, $class;
$self->_serialize();
=head2 id
-=over 4
-
-my $jobID = $job->id();
-
-=back
+ my $jobID = $job->id();
Read-only accessor for job ID.
=head2 name
-=over 4
-
-my $name = $job->name();
-$job->name($name);
-
-=back
+ my $name = $job->name();
+ $job->name($name);
Read/write accessor for job name.
=head2 invoker
-=over 4
-
-my $invoker = $job->invoker();
-$job->invoker($invoker);
-
-=back
+ my $invoker = $job->invoker();
+i $job->invoker($invoker);
Read/write accessor for job invoker.
=head2 progress
-=over 4
-
-my $progress = $job->progress();
-$job->progress($progress);
-
-=back
+ my $progress = $job->progress();
+ $job->progress($progress);
Read/write accessor for job progress.
=head2 status
-=over 4
-
-my $status = $job->status();
-
-=back
+ my $status = $job->status();
Read-only accessor for job status.
=head2 size
-=over 4
-
-my $size = $job->size();
-$job->size($size);
-
-=back
+ my $size = $job->size();
+ $job->size($size);
Read/write accessor for job size.
=head2 finish
-=over 4
-
-$job->finish($results_hashref);
-
-=back
+ $job->finish($results_hashref);
Mark the job as finished, setting its status to 'completed'.
C<$results_hashref> should be a reference to a hash containing
=head2 results
-=over 4
-
-my $results_hashref = $job->results();
-
-=back
+ my $results_hashref = $job->results();
Retrieve the results of the current job. Returns undef
if the job status is not 'completed'.
sub results {
my $self = shift;
- return undef unless $self->{'status'} eq 'completed';
+ return unless $self->{'status'} eq 'completed';
return $self->{'results'};
}
=head2 fetch
-=over 4
-
-my $job = C4::BackgroundJob->fetch($sessionID, $jobID);
-
-=back
+ my $job = C4::BackgroundJob->fetch($sessionID, $jobID);
Retrieve a job that has been serialized to the database.
Returns C<undef> if the job does not exist in the current
my $session = get_session($sessionID);
my $prefix = "job_$jobID";
unless (defined $session->param($prefix)) {
- return undef;
+ return;
}
my $self = $session->param($prefix);
bless $self, $class;
return $self;
}
+=head2 set
+
+=over 4
+
+=item $job->set($hashref);
+
+=back
+
+Set some variables into the hashref.
+These variables can be retrieved using the get method.
+
+=cut
+
+sub set {
+ my ($self, $hashref) = @_;
+ while ( my ($k, $v) = each %$hashref ) {
+ $self->{extra_values}->{$k} = $v;
+ }
+ $self->_serialize();
+ return;
+}
+
+=head2 get
+
+=over 4
+
+=item $value = $job->get($key);
+
+=back
+
+Get a variable which has been previously stored with the set method.
+
+=cut
+
+sub get {
+ my ($self, $key) = @_;
+ return $self->{extra_values}->{$key};
+}
+
1;
__END__
=head1 AUTHOR
-Koha Development Team <info@koha.org>
+Koha Development Team <http://koha-community.org/>
Galen Charlton <galen.charlton@liblime.com>