Fix bad or_groups SQL for determining if a user can see a product. r=LpSolit, a=justdave.
git-svn-id: svn://10.0.0.236/trunk@265246 18797224-902f-48f8-a5cc-f745e15eee43
This commit is contained in:
parent
8124a0f52d
commit
076726d426
@ -1 +1 @@
|
|||||||
8921
|
8922
|
||||||
@ -1057,25 +1057,23 @@ sub get_selectable_products {
|
|||||||
my $class_restricted = Bugzilla->params->{'useclassification'} && $class_id;
|
my $class_restricted = Bugzilla->params->{'useclassification'} && $class_id;
|
||||||
|
|
||||||
if (!defined $self->{selectable_products}) {
|
if (!defined $self->{selectable_products}) {
|
||||||
my $query =
|
my $query = "SELECT id
|
||||||
Bugzilla->params->{'or_groups'}
|
|
||||||
? "SELECT id
|
|
||||||
FROM products
|
|
||||||
WHERE id NOT IN (
|
|
||||||
SELECT product_id
|
|
||||||
FROM group_control_map
|
|
||||||
WHERE group_control_map.membercontrol = " . CONTROLMAPMANDATORY . "
|
|
||||||
AND group_id NOT IN (" . $self->groups_as_string . ")
|
|
||||||
)
|
|
||||||
ORDER BY name"
|
|
||||||
: "SELECT id
|
|
||||||
FROM products
|
FROM products
|
||||||
LEFT JOIN group_control_map
|
LEFT JOIN group_control_map
|
||||||
ON group_control_map.product_id = products.id
|
ON group_control_map.product_id = products.id
|
||||||
AND group_control_map.membercontrol = " . CONTROLMAPMANDATORY . "
|
AND group_control_map.membercontrol = " . CONTROLMAPMANDATORY;
|
||||||
AND group_id NOT IN(" . $self->groups_as_string . ")
|
|
||||||
WHERE group_id IS NULL
|
if (Bugzilla->params->{'or_groups'}) {
|
||||||
ORDER BY name";
|
# Either the user is in at least one of the MANDATORY groups, or
|
||||||
|
# there are no such groups for the product.
|
||||||
|
$query .= " WHERE group_id IN (" . $self->groups_as_string . ")
|
||||||
|
OR group_id IS NULL";
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
# There must be no MANDATORY groups that the user is not in.
|
||||||
|
$query .= " AND group_id NOT IN (" . $self->groups_as_string . ")
|
||||||
|
WHERE group_id IS NULL";
|
||||||
|
}
|
||||||
|
|
||||||
my $prod_ids = Bugzilla->dbh->selectcol_arrayref($query);
|
my $prod_ids = Bugzilla->dbh->selectcol_arrayref($query);
|
||||||
$self->{selectable_products} = Bugzilla::Product->new_from_list($prod_ids);
|
$self->{selectable_products} = Bugzilla::Product->new_from_list($prod_ids);
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user