]> git.ipfire.org Git - thirdparty/bugzilla.git/commitdiff
Bug 428440: Move code to set new product and related groups from process_bug.cgi...
authorlpsolit%gmail.com <>
Sun, 29 Jun 2008 00:01:44 +0000 (00:01 +0000)
committerlpsolit%gmail.com <>
Sun, 29 Jun 2008 00:01:44 +0000 (00:01 +0000)
Bugzilla/Bug.pm
process_bug.cgi

index 2335d0caa652b95e2c488cad19cd135877593265..c32672ce2bd87e383cf3c7ac8fc9f46f001a1946 100644 (file)
@@ -501,6 +501,33 @@ sub run_create_validators {
     return $params;
 }
 
+sub set_all {
+    my ($self, $args) = @_;
+
+    # For security purposes, and because lots of other checks depend on it,
+    # we set the product first before anything else.
+    my $product_change = 0;
+    if ($args->{product}) {
+        my $changed = $self->set_product($args->{product},
+                                        { component => $args->{component},
+                                          version   => $args->{version},
+                                          target_milestone => $args->{target_milestone},
+                                          change_confirmed => $args->{confirm_product_change},
+                                          other_bugs => $args->{other_bugs},
+                                        });
+        # that will be used later to check strict isolation
+        $product_change = $changed;
+    }
+
+    # add/remove groups
+    $self->remove_group($_) foreach @{$args->{remove_group}};
+    $self->add_group($_) foreach @{$args->{add_group}};
+
+    # this is temporary until all related code is moved from
+    # process_bug.cgi to set_all
+    return $product_change;
+}
+
 sub update {
     my $self = shift;
 
index cf24c96c919aa3cb7444c6f4a73a7c6e88585c1b..bb680fab23df582dcf207bc97532963fc599da27 100755 (executable)
@@ -241,39 +241,36 @@ foreach my $bug (@bug_objects) {
     }
 }
 
-# For security purposes, and because lots of other checks depend on it,
-# we set the product first before anything else.
-my $product_change; # Used only for strict_isolation checks, right now.
-if (should_set('product')) {
-    foreach my $b (@bug_objects) {
-        my $changed = $b->set_product(scalar $cgi->param('product'),
-            { component        => scalar $cgi->param('component'),
-              version          => scalar $cgi->param('version'),
-              target_milestone => scalar $cgi->param('target_milestone'),
-              change_confirmed => scalar $cgi->param('confirm_product_change'),
-              other_bugs => \@bug_objects,
-            });
-        $product_change ||= $changed;
+my $product_change;
+foreach my $bug (@bug_objects) {
+    my $args;
+    if (should_set('product')) {
+        $args->{product} = scalar $cgi->param('product');
+        $args->{component} = scalar $cgi->param('component');
+        $args->{version} = scalar $cgi->param('version');
+        $args->{target_milestone} = scalar $cgi->param('target_milestone');
+        $args->{confirm_product_change} =  scalar $cgi->param('confirm_product_change');
+        $args->{other_bugs} = \@bug_objects;
     }
-}
-        
-# strict_isolation checks mean that we should set the groups
-# immediately after changing the product.
-foreach my $b (@bug_objects) {
-    foreach my $group (@{$b->product_obj->groups_valid}) {
+
+    foreach my $group (@{$bug->product_obj->groups_valid}) {
         my $gid = $group->id;
         if (should_set("bit-$gid", 1)) {
             # Check ! first to avoid having to check defined below.
             if (!$cgi->param("bit-$gid")) {
-                $b->remove_group($gid);
+                push (@{$args->{remove_group}}, $gid);
             }
             # "== 1" is important because mass-change uses -1 to mean
             # "don't change this restriction"
             elsif ($cgi->param("bit-$gid") == 1) {
-                $b->add_group($gid);
+               push (@{$args->{add_group}}, $gid);
             }
         }
     }
+
+    # this will be deleted later when code moves to $bug->set_all
+    my $changed = $bug->set_all($args);
+    $product_change ||= $changed;
 }
 
 if ($cgi->param('id') && (defined $cgi->param('dependson')