aboutsummaryrefslogtreecommitdiffstats
path: root/editworkflow.cgi
blob: 7e51798fc26e8f4c9563de088956e7c6721d07c4 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
PHPBB3-9737
Diffstat (limited to 'phpBB/mcp.php')
0 files changed, 0 insertions, 0 deletions
26' href='#n126'>126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151
#!/usr/bin/perl -wT
# -*- Mode: perl; indent-tabs-mode: nil -*-
#
# The contents of this file are subject to the Mozilla Public
# License Version 1.1 (the "License"); you may not use this file
# except in compliance with the License. You may obtain a copy of
# the License at http://www.mozilla.org/MPL/
#
# Software distributed under the License is distributed on an "AS
# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
# implied. See the License for the specific language governing
# rights and limitations under the License.
#
# The Original Code is the Bugzilla Bug Tracking System.
#
# The Initial Developer of the Original Code is Frédéric Buclin.
# Portions created by Frédéric Buclin are Copyright (C) 2007
# Frédéric Buclin. All Rights Reserved.
#
# Contributor(s): Frédéric Buclin <LpSolit@gmail.com>

use strict;

use lib qw(. lib);

use Bugzilla;
use Bugzilla::Constants;
use Bugzilla::Error;
use Bugzilla::Token;
use Bugzilla::Status;

my $cgi = Bugzilla->cgi;
my $dbh = Bugzilla->dbh;
my $user = Bugzilla->login(LOGIN_REQUIRED);

print $cgi->header();

$user->in_group('admin')
  || ThrowUserError('auth_failure', {group  => 'admin',
                                     action => 'modify',
                                     object => 'workflow'});

my $action = $cgi->param('action') || 'edit';
my $token = $cgi->param('token');

sub get_workflow {
    my $dbh = Bugzilla->dbh;
    my $workflow = $dbh->selectall_arrayref('SELECT old_status, new_status, require_comment
                                             FROM status_workflow');
    my %workflow;
    foreach my $row (@$workflow) {
        my ($old, $new, $type) = @$row;
        $workflow{$old || 0}{$new} = $type;
    }
    return \%workflow;
}

sub load_template {
    my ($filename, $message) = @_;
    my $template = Bugzilla->template;
    my $vars = {};

    $vars->{'statuses'} = [Bugzilla::Status->get_all];
    $vars->{'workflow'} = get_workflow();
    $vars->{'token'} = issue_session_token("workflow_$filename");
    $vars->{'message'} = $message;

    $template->process("admin/workflow/$filename.html.tmpl", $vars)
      || ThrowTemplateError($template->error());
    exit;
}

if ($action eq 'edit') {
    load_template('edit');
}
elsif ($action eq 'update') {
    check_token_data($token, 'workflow_edit');