diff options
author | Robin H. Johnson <robbat2@gentoo.org> | 2020-03-07 11:19:34 -0800 |
---|---|---|
committer | Robin H. Johnson <robbat2@gentoo.org> | 2020-03-07 11:20:45 -0800 |
commit | 1383dfc4ff1dfe5bfa5b327b4ae19b2af6a2a28e (patch) | |
tree | ef46b4d84362cabf31dd2c098d0fae38fcd0e018 /editworkflow.cgi | |
parent | Gentoo: alpha is now ~arch-only (diff) | |
parent | Bugzilla/Util: disable BiDi tr safety (diff) | |
download | bugzilla-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-x | editworkflow.cgi | 195 |
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}); } |