aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorlpsolit%gmail.com <>2006-06-03 06:02:52 +0000
committerlpsolit%gmail.com <>2006-06-03 06:02:52 +0000
commitd1921357b6753fa5428bf13e7519493d434f0db3 (patch)
tree0e0c170c7a98360e69f6721d554150671506c2a3
parentDocumentation patch, bug 340130: add a section ID in troubleshooting.xml for ... (diff)
downloadbugzilla-d1921357b6753fa5428bf13e7519493d434f0db3.tar.gz
bugzilla-d1921357b6753fa5428bf13e7519493d434f0db3.tar.bz2
bugzilla-d1921357b6753fa5428bf13e7519493d434f0db3.zip
Bug 340116: Flag::FormToNewFlags() uses incorrect data - Patch by Frédéric Buclin <LpSolit@gmail.com> r=kiko a=myk
-rw-r--r--Bugzilla/Flag.pm4
-rw-r--r--Bugzilla/FlagType.pm25
2 files changed, 12 insertions, 17 deletions
diff --git a/Bugzilla/Flag.pm b/Bugzilla/Flag.pm
index 643c6635b..4ca68e697 100644
--- a/Bugzilla/Flag.pm
+++ b/Bugzilla/Flag.pm
@@ -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;
diff --git a/Bugzilla/FlagType.pm b/Bugzilla/FlagType.pm
index 49620e332..5141b31f1 100644
--- a/Bugzilla/FlagType.pm
+++ b/Bugzilla/FlagType.pm
@@ -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
- # NULL exclusion type, i.e. without any exclusions.
- 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};