Merge branch 'master' of ssh://git.freeside.biz/home/git/freeside
[freeside.git] / httemplate / misc / queue.cgi
1 <% $cgi->redirect(popurl(2). "search/queue.html") %>
2 <%init>
3
4 die "access denied"
5   unless $FS::CurrentUser::CurrentUser->access_right('Job queue');
6
7 $cgi->param('action') =~ /^(new|del|(retry|remove) selected)$/
8   or die "Illegal action";
9 my $action = $1;
10
11 my $job;
12 if ( $action eq 'new' || $action eq 'del' ) {
13   $cgi->param('jobnum') =~ /^(\d+)$/ or die "Illegal jobnum";
14   my $jobnum = $1;
15   $job = qsearchs('queue', { 'jobnum' => $1 })
16     or die "unknown jobnum $jobnum - ".
17            "it probably completed normally or was removed by another user";
18 }
19
20 if ( $action eq 'new' ) {
21   my %hash = $job->hash;
22   $hash{'status'} = 'new';
23   $hash{'statustext'} = '';
24   my $new = new FS::queue \%hash;
25   my $error = $new->replace($job);
26   die $error if $error;
27 } elsif ( $action eq 'del' ) {
28   my $error = $job->delete;
29   die $error if $error;
30 } elsif ( $action =~ /^(retry|remove) selected$/ ) {
31   foreach my $jobnum (
32     map { /^jobnum(\d+)$/; $1; } grep /^jobnum\d+$/, $cgi->param
33   ) {
34     my $job = qsearchs('queue', { 'jobnum' => $jobnum });
35     if ( $action eq 'retry selected' && $job ) { #new
36       my %hash = $job->hash;
37       $hash{'status'} = 'new';
38       $hash{'statustext'} = '';
39       my $new = new FS::queue \%hash;
40       my $error = $new->replace($job);
41       die $error if $error;
42     } elsif ( $action eq 'remove selected' && $job ) { #del
43       my $error = $job->delete;
44       die $error if $error;
45     }
46   }
47 }
48
49 </%init>