diff options
-rw-r--r-- | Bugzilla/Bug.pm | 21 | ||||
-rwxr-xr-x | process_bug.cgi | 17 |
2 files changed, 30 insertions, 8 deletions
diff --git a/Bugzilla/Bug.pm b/Bugzilla/Bug.pm index c0c2d97ff..b9c64da7f 100644 --- a/Bugzilla/Bug.pm +++ b/Bugzilla/Bug.pm @@ -1848,6 +1848,27 @@ sub _set_global_validator { # "Set" Methods # ################# +sub set_all { + my $self = shift; + my ($params) = @_; + + if (exists $params->{'comment'} or exists $params->{'work_time'}) { + # Add a comment as needed to each bug. This is done early because + # there are lots of things that want to check if we added a comment. + $self->add_comment($params->{'comment'}->{'body'}, + { isprivate => $params->{'comment'}->{'is_private'}, + work_time => $params->{'work_time'} }); + } + + my %normal_set_all; + foreach my $name (keys %$params) { + if ($self->can("set_$name")) { + $normal_set_all{$name} = $params->{$name}; + } + } + $self->SUPER::set_all(\%normal_set_all); +} + sub set_alias { $_[0]->set('alias', $_[1]); } sub set_assigned_to { my ($self, $value) = @_; diff --git a/process_bug.cgi b/process_bug.cgi index f41dc761d..956068370 100755 --- a/process_bug.cgi +++ b/process_bug.cgi @@ -322,7 +322,8 @@ if (defined $cgi->param('keywords')) { my @set_fields = qw(op_sys rep_platform priority bug_severity component target_milestone version bug_file_loc status_whiteboard short_desc - deadline remaining_time estimated_time); + deadline remaining_time estimated_time + work_time); push(@set_fields, 'assigned_to') if !$cgi->param('set_default_assignee'); push(@set_fields, 'qa_contact') if !$cgi->param('set_default_qa_contact'); my %field_translation = ( @@ -340,16 +341,16 @@ foreach my $field_name (@set_fields) { } } +if (should_set('comment')) { + $set_all_fields{comment} = { + body => scalar $cgi->param('comment'), + is_private => scalar $cgi->param('commentprivacy'), + }; +} + my @custom_fields = Bugzilla->active_custom_fields; foreach my $b (@bug_objects) { - if (should_set('comment') || $cgi->param('work_time')) { - # Add a comment as needed to each bug. This is done early because - # there are lots of things that want to check if we added a comment. - $b->add_comment(scalar($cgi->param('comment')), - { isprivate => scalar $cgi->param('commentprivacy'), - work_time => scalar $cgi->param('work_time') }); - } $b->set_all(\%set_all_fields); $b->reset_assigned_to if $cgi->param('set_default_assignee'); $b->reset_qa_contact if $cgi->param('set_default_qa_contact'); |