Galen Charlton
0187e38ad7
* New code *must* have an accurate copyright statement; it isn't 2000-2002 any more. * Enable warnings in new code, don't do Signed-off-by: Galen Charlton <gmcharlt@gmail.com>
104 lines
2.9 KiB
Perl
Executable file
104 lines
2.9 KiB
Perl
Executable file
#!/usr/bin/perl
|
|
|
|
# Script for testing progressbar, part 2 - json submit handler
|
|
# and Z39.50 lookups
|
|
|
|
# Koha library project www.koha-community.org
|
|
|
|
# Licensed under the GPL
|
|
|
|
# Copyright 2010 Catalyst IT, Ltd
|
|
#
|
|
# This file is part of Koha.
|
|
#
|
|
# Koha is free software; you can redistribute it and/or modify it under the
|
|
# terms of the GNU General Public License as published by the Free Software
|
|
# Foundation; either version 2 of the License, or (at your option) any later
|
|
# version.
|
|
#
|
|
# Koha is distributed in the hope that it will be useful, but WITHOUT ANY
|
|
# 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.,
|
|
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
|
|
|
use strict;
|
|
use warnings;
|
|
|
|
# standard or CPAN modules used
|
|
use CGI;
|
|
use CGI::Cookie;
|
|
|
|
# Koha modules used
|
|
use C4::Context;
|
|
use C4::Auth;
|
|
use C4::Output;
|
|
use C4::BackgroundJob;
|
|
|
|
my $input = new CGI;
|
|
|
|
my $submitted=$input->param('submitted');
|
|
my $runinbackground = $input->param('runinbackground');
|
|
my $jobID = $input->param('jobID');
|
|
my $completedJobID = $input->param('completedJobID');
|
|
|
|
my ($template, $loggedinuser, $cookie)
|
|
= get_template_and_user({template_name => "test/progressbar.tmpl",
|
|
query => $input,
|
|
type => "intranet",
|
|
debug => 1,
|
|
});
|
|
|
|
my %cookies = parse CGI::Cookie($cookie);
|
|
my $sessionID = $cookies{'CGISESSID'}->value;
|
|
if ($completedJobID) {
|
|
} elsif ($submitted) {
|
|
my $job = undef;
|
|
if ($runinbackground) {
|
|
my $job_size = 100;
|
|
$job = C4::BackgroundJob->new($sessionID, undef, $ENV{'SCRIPT_NAME'}, $job_size);
|
|
$jobID = $job->id();
|
|
|
|
# fork off
|
|
if (my $pid = fork) {
|
|
# parent
|
|
# return job ID as JSON
|
|
|
|
# prevent parent exiting from
|
|
# destroying the kid's database handle
|
|
# FIXME: according to DBI doc, this may not work for Oracle
|
|
|
|
my $reply = CGI->new("");
|
|
print $reply->header(-type => 'text/html');
|
|
print "{ jobID: '$jobID' }";
|
|
exit 0;
|
|
} elsif (defined $pid) {
|
|
# if we get here, we're a child that has detached
|
|
# itself from Apache
|
|
|
|
# close STDOUT to signal to Apache that
|
|
# we're now running in the background
|
|
close STDOUT;
|
|
close STDERR;
|
|
|
|
foreach (1..100) {
|
|
sleep 1;
|
|
$job->progress( $_ );
|
|
}
|
|
$job->finish();
|
|
} else {
|
|
# fork failed, so exit immediately
|
|
die "fork failed while attempting to run $ENV{'SCRIPT_NAME'} as a background job";
|
|
}
|
|
|
|
}
|
|
} else {
|
|
# initial form
|
|
die "We should not be here";
|
|
}
|
|
|
|
exit 0;
|
|
|
|
|