8 sub parse_beginning_ending {
11 $cgi->param('beginning') =~ /^([ 0-9\-\/]{0,10})$/;
12 my $beginning = str2time($1) || 0;
14 #need an option to turn off the + 86399 ???
15 $cgi->param('ending') =~ /^([ 0-9\-\/]{0,10})$/;
16 my $ending = ( $1 ? str2time($1) : 4294880896 ) + 86399;
18 ( $beginning, $ending );
23 package FS::UI::Web::JSRPC;
26 use vars qw(@ISA $DEBUG);
27 use Storable qw(nfreeze);
29 use JavaScript::RPC::Server::CGI;
31 use FS::Record qw(qsearchs);
34 @ISA = qw( JavaScript::RPC::Server::CGI );
52 warn "FS::UI::Web::start_job: ". join(', ', @_) if $DEBUG;
56 my( $field, $value ) = splice(@_, 0, 2);
57 unless ( exists( $param{$field} ) ) {
58 $param{$field} = $value;
59 } elsif ( ! ref($param{$field}) ) {
60 $param{$field} = [ $param{$field}, $value ];
62 push @{$param{$field}}, $value;
65 warn "FS::UI::Web::start_job\n".
67 if ( ref($param{$_}) ) {
68 " $_ => [ ". join(', ', @{$param{$_}}). " ]\n";
70 " $_ => $param{$_}\n";
75 #first get the CGI params shipped off to a job ASAP so an id can be returned
78 my $job = new FS::queue { 'job' => $self->{'job'} };
80 #too slow to insert all the cgi params as individual args..,?
81 #my $error = $queue->insert('_JOB', $cgi->Vars);
83 #warn 'froze string of size '. length(nfreeze(\%param)). " for job args\n"
86 my $error = $job->insert( '_JOB', encode_base64(nfreeze(\%param)) );
97 my( $self, $jobnum ) = @_; #$url ???
99 sleep 5; #could use something better...
102 if ( $jobnum =~ /^(\d+)$/ ) {
103 $job = qsearchs('queue', { 'jobnum' => $jobnum } );
105 die "FS::UI::Web::job_status: illegal jobnum $jobnum\n";
109 if ( $job && $job->status ne 'failed' ) {
110 @return = ( 'progress', $job->statustext );
111 } elsif ( !$job ) { #handle job gone case : job sucessful
112 # so close popup, redirect parent window...
113 @return = ( 'complete' );
115 @return = ( 'error', $job ? $job->statustext : $jobnum );