diff options
-rwxr-xr-x | describecomponents.cgi | 36 | ||||
-rwxr-xr-x | enter_bug.cgi | 5 | ||||
-rw-r--r-- | globals.pl | 10 |
3 files changed, 22 insertions, 29 deletions
diff --git a/describecomponents.cgi b/describecomponents.cgi index 1b1ccbfe0..c00f39bed 100755 --- a/describecomponents.cgi +++ b/describecomponents.cgi @@ -42,28 +42,21 @@ my $product = trim($cgi->param('product') || ''); my $product_id = get_product_id($product); if (!$product_id || !$user->can_enter_product($product)) { - # Reference to a subset of %::proddesc, which the user is allowed to see - my %products; - - if (AnyEntryGroups()) { - # OK, now only add products the user can see - Bugzilla->login(LOGIN_REQUIRED); - foreach my $p (@::legal_product) { - if ($user->can_enter_product($p)) { - $products{$p} = $::proddesc{$p}; - } - } - } - else { - %products = %::proddesc; - } + # Products which the user is allowed to see. + my @products = @{$user->get_enterable_products()}; - my $prodsize = scalar(keys %products); - if ($prodsize == 0) { + if (scalar(@products) == 0) { ThrowUserError("no_products"); } - elsif ($prodsize > 1) { - $vars->{'proddesc'} = \%products; + elsif (scalar(@products) > 1) { + # XXX - For backwards-compatibility with old template + # interfaces, we now create a proddesc hash. This can go away + # once we update the templates. + my %product_desc; + foreach my $product (@products) { + $product_desc{$product->name} = $product->description; + } + $vars->{'proddesc'} = \%product_desc; $vars->{'target'} = "describecomponents.cgi"; # If an invalid product name is given, or the user is not # allowed to access that product, a message is displayed @@ -79,8 +72,9 @@ if (!$product_id || !$user->can_enter_product($product)) { exit; } - $product = (keys %products)[0]; - $product_id = get_product_id($product); + # Else, if there is only one product: + $product = $products[0]->name; + $product_id = $products[0]->id; } ###################################################################### diff --git a/enter_bug.cgi b/enter_bug.cgi index 89ebbcb85..5d9cd0626 100755 --- a/enter_bug.cgi +++ b/enter_bug.cgi @@ -53,7 +53,6 @@ use vars qw( @legal_keywords %versions %target_milestone - $proddesc ); # If we're using bug groups to restrict bug entry, we need to know who the @@ -115,11 +114,13 @@ if (!defined $product || $product eq "") { } my %products; + # XXX - This loop should work in some more sensible, efficient way. foreach my $p (@enterable_products) { if (Bugzilla->user->can_enter_product($p)) { if (IsInClassification(scalar $cgi->param('classification'),$p) || $cgi->param('classification') eq "__all") { - $products{$p} = $::proddesc{$p}; + my $product_object = new Bugzilla::Product({name => $p}); + $products{$p} = $product_object->description; } } } diff --git a/globals.pl b/globals.pl index 6240b9737..68299378b 100644 --- a/globals.pl +++ b/globals.pl @@ -57,7 +57,6 @@ sub globals_pl_sillyness { $zz = @main::legal_target_milestone; $zz = @main::legal_versions; $zz = @main::milestoneurl; - $zz = %main::proddesc; $zz = @main::prodmaxvotes; } @@ -158,11 +157,10 @@ sub GenerateVersionTable { my $mpart = $dotargetmilestone ? ", milestoneurl" : ""; - SendSQL("SELECT name, description, votesperuser, disallownew$mpart " . + SendSQL("SELECT name, votesperuser, disallownew$mpart " . "FROM products ORDER BY name"); while (@line = FetchSQLData()) { - my ($p, $d, $votesperuser, $dis, $u) = (@line); - $::proddesc{$p} = $d; + my ($p, $votesperuser, $dis, $u) = (@line); if (!$dis && scalar($::components{$p})) { push @::enterable_products, $p; } @@ -241,10 +239,10 @@ sub GenerateVersionTable { '*::legal_platform', '*::legal_opsys', '*::legal_bug_status', '*::legal_resolution'])); - print $fh (Data::Dumper->Dump([\@::settable_resolution, \%::proddesc, + print $fh (Data::Dumper->Dump([\@::settable_resolution, \%::classifications, \@::enterable_products, \%::prodmaxvotes], - ['*::settable_resolution', '*::proddesc', + ['*::settable_resolution', '*::classifications', '*::enterable_products', '*::prodmaxvotes'])); |