projects
/
freeside.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
respect part_svc labels in svc_hardware & svc_cable short service labels, RT#73405
[freeside.git]
/
FS
/
FS
/
queue.pm
diff --git
a/FS/FS/queue.pm
b/FS/FS/queue.pm
index
381e418
..
9bbaf34
100644
(file)
--- a/
FS/FS/queue.pm
+++ b/
FS/FS/queue.pm
@@
-3,6
+3,8
@@
package FS::queue;
use strict;
use vars qw( @ISA @EXPORT_OK $DEBUG $conf $jobnums);
use Exporter;
use strict;
use vars qw( @ISA @EXPORT_OK $DEBUG $conf $jobnums);
use Exporter;
+use MIME::Base64;
+use Storable qw( nfreeze thaw );
use FS::UID qw(myconnect);
use FS::Conf;
use FS::Record qw( qsearch qsearchs dbh );
use FS::UID qw(myconnect);
use FS::Conf;
use FS::Record qw( qsearch qsearchs dbh );
@@
-10,6
+12,7
@@
use FS::Record qw( qsearch qsearchs dbh );
use FS::queue_arg;
use FS::queue_depend;
use FS::cust_svc;
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 );
@ISA = qw(FS::Record);
@EXPORT_OK = qw( joblisting );
@@
-64,6
+67,20
@@
Job status (new, locked, or failed)
Freeform text status message
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
=item _date
UNIX timestamp
@@
-81,6
+98,10
@@
Optional link to customer (see L<FS::cust_main>).
Secure flag, 'Y' indicates that when using encryption, the job needs to be
run on a machine with the private key.
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
=cut
=back
@@
-135,6
+156,8
@@
sub insert {
$self->custnum( $args{'custnum'} ) if $args{'custnum'};
$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;
my $error = $self->SUPER::insert;
if ( $error ) {
$dbh->rollback if $oldAutoCommit;
@@
-142,9
+165,11
@@
sub insert {
}
foreach my $arg ( @args ) {
}
foreach my $arg ( @args ) {
+ my $freeze = ref($arg) ? 'Y' : '';
my $queue_arg = new FS::queue_arg ( {
'jobnum' => $self->jobnum,
my $queue_arg = new FS::queue_arg ( {
'jobnum' => $self->jobnum,
- 'arg' => $arg,
+ 'frozen' => $freeze,
+ 'arg' => $freeze ? encode_base64(nfreeze($arg)) : $arg,# always freeze?
} );
$error = $queue_arg->insert;
if ( $error ) {
} );
$error = $queue_arg->insert;
if ( $error ) {
@@
-188,6
+213,14
@@
sub delete {
my @del = qsearch( 'queue_arg', { 'jobnum' => $self->jobnum } );
push @del, qsearch( 'queue_depend', { 'depend_jobnum' => $self->jobnum } );
my @del = qsearch( 'queue_arg', { 'jobnum' => $self->jobnum } );
push @del, qsearch( 'queue_depend', { 'depend_jobnum' => $self->jobnum } );
+ 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";
+ }
+ }
+
my $error = $self->SUPER::delete;
if ( $error ) {
$dbh->rollback if $oldAutoCommit;
my $error = $self->SUPER::delete;
if ( $error ) {
$dbh->rollback if $oldAutoCommit;
@@
-203,6
+236,8
@@
sub delete {
}
$dbh->commit or die $dbh->errstr if $oldAutoCommit;
}
$dbh->commit or die $dbh->errstr if $oldAutoCommit;
+
+ unlink $reportname if $reportname;
'';
'';
@@
-231,9
+266,10
@@
sub check {
$self->ut_numbern('jobnum')
|| $self->ut_anything('job')
|| $self->ut_numbern('_date')
$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_anything('statustext')
|| $self->ut_numbern('svcnum')
+ || $self->ut_foreign_keyn('usernum', 'access_user', 'usernum')
;
return $error if $error;
;
return $error if $error;
@@
-254,11
+290,12
@@
Returns a list of the arguments associated with this job.
sub args {
my $self = shift;
sub args {
my $self = shift;
- map $_->arg, qsearch( 'queue_arg',
- { 'jobnum' => $self->jobnum },
- '',
- 'ORDER BY argnum'
- );
+ map { $_->frozen ? thaw(decode_base64($_->arg)) : $_->arg }
+ qsearch( 'queue_arg',
+ { 'jobnum' => $self->jobnum },
+ '',
+ 'ORDER BY argnum'
+ );
}
=item cust_svc
}
=item cust_svc
@@
-347,7
+384,7
@@
If there is an error, returns the error, otherwise returns false.
use vars qw($_update_statustext_dbh);
sub update_statustext {
my( $self, $statustext ) = @_;
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;
warn "updating statustext for $self to $statustext" if $DEBUG;
$_update_statustext_dbh ||= myconnect;
@@
-358,7
+395,7
@@
sub update_statustext {
$sth->execute($statustext, $self->jobnum) or return $sth->errstr;
$_update_statustext_dbh->commit or die $_update_statustext_dbh->errstr;
$sth->execute($statustext, $self->jobnum) or return $sth->errstr;
$_update_statustext_dbh->commit or die $_update_statustext_dbh->errstr;
- $self->s
tatustext($statustext);
+ $self->s
et('statustext', $statustext); #avoid rooturl expansion
'';
#my $new = new FS::queue { $self->hash };
'';
#my $new = new FS::queue { $self->hash };
@@
-369,6
+406,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
=back
=head1 SUBROUTINES