]> git.ipfire.org Git - thirdparty/bugzilla.git/commitdiff
Bug 556123: process_bug.cgi: move the setting of comments and work_time
authorMax Kanat-Alexander <mkanat@bugzilla.org>
Thu, 13 May 2010 06:28:30 +0000 (23:28 -0700)
committerMax Kanat-Alexander <mkanat@bugzilla.org>
Thu, 13 May 2010 06:28:30 +0000 (23:28 -0700)
into Bugzilla::Bug::set_all
r=dkl, a=mkanat

Bugzilla/Bug.pm
process_bug.cgi

index c0c2d97ff4df8c540be69a4b4a9f77ee668bac6d..b9c64da7f02a621e240d297eb84d40543ea7dd63 100644 (file)
@@ -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) = @_;
index f41dc761d7f42c1e9b20367e7df4f9406a41b67c..956068370fe23ce39977ca81328b23858c02e09b 100755 (executable)
@@ -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');