summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobin H. Johnson <robbat2@gentoo.org>2020-03-07 11:19:34 -0800
committerRobin H. Johnson <robbat2@gentoo.org>2020-03-07 11:20:45 -0800
commit1383dfc4ff1dfe5bfa5b327b4ae19b2af6a2a28e (patch)
treeef46b4d84362cabf31dd2c098d0fae38fcd0e018 /editworkflow.cgi
parentGentoo: alpha is now ~arch-only (diff)
parentBugzilla/Util: disable BiDi tr safety (diff)
downloadbugzilla-1383dfc4ff1dfe5bfa5b327b4ae19b2af6a2a28e.tar.gz
bugzilla-1383dfc4ff1dfe5bfa5b327b4ae19b2af6a2a28e.tar.bz2
bugzilla-1383dfc4ff1dfe5bfa5b327b4ae19b2af6a2a28e.zip
Bugzilla 5.0.6! Merge branch 'bugstest'
This update Gentoo production Bugzilla to 5.0.6. Please note that upstream reformatted all code, so the commit series has some extra hops to help reflect that change. Signed-off-by: Robin H. Johnson <robbat2@gentoo.org>
Diffstat (limited to 'editworkflow.cgi')
-rwxr-xr-xeditworkflow.cgi195
1 files changed, 103 insertions, 92 deletions
diff --git a/editworkflow.cgi b/editworkflow.cgi
index 71b14af77..81b665e42 100755
--- a/editworkflow.cgi
+++ b/editworkflow.cgi
@@ -18,123 +18,134 @@ use Bugzilla::Error;
use Bugzilla::Token;
use Bugzilla::Status;
-my $cgi = Bugzilla->cgi;
-my $dbh = Bugzilla->dbh;
+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'});
+ || ThrowUserError('auth_failure',
+ {group => 'admin', action => 'modify', object => 'workflow'});
my $action = $cgi->param('action') || 'edit';
-my $token = $cgi->param('token');
+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;
+ 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;
+ 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');
+ load_template('edit');
}
elsif ($action eq 'update') {
- check_token_data($token, 'workflow_edit');
- my $statuses = [Bugzilla::Status->get_all];
- my $workflow = get_workflow();
-
- my $sth_insert = $dbh->prepare('INSERT INTO status_workflow (old_status, new_status)
- VALUES (?, ?)');
- my $sth_delete = $dbh->prepare('DELETE FROM status_workflow
- WHERE old_status = ? AND new_status = ?');
- my $sth_delnul = $dbh->prepare('DELETE FROM status_workflow
- WHERE old_status IS NULL AND new_status = ?');
-
- # Part 1: Initial bug statuses.
- foreach my $new (@$statuses) {
- if ($cgi->param('w_0_' . $new->id)) {
- $sth_insert->execute(undef, $new->id)
- unless defined $workflow->{0}->{$new->id};
- }
- else {
- $sth_delnul->execute($new->id);
- }
+ check_token_data($token, 'workflow_edit');
+ my $statuses = [Bugzilla::Status->get_all];
+ my $workflow = get_workflow();
+
+ my $sth_insert = $dbh->prepare(
+ 'INSERT INTO status_workflow (old_status, new_status)
+ VALUES (?, ?)'
+ );
+ my $sth_delete = $dbh->prepare(
+ 'DELETE FROM status_workflow
+ WHERE old_status = ? AND new_status = ?'
+ );
+ my $sth_delnul = $dbh->prepare(
+ 'DELETE FROM status_workflow
+ WHERE old_status IS NULL AND new_status = ?'
+ );
+
+ # Part 1: Initial bug statuses.
+ foreach my $new (@$statuses) {
+ if ($cgi->param('w_0_' . $new->id)) {
+ $sth_insert->execute(undef, $new->id) unless defined $workflow->{0}->{$new->id};
}
+ else {
+ $sth_delnul->execute($new->id);
+ }
+ }
- # Part 2: Bug status changes.
- foreach my $old (@$statuses) {
- foreach my $new (@$statuses) {
- next if $old->id == $new->id;
-
- # All transitions to 'duplicate_or_move_bug_status' must be valid.
- if ($cgi->param('w_' . $old->id . '_' . $new->id)
- || ($new->name eq Bugzilla->params->{'duplicate_or_move_bug_status'}))
- {
- $sth_insert->execute($old->id, $new->id)
- unless defined $workflow->{$old->id}->{$new->id};
- }
- else {
- $sth_delete->execute($old->id, $new->id);
- }
- }
+ # Part 2: Bug status changes.
+ foreach my $old (@$statuses) {
+ foreach my $new (@$statuses) {
+ next if $old->id == $new->id;
+
+ # All transitions to 'duplicate_or_move_bug_status' must be valid.
+ if ($cgi->param('w_' . $old->id . '_' . $new->id)
+ || ($new->name eq Bugzilla->params->{'duplicate_or_move_bug_status'}))
+ {
+ $sth_insert->execute($old->id, $new->id)
+ unless defined $workflow->{$old->id}->{$new->id};
+ }
+ else {
+ $sth_delete->execute($old->id, $new->id);
+ }
}
- delete_token($token);
- load_template('edit', 'workflow_updated');
+ }
+ delete_token($token);
+ load_template('edit', 'workflow_updated');
}
elsif ($action eq 'edit_comment') {
- load_template('comment');
+ load_template('comment');
}
elsif ($action eq 'update_comment') {
- check_token_data($token, 'workflow_comment');
- my $workflow = get_workflow();
-
- my $sth_update = $dbh->prepare('UPDATE status_workflow SET require_comment = ?
- WHERE old_status = ? AND new_status = ?');
- my $sth_updnul = $dbh->prepare('UPDATE status_workflow SET require_comment = ?
- WHERE old_status IS NULL AND new_status = ?');
-
- foreach my $old (keys %$workflow) {
- # Hashes cannot have undef as a key, so we use 0. But the DB
- # must store undef, for referential integrity.
- my $old_id_for_db = $old || undef;
- foreach my $new (keys %{$workflow->{$old}}) {
- my $comment_required = $cgi->param("c_${old}_$new") ? 1 : 0;
- next if ($workflow->{$old}->{$new} == $comment_required);
- if ($old_id_for_db) {
- $sth_update->execute($comment_required, $old_id_for_db, $new);
- }
- else {
- $sth_updnul->execute($comment_required, $new);
- }
- }
+ check_token_data($token, 'workflow_comment');
+ my $workflow = get_workflow();
+
+ my $sth_update = $dbh->prepare(
+ 'UPDATE status_workflow SET require_comment = ?
+ WHERE old_status = ? AND new_status = ?'
+ );
+ my $sth_updnul = $dbh->prepare(
+ 'UPDATE status_workflow SET require_comment = ?
+ WHERE old_status IS NULL AND new_status = ?'
+ );
+
+ foreach my $old (keys %$workflow) {
+
+ # Hashes cannot have undef as a key, so we use 0. But the DB
+ # must store undef, for referential integrity.
+ my $old_id_for_db = $old || undef;
+ foreach my $new (keys %{$workflow->{$old}}) {
+ my $comment_required = $cgi->param("c_${old}_$new") ? 1 : 0;
+ next if ($workflow->{$old}->{$new} == $comment_required);
+ if ($old_id_for_db) {
+ $sth_update->execute($comment_required, $old_id_for_db, $new);
+ }
+ else {
+ $sth_updnul->execute($comment_required, $new);
+ }
}
- delete_token($token);
- load_template('comment', 'workflow_updated');
+ }
+ delete_token($token);
+ load_template('comment', 'workflow_updated');
}
else {
- ThrowUserError('unknown_action', {action => $action});
+ ThrowUserError('unknown_action', {action => $action});
}