summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xdescribecomponents.cgi36
-rwxr-xr-xenter_bug.cgi5
-rw-r--r--globals.pl10
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']));