X-Git-Url: http://git.freeside.biz/gitweb/?p=freeside.git;a=blobdiff_plain;f=FS%2FFS%2Fqueue.pm;h=8396fc9043c5e15a47f6255ad81bf4899b48ec60;hp=d35dc883fe6563787fa093aaa9a90204de92658e;hb=649ceeca76084d16d22013124bd7f80f053d75c4;hpb=0ebeec96313dd7edfca340f01f8fbbbac1f4aa1d diff --git a/FS/FS/queue.pm b/FS/FS/queue.pm index d35dc883f..8396fc904 100644 --- a/FS/FS/queue.pm +++ b/FS/FS/queue.pm @@ -1,7 +1,7 @@ package FS::queue; use strict; -use vars qw( @ISA @EXPORT_OK $conf $jobnums); +use vars qw( @ISA @EXPORT_OK $DEBUG $conf $jobnums); use Exporter; use FS::UID; use FS::Conf; @@ -14,6 +14,9 @@ use FS::cust_svc; @ISA = qw(FS::Record); @EXPORT_OK = qw( joblisting ); +$DEBUG = 0; +#$DEBUG = 1; + $FS::UID::callback{'FS::queue'} = sub { $conf = new FS::Conf; }; @@ -120,7 +123,10 @@ sub insert { } } - push @$jobnums, $self->jobnum if $jobnums; + if ( $jobnums ) { + warn "jobnums global is active: $jobnums\n" if $DEBUG; + push @$jobnums, $self->jobnum; + } $dbh->commit or die $dbh->errstr if $oldAutoCommit; @@ -207,7 +213,7 @@ sub check { $self->status('new') unless $self->status; $self->_date(time) unless $self->_date; - ''; #no error + $self->SUPER::check; } =item args @@ -239,6 +245,7 @@ sub cust_svc { =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 @@ -247,7 +254,6 @@ sub queue_depend { 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 @@ -268,6 +274,39 @@ sub depend_insert { $queue_depend->insert; } +=item queue_depended + +Returns the FS::queue_depend objects that associate other jobs with this job, +if any. (The jobs that are waiting for this job to complete before they can +run). + +=cut + +sub queue_depended { + my $self = shift; + qsearch('queue_depend', { 'depend_jobnum' => $self->jobnum } ); +} + +=item depended_delete + +Deletes the other queued jobs (FS::queue objects) that are waiting for this +job, if any. If there is an error, returns the error, otherwise returns false. + +=cut + +sub depended_delete { + my $self = shift; + my $error; + foreach my $job ( + map { qsearchs('queue', { 'jobnum' => $_->jobnum } ) } $self->queue_depended + ) { + $error = $job->depended_delete; + return $error if $error; + $error = $job->delete; + return $error if $error + } +} + =back =head1 SUBROUTINES @@ -313,9 +352,7 @@ END my $args; if ( $dangerous || $queue->job !~ /^FS::part_export::/ || !$noactions ) { - $args = encode_entities( join(' ', - map { length($_)<54 ? $_ : substr($_,0,32)."..." } $queue->args #1&g - ) ); + $args = encode_entities( join(' ', $queue->args) ); } else { $args = ''; } @@ -385,7 +422,7 @@ END =head1 VERSION -$Id: queue.pm,v 1.15 2002-07-02 06:48:59 ivan Exp $ +$Id: queue.pm,v 1.18 2004-05-04 18:44:48 ivan Exp $ =head1 BUGS