From c457b4c49d1ac10b91db246235e65292798f33d6 Mon Sep 17 00:00:00 2001 From: "bugreport%peshkin.net" <> Date: Tue, 10 Dec 2002 22:17:02 +0000 Subject: Bug 184081 Change search interfaces to use Viewable products instead of enterable products r=bbaetz a=justdave --- defparams.pl | 7 +++++-- globals.pl | 24 +++++++++++++++++------- query.cgi | 2 +- reports.cgi | 4 +--- request.cgi | 8 ++++---- 5 files changed, 28 insertions(+), 17 deletions(-) diff --git a/defparams.pl b/defparams.pl index 1e880dd82..cb02eb986 100644 --- a/defparams.pl +++ b/defparams.pl @@ -261,8 +261,11 @@ sub check_netmask { { name => 'useentrygroupdefault', - desc => 'If this is on, Bugzilla will use product bug groups to restrict ' . - 'who can enter bugs. Requires makeproductgroups to be on as well.', + desc => 'If this is on, Bugzilla will use product bug groups by default ' . + 'to restrict who can enter bugs. If this is on, users can see ' . + 'any product to which they have entry access in search menus. ' . + 'If this is off, users can see any product to which they have not ' . + 'been excluded by a mandatory restriction.', type => 'b', default => 0 }, diff --git a/globals.pl b/globals.pl index 25a949e38..51d6642fa 100644 --- a/globals.pl +++ b/globals.pl @@ -774,12 +774,17 @@ sub CanEnterProduct { # # This function returns an alphabetical list of product names to which # the user can enter bugs. -sub GetEnterableProducts { +sub GetSelectableProducts { my $query = "SELECT name " . "FROM products " . "LEFT JOIN group_control_map " . - "ON group_control_map.product_id = products.id " . - "AND group_control_map.entry != 0 "; + "ON group_control_map.product_id = products.id "; + if (Param('useentrygroupdefault')) { + $query .= "AND group_control_map.entry != 0 "; + } else { + $query .= "AND group_control_map.membercontrol = " . + CONTROLMAPMANDATORY . " "; + } if ((defined @{$::vars->{user}{groupids}}) && (@{$::vars->{user}{groupids}} > 0)) { $query .= "AND group_id NOT IN(" . @@ -796,19 +801,24 @@ sub GetEnterableProducts { return (@products); } -# GetEnterableProductHash +# GetSelectableProductHash # returns a hash containing # legal_products => an enterable product list # legal_components => the list of components of enterable products # components => a hash of component lists for each enterable product -sub GetEnterableProductHash { +sub GetSelectableProductHash { my $query = "SELECT products.name, components.name " . "FROM products " . "LEFT JOIN components " . "ON components.product_id = products.id " . "LEFT JOIN group_control_map " . - "ON group_control_map.product_id = products.id " . - "AND group_control_map.entry != 0 "; + "ON group_control_map.product_id = products.id "; + if (Param('useentrygroupdefault')) { + $query .= "AND group_control_map.entry != 0 "; + } else { + $query .= "AND group_control_map.membercontrol = " . + CONTROLMAPMANDATORY . " "; + } if ((defined @{$::vars->{user}{groupids}}) && (@{$::vars->{user}{groupids}} > 0)) { $query .= "AND group_id NOT IN(" . diff --git a/query.cgi b/query.cgi index 680ed0557..f6f8c87a5 100755 --- a/query.cgi +++ b/query.cgi @@ -198,7 +198,7 @@ my @products = (); my %component_set; my %version_set; my %milestone_set; -foreach my $p (GetEnterableProducts()) { +foreach my $p (GetSelectableProducts()) { # We build up boolean hashes in the "-set" hashes for each of these things # before making a list because there may be duplicates names across products. push @products, $p; diff --git a/reports.cgi b/reports.cgi index 05e19990e..e18d3ee37 100755 --- a/reports.cgi +++ b/reports.cgi @@ -61,9 +61,7 @@ GetVersionTable(); # We only want those products that the user has permissions for. my @myproducts; push( @myproducts, "-All-"); -foreach my $this_product (@legal_product) { - push(@myproducts, $this_product) if CanEnterProduct($this_product); -} +push( @myproducts, GetSelectableProducts()); if (! defined $FORM{'product'}) { diff --git a/request.cgi b/request.cgi index 920ac79cf..29c19f27f 100755 --- a/request.cgi +++ b/request.cgi @@ -254,10 +254,10 @@ sub queue { # menu when the products menu changes; used by the template to populate # the menus and keep the components menu consistent with the products menu GetVersionTable(); - my $enterable = GetEnterableProductHash(); - $vars->{'products'} = $enterable->{legal_products}; - $vars->{'components'} = $enterable->{legal_components}; - $vars->{'components_by_product'} = $enterable->{components}; + my $selectable = GetSelectableProductHash(); + $vars->{'products'} = $selectable->{legal_products}; + $vars->{'components'} = $selectable->{legal_components}; + $vars->{'components_by_product'} = $selectable->{components}; $vars->{'excluded_columns'} = \@excluded_columns; $vars->{'group_field'} = $::FORM{'group'}; -- cgit v1.2.3-24-g4f1b