Bug 9587 Follow up to fix the problem Katrin identified
[koha_fer] / C4 / BackgroundJob.pm
index 9f3acff..6830565 100644 (file)
@@ -14,19 +14,22 @@ package C4::BackgroundJob;
 # WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
 # A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
 #
 # 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 strict;
+#use warnings; FIXME - Bug 2505
 use C4::Context;
 use C4::Auth qw/get_session/;
 use Digest::MD5;
 
 use vars qw($VERSION);
 
 use C4::Context;
 use C4::Auth qw/get_session/;
 use Digest::MD5;
 
 use vars qw($VERSION);
 
-# set the version for version checking
-$VERSION = 3.00;
+BEGIN {
+       # set the version for version checking
+    $VERSION = 3.07.00.049;
+}
 
 =head1 NAME
 
 
 =head1 NAME
 
@@ -35,43 +38,31 @@ initiated from the web staff interface
 
 =head1 SYNOPSIS
 
 
 =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.
 
 
 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
 
 =head1 METHODS
 
-=cut
-
 =head2 new
 
 =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
 
 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
@@ -105,29 +96,13 @@ sub _serialize {
 
     my $prefix = "job_" . $self->{'jobID'};
     my $session = get_session($self->{'sessionID'});
 
     my $prefix = "job_" . $self->{'jobID'};
     my $session = get_session($self->{'sessionID'});
-    $session->param("$prefix.name", $self->{'name'});
-    $session->param("$prefix.invoker", $self->{'invoker'});
-    $session->param("$prefix.size", $self->{'size'});
-    $session->param("$prefix.progress", $self->{'size'});
-    $session->param("$prefix.status", $self->{'size'});
-    if (exists $self->{'results'}) {
-        my @keys = ();
-        foreach my $key (keys %{ $self->{'results'} }) {
-            $session->param("$prefix.results.$key", $self->{'results'}->{$key});
-            push @keys, $key;
-        }
-        $session->param("$prefix.results_keys", join("\t", @keys));
-    }
+    $session->param($prefix, $self);
     $session->flush();
 }
 
 =head2 id
 
     $session->flush();
 }
 
 =head2 id
 
-=over 4
-
-my $jobID = $job->id();
-
-=back
+ my $jobID = $job->id();
 
 Read-only accessor for job ID.
 
 
 Read-only accessor for job ID.
 
@@ -135,17 +110,13 @@ Read-only accessor for job ID.
 
 sub id {
     my $self = shift;
 
 sub id {
     my $self = shift;
-    return $self->{'id'};
+    return $self->{'jobID'};
 }
 
 =head2 name
 
 }
 
 =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.
 
 
 Read/write accessor for job name.
 
@@ -163,12 +134,8 @@ sub name {
 
 =head2 invoker
 
 
 =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.
 
 
 Read/write accessor for job invoker.
 
@@ -186,12 +153,8 @@ sub invoker {
 
 =head2 progress
 
 
 =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.
 
 
 Read/write accessor for job progress.
 
@@ -209,11 +172,7 @@ sub progress {
 
 =head2 status
 
 
 =head2 status
 
-=over 4
-
-my $status = $job->status();
-
-=back
+ my $status = $job->status();
 
 Read-only accessor for job status.
 
 
 Read-only accessor for job status.
 
@@ -226,12 +185,8 @@ sub status {
 
 =head2 size
 
 
 =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.
 
 
 Read/write accessor for job size.
 
@@ -249,11 +204,7 @@ sub size {
 
 =head2 finish
 
 
 =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
 
 Mark the job as finished, setting its status to 'completed'.
 C<$results_hashref> should be a reference to a hash containing
@@ -264,18 +215,14 @@ the results of the job.
 sub finish {
     my $self = shift;
     my $results_hashref = shift;
 sub finish {
     my $self = shift;
     my $results_hashref = shift;
-    my $self->{'status'} = 'completed';
-    my $self->{'results'} = $results_hashref;
+    $self->{'status'} = 'completed';
+    $self->{'results'} = $results_hashref;
     $self->_serialize();
 }
 
 =head2 results
 
     $self->_serialize();
 }
 
 =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'.
 
 Retrieve the results of the current job.  Returns undef 
 if the job status is not 'completed'.
@@ -284,17 +231,13 @@ if the job status is not 'completed'.
 
 sub results {
     my $self = shift;
 
 sub results {
     my $self = shift;
-    return undef unless $self->{'status'} eq 'completed';
+    return unless $self->{'status'} eq 'completed';
     return $self->{'results'};
 }
 
 =head2 fetch
 
     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 
 
 Retrieve a job that has been serialized to the database. 
 Returns C<undef> if the job does not exist in the current 
@@ -309,31 +252,20 @@ sub fetch {
 
     my $session = get_session($sessionID);
     my $prefix = "job_$jobID";
 
     my $session = get_session($sessionID);
     my $prefix = "job_$jobID";
-    unless (defined $session->param("$prefix.name")) {
-        return undef;
+    unless (defined $session->param($prefix)) {
+        return;
     }
     }
-    my $self = {};
-    
-    $self->{'name'} = $session->param("$prefix.name");
-    $self->{'status'} = $session->param("$prefix.status");
-    $self->{'invoker'} = $session->param("$prefix.invoker");
-    $self->{'size'} = $session->param("$prefix.size");
-    $self->{'progress'} = $session->param("$prefix.progress");
-    if (defined(my $keys = $session->param("$prefix.results_keys"))) {
-        my @keys = split /\t/, $keys;
-        $self->{'results'} = {};
-        foreach my $key (@keys) {
-            $self->{'results'}->{$key} = $session->param("$prefix.results.$key");
-        }
-    }
-
+    my $self = $session->param($prefix);
     bless $self, $class;
     return $self;
 }
 
     bless $self, $class;
     return $self;
 }
 
+1;
+__END__
+
 =head1 AUTHOR
 
 =head1 AUTHOR
 
-Koha Development Team <info@koha.org>
+Koha Development Team <http://koha-community.org/>
 
 Galen Charlton <galen.charlton@liblime.com>
 
 
 Galen Charlton <galen.charlton@liblime.com>