]> git.ipfire.org Git - thirdparty/bugzilla.git/commitdiff
Bug 340116: Flag::FormToNewFlags() uses incorrect data - Patch by Frédéric Buclin...
authorlpsolit%gmail.com <>
Sat, 3 Jun 2006 06:02:52 +0000 (06:02 +0000)
committerlpsolit%gmail.com <>
Sat, 3 Jun 2006 06:02:52 +0000 (06:02 +0000)
Bugzilla/Flag.pm
Bugzilla/FlagType.pm

index 643c6635b691bd9521be9b1612efa872140602d4..4ca68e69775b2c31de894af7690b4a8cf937714b 100644 (file)
@@ -788,8 +788,8 @@ sub FormToNewFlags {
     # Get a list of active flag types available for this target.
     my $flag_types = Bugzilla::FlagType::match(
         { 'target_type'  => $target->{'type'},
-          'product_id'   => $target->{'product_id'},
-          'component_id' => $target->{'component_id'},
+          'product_id'   => $target->{'bug'}->{'product_id'},
+          'component_id' => $target->{'bug'}->{'component_id'},
           'is_active'    => 1 });
 
     my @flags;
index 49620e3327ccc678ed8b202c0d5cb0817aee55c3..5141b31f1ffddfed13219ada6629404f15bce71e 100644 (file)
@@ -536,26 +536,21 @@ sub sqlify_criteria {
         
         # Add inclusions to the query, which simply involves joining the table
         # by flag type ID and target product/component.
-        push(@$tables, "INNER JOIN flaginclusions ON " .
-                       "flagtypes.id = flaginclusions.type_id");
-        push(@criteria, "(flaginclusions.product_id = $product_id " . 
-                        " OR flaginclusions.product_id IS NULL)");
-        push(@criteria, "(flaginclusions.component_id = $component_id " . 
-                        " OR flaginclusions.component_id IS NULL)");
+        push(@$tables, "INNER JOIN flaginclusions AS i ON flagtypes.id = i.type_id");
+        push(@criteria, "(i.product_id = $product_id OR i.product_id IS NULL)");
+        push(@criteria, "(i.component_id = $component_id OR i.component_id IS NULL)");
         
         # Add exclusions to the query, which is more complicated.  First of all,
         # we do a LEFT JOIN so we don't miss flag types with no exclusions.
         # Then, as with inclusions, we join on flag type ID and target product/
         # component.  However, since we want flag types that *aren't* on the
-        # exclusions list, we add a WHERE criteria to use only records with\r
-        # NULL exclusion type, i.e. without any exclusions.\r
-        my $join_clause = "flagtypes.id = flagexclusions.type_id " . 
-                          "AND (flagexclusions.product_id = $product_id " . 
-                          "OR flagexclusions.product_id IS NULL) " . 
-                          "AND (flagexclusions.component_id = $component_id " .
-                          "OR flagexclusions.component_id IS NULL)";
-        push(@$tables, "LEFT JOIN flagexclusions ON ($join_clause)");
-        push(@criteria, "flagexclusions.type_id IS NULL");
+        # exclusions list, we add a WHERE criteria to use only records with
+        # NULL exclusion type, i.e. without any exclusions.
+        my $join_clause = "flagtypes.id = e.type_id " .
+                          "AND (e.product_id = $product_id OR e.product_id IS NULL) " .
+                          "AND (e.component_id = $component_id OR e.component_id IS NULL)";
+        push(@$tables, "LEFT JOIN flagexclusions AS e ON ($join_clause)");
+        push(@criteria, "e.type_id IS NULL");
     }
     if ($criteria->{group}) {
         my $gid = $criteria->{group};