Commit 22c14103 authored by lpsolit%gmail.com's avatar lpsolit%gmail.com

Bug 311278: Eliminate %::proddesc - Patch by Max Kanat-Alexander…

Bug 311278: Eliminate %::proddesc - Patch by Max Kanat-Alexander <mkanat@bugzilla.org> r=LpSolit a=justdave
parent 286c0ad1
...@@ -42,28 +42,21 @@ my $product = trim($cgi->param('product') || ''); ...@@ -42,28 +42,21 @@ my $product = trim($cgi->param('product') || '');
my $product_id = get_product_id($product); my $product_id = get_product_id($product);
if (!$product_id || !$user->can_enter_product($product)) { if (!$product_id || !$user->can_enter_product($product)) {
# Reference to a subset of %::proddesc, which the user is allowed to see # Products which the user is allowed to see.
my %products; my @products = @{$user->get_enterable_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;
}
my $prodsize = scalar(keys %products); if (scalar(@products) == 0) {
if ($prodsize == 0) {
ThrowUserError("no_products"); ThrowUserError("no_products");
} }
elsif ($prodsize > 1) { elsif (scalar(@products) > 1) {
$vars->{'proddesc'} = \%products; # 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"; $vars->{'target'} = "describecomponents.cgi";
# If an invalid product name is given, or the user is not # If an invalid product name is given, or the user is not
# allowed to access that product, a message is displayed # allowed to access that product, a message is displayed
...@@ -79,8 +72,9 @@ if (!$product_id || !$user->can_enter_product($product)) { ...@@ -79,8 +72,9 @@ if (!$product_id || !$user->can_enter_product($product)) {
exit; exit;
} }
$product = (keys %products)[0]; # Else, if there is only one product:
$product_id = get_product_id($product); $product = $products[0]->name;
$product_id = $products[0]->id;
} }
###################################################################### ######################################################################
......
...@@ -53,7 +53,6 @@ use vars qw( ...@@ -53,7 +53,6 @@ use vars qw(
@legal_keywords @legal_keywords
%versions %versions
%target_milestone %target_milestone
$proddesc
); );
# If we're using bug groups to restrict bug entry, we need to know who the # 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 "") { ...@@ -115,11 +114,13 @@ if (!defined $product || $product eq "") {
} }
my %products; my %products;
# XXX - This loop should work in some more sensible, efficient way.
foreach my $p (@enterable_products) { foreach my $p (@enterable_products) {
if (Bugzilla->user->can_enter_product($p)) { if (Bugzilla->user->can_enter_product($p)) {
if (IsInClassification(scalar $cgi->param('classification'),$p) || if (IsInClassification(scalar $cgi->param('classification'),$p) ||
$cgi->param('classification') eq "__all") { $cgi->param('classification') eq "__all") {
$products{$p} = $::proddesc{$p}; my $product_object = new Bugzilla::Product({name => $p});
$products{$p} = $product_object->description;
} }
} }
} }
......
...@@ -57,7 +57,6 @@ sub globals_pl_sillyness { ...@@ -57,7 +57,6 @@ sub globals_pl_sillyness {
$zz = @main::legal_target_milestone; $zz = @main::legal_target_milestone;
$zz = @main::legal_versions; $zz = @main::legal_versions;
$zz = @main::milestoneurl; $zz = @main::milestoneurl;
$zz = %main::proddesc;
$zz = @main::prodmaxvotes; $zz = @main::prodmaxvotes;
} }
...@@ -158,11 +157,10 @@ sub GenerateVersionTable { ...@@ -158,11 +157,10 @@ sub GenerateVersionTable {
my $mpart = $dotargetmilestone ? ", milestoneurl" : ""; my $mpart = $dotargetmilestone ? ", milestoneurl" : "";
SendSQL("SELECT name, description, votesperuser, disallownew$mpart " . SendSQL("SELECT name, votesperuser, disallownew$mpart " .
"FROM products ORDER BY name"); "FROM products ORDER BY name");
while (@line = FetchSQLData()) { while (@line = FetchSQLData()) {
my ($p, $d, $votesperuser, $dis, $u) = (@line); my ($p, $votesperuser, $dis, $u) = (@line);
$::proddesc{$p} = $d;
if (!$dis && scalar($::components{$p})) { if (!$dis && scalar($::components{$p})) {
push @::enterable_products, $p; push @::enterable_products, $p;
} }
...@@ -241,10 +239,10 @@ sub GenerateVersionTable { ...@@ -241,10 +239,10 @@ sub GenerateVersionTable {
'*::legal_platform', '*::legal_opsys', '*::legal_platform', '*::legal_opsys',
'*::legal_bug_status', '*::legal_resolution'])); '*::legal_bug_status', '*::legal_resolution']));
print $fh (Data::Dumper->Dump([\@::settable_resolution, \%::proddesc, print $fh (Data::Dumper->Dump([\@::settable_resolution,
\%::classifications, \%::classifications,
\@::enterable_products, \%::prodmaxvotes], \@::enterable_products, \%::prodmaxvotes],
['*::settable_resolution', '*::proddesc', ['*::settable_resolution',
'*::classifications', '*::classifications',
'*::enterable_products', '*::prodmaxvotes'])); '*::enterable_products', '*::prodmaxvotes']));
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment