Bug 330698: Remove $::components, @::enterable_products and $::classifications (and some others) - Patch by Fr�d�ric Buclin <LpSolit@gmail.com> r=mkanat a=justdave

This commit is contained in:
lpsolit%gmail.com 2006-04-02 19:07:14 +00:00
Родитель ead59a07ae
Коммит 23c579c387
8 изменённых файлов: 34 добавлений и 141 удалений

Просмотреть файл

@ -32,8 +32,7 @@ use strict;
use vars qw(@legal_platform
@legal_priority @legal_severity @legal_opsys @legal_bug_status
@settable_resolution %components %target_milestone
@enterable_products %milestoneurl %prodmaxvotes);
@settable_resolution %prodmaxvotes);
use CGI::Carp qw(fatalsToBrowser);
@ -469,7 +468,9 @@ sub milestoneurl {
my ($self) = @_;
return $self->{'milestoneurl'} if exists $self->{'milestoneurl'};
return '' if $self->{'error'};
$self->{'milestoneurl'} = $::milestoneurl{$self->{product}};
$self->{'prod_obj'} ||= new Bugzilla::Product({name => $self->{'product'}});
$self->{'milestoneurl'} = $self->{'prod_obj'}->milestone_url;
return $self->{'milestoneurl'};
}
@ -640,34 +641,11 @@ sub choices {
$self->{'choices'} = {};
$self->{prod_obj} ||= new Bugzilla::Product({name => $self->{product}});
# Fiddle the product list.
my $seen_curr_prod;
my @prodlist;
foreach my $product (@::enterable_products) {
if ($product eq $self->{'product'}) {
# if it's the product the bug is already in, it's ALWAYS in
# the popup, period, whether the user can see it or not, and
# regardless of the disallownew setting.
$seen_curr_prod = 1;
push(@prodlist, $product);
next;
}
if (!Bugzilla->user->can_enter_product($product)) {
# If we're using bug groups to restrict entry on products, and
# this product has an entry group, and the user is not in that
# group, we don't want to include that product in this list.
next;
}
push(@prodlist, $product);
}
my @prodlist = map {$_->name} @{Bugzilla->user->get_enterable_products};
# The current product is part of the popup, even if new bugs are no longer
# allowed for that product
if (!$seen_curr_prod) {
push (@prodlist, $self->{'product'});
if (lsearch(\@prodlist, $self->{'product'}) < 0) {
push(@prodlist, $self->{'product'});
@prodlist = sort @prodlist;
}
@ -683,9 +661,9 @@ sub choices {
'op_sys' => \@::legal_opsys,
'bug_status' => \@::legal_bug_status,
'resolution' => \@res,
'component' => $::components{$self->{product}},
'component' => [map($_->name, @{$self->{prod_obj}->components})],
'version' => [map($_->name, @{$self->{prod_obj}->versions})],
'target_milestone' => $::target_milestone{$self->{product}},
'target_milestone' => [map($_->name, @{$self->{prod_obj}->milestones})],
};
return $self->{'choices'};

Просмотреть файл

@ -46,13 +46,10 @@ use Bugzilla::Keyword;
# Include the Bugzilla CGI and general utility library.
require "globals.pl";
use vars qw(@components
@legal_platform
use vars qw(@legal_platform
@legal_priority
@legal_product
@legal_severity
@settable_resolution
@target_milestone);
@settable_resolution);
my $cgi = Bugzilla->cgi;
my $dbh = Bugzilla->dbh;

Просмотреть файл

@ -67,8 +67,6 @@ else {
my $dbh = Bugzilla->switch_to_shadow_db();
use vars qw (@legal_product);
my %dbmcount;
my %count;
my %before;

Просмотреть файл

@ -52,7 +52,6 @@ use vars qw(
@legal_platform
@legal_priority
@legal_severity
%target_milestone
);
# If we're using bug groups to restrict bug entry, we need to know who the
@ -317,9 +316,9 @@ GetVersionTable();
my $product_id = get_product_id($product);
if (1 == @{$::components{$product}}) {
if (scalar(@{$prod_obj->components}) == 1) {
# Only one component; just pick it.
$cgi->param('component', $::components{$product}->[0]);
$cgi->param('component', $prod_obj->components->[0]->name);
}
my @components;
@ -464,7 +463,7 @@ trick_taint($product);
# Get list of milestones.
if ( Param('usetargetmilestone') ) {
$vars->{'target_milestone'} = $::target_milestone{$product};
$vars->{'target_milestone'} = [map($_->name, @{$prod_obj->milestones})];
if (formvalue('target_milestone')) {
$default{'target_milestone'} = formvalue('target_milestone');
} else {

Просмотреть файл

@ -38,20 +38,17 @@ use Bugzilla::Util;
use Bugzilla::Config qw(:DEFAULT ChmodDataFile $localconfig $datadir);
use Bugzilla::User;
use Bugzilla::Error;
use Bugzilla::Product;
# Shut up misguided -w warnings about "used only once". For some reason,
# "use vars" chokes on me when I try it here.
sub globals_pl_sillyness {
my $zz;
$zz = @main::enterable_products;
$zz = @main::legal_bug_status;
$zz = @main::legal_opsys;
$zz = @main::legal_platform;
$zz = @main::legal_priority;
$zz = @main::legal_severity;
$zz = @main::milestoneurl;
$zz = @main::prodmaxvotes;
}
@ -103,50 +100,10 @@ sub GenerateVersionTable {
my $dbh = Bugzilla->dbh;
my @line;
SendSQL("SELECT components.name, products.name " .
"FROM components, products " .
"WHERE products.id = components.product_id " .
"ORDER BY components.name");
while (@line = FetchSQLData()) {
my ($c,$p) = (@line);
if (!defined $::components{$p}) {
$::components{$p} = [];
}
my $ref = $::components{$p};
push @$ref, $c;
}
SendSQL("SELECT products.name, classifications.name " .
"FROM products, classifications " .
"WHERE classifications.id = products.classification_id " .
"ORDER BY classifications.name");
while (@line = FetchSQLData()) {
my ($p,$c) = (@line);
if (!defined $::classifications{$c}) {
$::classifications{$c} = [];
}
my $ref = $::classifications{$c};
push @$ref, $p;
}
my $dotargetmilestone = 1; # This used to check the param, but there's
# enough code that wants to pretend we're using
# target milestones, even if they don't get
# shown to the user. So we cache all the data
# about them anyway.
my $mpart = $dotargetmilestone ? ", milestoneurl" : "";
SendSQL("SELECT name, votesperuser, disallownew$mpart " .
SendSQL("SELECT name, votesperuser " .
"FROM products ORDER BY name");
while (@line = FetchSQLData()) {
my ($p, $votesperuser, $dis, $u) = (@line);
if (!$dis && scalar($::components{$p})) {
push @::enterable_products, $p;
}
if ($dotargetmilestone) {
$::milestoneurl{$p} = $u;
}
my ($p, $votesperuser) = (@line);
$::prodmaxvotes{$p} = $votesperuser;
}
@ -197,15 +154,6 @@ sub GenerateVersionTable {
print $fh (Data::Dumper->Dump([\@::log_columns],
['*::log_columns']));
my @legal_products = map($_->name, Bugzilla::Product::get_all_products());
foreach my $i (@legal_products) {
if (!defined $::components{$i}) {
$::components{$i} = [];
}
}
print $fh (Data::Dumper->Dump([\%::components],
['*::components']));
print $fh (Data::Dumper->Dump([\@::legal_priority, \@::legal_severity,
\@::legal_platform, \@::legal_opsys,
\@::legal_bug_status, \@::legal_resolution],
@ -213,33 +161,8 @@ sub GenerateVersionTable {
'*::legal_platform', '*::legal_opsys',
'*::legal_bug_status', '*::legal_resolution']));
print $fh (Data::Dumper->Dump([\@::settable_resolution,
\%::classifications,
\@::enterable_products, \%::prodmaxvotes],
['*::settable_resolution',
'*::classifications',
'*::enterable_products', '*::prodmaxvotes']));
if ($dotargetmilestone) {
# reading target milestones in from the database - matthew@zeroknowledge.com
SendSQL("SELECT milestones.value, products.name " .
"FROM milestones, products " .
"WHERE products.id = milestones.product_id " .
"ORDER BY milestones.sortkey, milestones.value");
my @line;
while(@line = FetchSQLData()) {
my ($tm, $pr) = (@line);
if (!defined $::target_milestone{$pr}) {
$::target_milestone{$pr} = [];
}
push @{$::target_milestone{$pr}}, $tm;
}
print $fh (Data::Dumper->Dump([\%::target_milestone,
\%::milestoneurl],
['*::target_milestone',
'*::milestoneurl']));
}
print $fh (Data::Dumper->Dump([\@::settable_resolution, \%::prodmaxvotes],
['*::settable_resolution', '*::prodmaxvotes']));
print $fh "1;\n";
close $fh;

Просмотреть файл

@ -40,12 +40,10 @@ use Bugzilla::Keyword;
# "use vars" chokes on me when I try it here.
sub sillyness {
my $zz;
$zz = %::components;
$zz = @::legal_opsys;
$zz = @::legal_platform;
$zz = @::legal_priority;
$zz = @::legal_severity;
$zz = %::target_milestone;
}
my $user = Bugzilla->login(LOGIN_REQUIRED);
@ -227,9 +225,10 @@ check_field('op_sys', scalar $cgi->param('op_sys'), \@::legal_opsys)
check_field('bug_status', scalar $cgi->param('bug_status'), ['UNCONFIRMED', 'NEW']);
check_field('version', scalar $cgi->param('version'),
[map($_->name, @{$prod_obj->versions})]);
check_field('component', scalar $cgi->param('component'), $::components{$product});
check_field('component', scalar $cgi->param('component'),
[map($_->name, @{$prod_obj->components})]);
check_field('target_milestone', scalar $cgi->param('target_milestone'),
$::target_milestone{$product});
[map($_->name, @{$prod_obj->milestones})]);
foreach my $field_name ('assigned_to', 'bug_file_loc', 'comment') {
defined($cgi->param($field_name))

Просмотреть файл

@ -65,13 +65,10 @@ use Bugzilla::FlagType;
# Shut up misguided -w warnings about "used only once":
use vars qw(@legal_product
%components
%legal_opsys
use vars qw(%legal_opsys
%legal_platform
%legal_priority
%settable_resolution
%target_milestone
%legal_severity
);
@ -339,16 +336,18 @@ if (((defined $cgi->param('id') && $cgi->param('product') ne $oldproduct)
# worthy of a comment, perhaps.
#
my @version_names = map($_->name, @{$prod_obj->versions});
my @component_names = map($_->name, @{$prod_obj->components});
my $vok = lsearch(\@version_names, $cgi->param('version')) >= 0;
my $cok = lsearch($::components{$prod}, $cgi->param('component')) >= 0;
my $cok = lsearch(\@component_names, $cgi->param('component')) >= 0;
my $mok = 1; # so it won't affect the 'if' statement if milestones aren't used
my @milestone_names = ();
if ( Param("usetargetmilestone") ) {
defined($cgi->param('target_milestone'))
|| ThrowCodeError('undefined_field', { field => 'target_milestone' });
$mok = lsearch($::target_milestone{$prod},
$cgi->param('target_milestone')) >= 0;
@milestone_names = map($_->name, @{$prod_obj->milestones});
$mok = lsearch(\@milestone_names, $cgi->param('target_milestone')) >= 0;
}
# If the product-specific fields need to be verified, or we need to verify
@ -367,13 +366,13 @@ if (((defined $cgi->param('id') && $cgi->param('product') ne $oldproduct)
if ($vok) {
$defaults{'version'} = $cgi->param('version');
}
$vars->{'components'} = $::components{$prod};
$vars->{'components'} = \@component_names;
if ($cok) {
$defaults{'component'} = $cgi->param('component');
}
if (Param("usetargetmilestone")) {
$vars->{'use_target_milestone'} = 1;
$vars->{'milestones'} = $::target_milestone{$prod};
$vars->{'milestones'} = \@milestone_names;
if ($mok) {
$defaults{'target_milestone'} = $cgi->param('target_milestone');
} else {
@ -611,12 +610,12 @@ if (defined $cgi->param('id')) {
# is more work in the current architecture of this script...)
my $prod_obj = Bugzilla::Product::check_product($cgi->param('product'));
check_field('component', scalar $cgi->param('component'),
\@{$::components{$cgi->param('product')}});
[map($_->name, @{$prod_obj->components})]);
check_field('version', scalar $cgi->param('version'),
[map($_->name, @{$prod_obj->versions})]);
if ( Param("usetargetmilestone") ) {
check_field('target_milestone', scalar $cgi->param('target_milestone'),
\@{$::target_milestone{$cgi->param('product')}});
[map($_->name, @{$prod_obj->milestones})]);
}
check_field('rep_platform', scalar $cgi->param('rep_platform'), \@::legal_platform);
check_field('op_sys', scalar $cgi->param('op_sys'), \@::legal_opsys);
@ -1473,7 +1472,7 @@ foreach my $id (@idlist) {
# whether we do LOW_PRIORITY ...
$dbh->bz_lock_tables("bugs $write", "bugs_activity $write", "cc $write",
"profiles READ", "dependencies $write", "votes $write",
"products READ", "components READ",
"products READ", "components READ", "milestones READ",
"keywords $write", "longdescs $write", "fielddefs READ",
"bug_group_map $write", "flags $write", "duplicates $write",
"user_group_map READ", "group_group_map READ", "flagtypes READ",
@ -1568,7 +1567,8 @@ foreach my $id (@idlist) {
if ($requiremilestone) {
# musthavemilestoneonaccept applies only if at least two
# target milestones are defined for the current product.
my $nb_milestones = scalar(@{$::target_milestone{$oldhash{'product'}}});
my $prod_obj = new Bugzilla::Product({'name' => $oldhash{'product'}});
my $nb_milestones = scalar(@{$prod_obj->milestones});
if ($nb_milestones > 1) {
my $value = $cgi->param('target_milestone');
if (!defined $value || $value eq $cgi->param('dontchange')) {

Просмотреть файл

@ -40,7 +40,6 @@ use lib qw(.);
use Bugzilla::Config qw(:DEFAULT $datadir);
require "globals.pl";
use vars qw(@legal_product); # globals from er, globals.pl
eval "use GD";
$@ && ThrowCodeError("gd_not_installed");