diff options
Diffstat (limited to 'httemplate/misc/queue.cgi')
| -rw-r--r-- | httemplate/misc/queue.cgi | 49 | 
1 files changed, 49 insertions, 0 deletions
| diff --git a/httemplate/misc/queue.cgi b/httemplate/misc/queue.cgi new file mode 100644 index 000000000..5dee29b88 --- /dev/null +++ b/httemplate/misc/queue.cgi @@ -0,0 +1,49 @@ +<% $cgi->redirect(popurl(2). "search/queue.html") %> +<%init> + +die "access denied" +  unless $FS::CurrentUser::CurrentUser->access_right('Job queue'); + +$cgi->param('action') =~ /^(new|del|(retry|remove) selected)$/ +  or die "Illegal action"; +my $action = $1; + +my $job; +if ( $action eq 'new' || $action eq 'del' ) { +  $cgi->param('jobnum') =~ /^(\d+)$/ or die "Illegal jobnum"; +  my $jobnum = $1; +  $job = qsearchs('queue', { 'jobnum' => $1 }) +    or die "unknown jobnum $jobnum - ". +           "it probably completed normally or was removed by another user"; +} + +if ( $action eq 'new' ) { +  my %hash = $job->hash; +  $hash{'status'} = 'new'; +  $hash{'statustext'} = ''; +  my $new = new FS::queue \%hash; +  my $error = $new->replace($job); +  die $error if $error; +} elsif ( $action eq 'del' ) { +  my $error = $job->delete; +  die $error if $error; +} elsif ( $action =~ /^(retry|remove) selected$/ ) { +  foreach my $jobnum ( +    map { /^jobnum(\d+)$/; $1; } grep /^jobnum\d+$/, $cgi->param +  ) { +    my $job = qsearchs('queue', { 'jobnum' => $jobnum }); +    if ( $action eq 'retry selected' && $job ) { #new +      my %hash = $job->hash; +      $hash{'status'} = 'new'; +      $hash{'statustext'} = ''; +      my $new = new FS::queue \%hash; +      my $error = $new->replace($job); +      die $error if $error; +    } elsif ( $action eq 'remove selected' && $job ) { #del +      my $error = $job->delete; +      die $error if $error; +    } +  } +} + +</%init> | 
