X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;f=FS%2FFS%2Fqueue.pm;h=f7f09485d3fa1800c585cb07a94760c6b2003cac;hb=2dddd8e1742bf2e8ebe9f2d3e560bc78bba95cff;hp=1f2abe3ae4ef3e2b640ca04ce8c1fd0634f64731;hpb=9f64bfef652922b7b546a12290805710acbeed08;p=freeside.git diff --git a/FS/FS/queue.pm b/FS/FS/queue.pm index 1f2abe3ae..f7f09485d 100644 --- a/FS/FS/queue.pm +++ b/FS/FS/queue.pm @@ -1,7 +1,8 @@ package FS::queue; +use base qw(FS::Record); use strict; -use vars qw( @ISA @EXPORT_OK $DEBUG $conf $jobnums); +use vars qw( @EXPORT_OK $DEBUG $conf $jobnums); use Exporter; use MIME::Base64; use Storable qw( nfreeze thaw ); @@ -11,9 +12,8 @@ use FS::Record qw( qsearch qsearchs dbh ); #use FS::queue; use FS::queue_arg; use FS::queue_depend; -use FS::cust_svc; +use FS::CGI qw(rooturl); -@ISA = qw(FS::Record); @EXPORT_OK = qw( joblisting ); $DEBUG = 0; @@ -66,6 +66,20 @@ Job status (new, locked, or failed) Freeform text status message +=cut + +sub statustext { + my $self = shift; + if ( defined ( $_[0] ) ) { + $self->SUPER::statustext(@_); + } else { + my $value = $self->SUPER::statustext(); + my $rooturl = rooturl(); + $value =~ s/%%%ROOTURL%%%/$rooturl/g; + $value; + } +} + =item _date UNIX timestamp @@ -83,6 +97,10 @@ Optional link to customer (see L). Secure flag, 'Y' indicates that when using encryption, the job needs to be run on a machine with the private key. +=item usernum + +For access_user that created the job + =cut =back @@ -137,6 +155,8 @@ sub insert { $self->custnum( $args{'custnum'} ) if $args{'custnum'}; + $self->usernum($FS::CurrentUser::CurrentUser->usernum) unless $self->usernum; + my $error = $self->SUPER::insert; if ( $error ) { $dbh->rollback if $oldAutoCommit; @@ -178,35 +198,18 @@ deleted as well sub delete { my $self = shift; - local $SIG{HUP} = 'IGNORE'; - local $SIG{INT} = 'IGNORE'; - local $SIG{QUIT} = 'IGNORE'; - local $SIG{TERM} = 'IGNORE'; - local $SIG{TSTP} = 'IGNORE'; - local $SIG{PIPE} = 'IGNORE'; - - my $oldAutoCommit = $FS::UID::AutoCommit; - local $FS::UID::AutoCommit = 0; - my $dbh = dbh; - - my @del = qsearch( 'queue_arg', { 'jobnum' => $self->jobnum } ); - push @del, qsearch( 'queue_depend', { 'depend_jobnum' => $self->jobnum } ); - - my $error = $self->SUPER::delete; - if ( $error ) { - $dbh->rollback if $oldAutoCommit; - return $error; - } - - foreach my $del ( @del ) { - $error = $del->delete; - if ( $error ) { - $dbh->rollback if $oldAutoCommit; - return $error; + my $reportname = ''; + if ( $self->status =~/^done/ ) { + my $dropstring = rooturl(). '/misc/queued_report\?report='; + if ($self->statustext =~ /.*$dropstring([.\w]+)\>/) { + $reportname = "$FS::UID::cache_dir/cache.$FS::UID::datasrc/report.$1"; } } - $dbh->commit or die $dbh->errstr if $oldAutoCommit; + my $error = $self->SUPER::delete; + return $error if $error; + + unlink $reportname if $reportname; ''; @@ -235,9 +238,10 @@ sub check { $self->ut_numbern('jobnum') || $self->ut_anything('job') || $self->ut_numbern('_date') - || $self->ut_enum('status',['', qw( new locked failed )]) + || $self->ut_enum('status',['', qw( new locked failed done )]) || $self->ut_anything('statustext') || $self->ut_numbern('svcnum') + || $self->ut_foreign_keyn('usernum', 'access_user', 'usernum') ; return $error if $error; @@ -270,25 +274,11 @@ sub args { Returns the FS::cust_svc object associated with this job, if any. -=cut - -sub cust_svc { - my $self = shift; - qsearchs('cust_svc', { 'svcnum' => $self->svcnum } ); -} - =item queue_depend Returns the FS::queue_depend objects associated with this job, if any. (Dependancies that must complete before this job can be run). -=cut - -sub queue_depend { - my $self = shift; - qsearch('queue_depend', { 'jobnum' => $self->jobnum } ); -} - =item depend_insert OTHER_JOBNUM Inserts a dependancy for this job - it will not be run until the other job @@ -352,7 +342,7 @@ If there is an error, returns the error, otherwise returns false. use vars qw($_update_statustext_dbh); sub update_statustext { my( $self, $statustext ) = @_; - return '' if $statustext eq $self->statustext; + return '' if $statustext eq $self->get('statustext'); #avoid rooturl expansion warn "updating statustext for $self to $statustext" if $DEBUG; $_update_statustext_dbh ||= myconnect; @@ -363,7 +353,7 @@ sub update_statustext { $sth->execute($statustext, $self->jobnum) or return $sth->errstr; $_update_statustext_dbh->commit or die $_update_statustext_dbh->errstr; - $self->statustext($statustext); + $self->set('statustext', $statustext); #avoid rooturl expansion ''; #my $new = new FS::queue { $self->hash }; @@ -374,6 +364,20 @@ sub update_statustext { #''; } +=item access_user + +Returns FS::access_user object (if any) associated with this user. + +Returns nothing if not found. + +=cut + +sub access_user { + my $self = shift; + my $usernum = $self->usernum || return (); + return qsearchs('access_user',{ 'usernum' => $usernum }) || (); +} + =back =head1 SUBROUTINES