summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Bugzilla/Bug.pm6
-rw-r--r--Bugzilla/Product.pm32
-rw-r--r--Bugzilla/User.pm2
-rwxr-xr-xcollectstats.pl18
-rwxr-xr-xconfig.cgi2
-rwxr-xr-xeditflagtypes.cgi3
-rwxr-xr-xenter_bug.cgi7
-rwxr-xr-xrequest.cgi2
-rw-r--r--template/en/default/global/user-error.html.tmpl13
9 files changed, 26 insertions, 59 deletions
diff --git a/Bugzilla/Bug.pm b/Bugzilla/Bug.pm
index 7d86fe328..ed302a053 100644
--- a/Bugzilla/Bug.pm
+++ b/Bugzilla/Bug.pm
@@ -1649,10 +1649,8 @@ sub _check_product {
}
# Check that the product exists and that the user
# is allowed to enter bugs into this product.
- Bugzilla->user->can_enter_product($name, THROW_ERROR);
- # can_enter_product already does everything that check_product
- # would do for us, so we don't need to use it.
- return new Bugzilla::Product({ name => $name });
+ my $product = Bugzilla->user->can_enter_product($name, THROW_ERROR);
+ return $product;
}
sub _check_priority {
diff --git a/Bugzilla/Product.pm b/Bugzilla/Product.pm
index 80e1752e6..e61b3b577 100644
--- a/Bugzilla/Product.pm
+++ b/Bugzilla/Product.pm
@@ -812,26 +812,17 @@ sub classification_id { return $_[0]->{'classification_id'}; }
#### Subroutines ######
###############################
-sub check_product {
- my ($product_name) = @_;
-
- unless ($product_name) {
- ThrowUserError('product_not_specified');
- }
- my $product = new Bugzilla::Product({name => $product_name});
- unless ($product) {
- ThrowUserError('product_doesnt_exist',
- {'product' => $product_name});
- }
- return $product;
-}
-
sub check {
my ($class, $params) = @_;
$params = { name => $params } if !ref $params;
- $params->{_error} = 'product_access_denied';
+ if (!$params->{allow_inaccessible}) {
+ $params->{_error} = 'product_access_denied';
+ }
my $product = $class->SUPER::check($params);
- if (!Bugzilla->user->can_access_product($product)) {
+
+ if (!$params->{allow_inaccessible}
+ && !Bugzilla->user->can_access_product($product))
+ {
ThrowUserError('product_access_denied', $params);
}
return $product;
@@ -1052,15 +1043,6 @@ than calling those accessors on every item in the array individually.
This function is not exported, so must be called like
C<Bugzilla::Product::preload($products)>.
-=item C<check_product($product_name)>
-
- Description: Checks if the product name was passed in and if is a valid
- product.
-
- Params: $product_name - String with a product name.
-
- Returns: Bugzilla::Product object.
-
=back
=head1 SEE ALSO
diff --git a/Bugzilla/User.pm b/Bugzilla/User.pm
index b9405e412..78e92eca0 100644
--- a/Bugzilla/User.pm
+++ b/Bugzilla/User.pm
@@ -985,7 +985,7 @@ sub check_can_admin_product {
my ($self, $product_name) = @_;
# First make sure the product name is valid.
- my $product = Bugzilla::Product::check_product($product_name);
+ my $product = Bugzilla::Product->check($product_name);
($self->in_group('editcomponents', $product->id)
&& $self->can_see_product($product->name))
diff --git a/collectstats.pl b/collectstats.pl
index 733a1e4f1..af055ab32 100755
--- a/collectstats.pl
+++ b/collectstats.pl
@@ -70,9 +70,6 @@ if ($#ARGV >= 0 && $ARGV[0] eq "--regenerate") {
my $datadir = bz_locations()->{'datadir'};
-my @myproducts = map {$_->name} Bugzilla::Product->get_all;
-unshift(@myproducts, "-All-");
-
# As we can now customize statuses and resolutions, looking at the current list
# of legal values only is not enough as some now removed statuses and resolutions
# may have existed in the past, or have been renamed. We want them all.
@@ -142,6 +139,10 @@ if ($regenerate) {
}
my $tstart = time;
+
+my @myproducts = Bugzilla::Product->get_all;
+unshift(@myproducts, "-All-");
+
foreach (@myproducts) {
my $dir = "$datadir/mining";
@@ -173,11 +174,11 @@ sub collect_stats {
my $product = shift;
my $when = localtime (time);
my $dbh = Bugzilla->dbh;
-
my $product_id;
- if ($product ne '-All-') {
- my $prod = Bugzilla::Product::check_product($product);
- $product_id = $prod->id;
+
+ if (ref $product) {
+ $product_id = $product->id;
+ $product = $product->name;
}
# NB: Need to mangle the product for the filename, but use the real
@@ -312,6 +313,9 @@ sub regenerate_stats {
# NB: Need to mangle the product for the filename, but use the real
# product name in the query
+ if (ref $product) {
+ $product = $product->name;
+ }
my $file_product = $product;
$file_product =~ s/\//-/gs;
my $file = join '/', $dir, $file_product;
diff --git a/config.cgi b/config.cgi
index 2e1746ac2..d52c6b6c1 100755
--- a/config.cgi
+++ b/config.cgi
@@ -69,7 +69,7 @@ $vars->{'custom_fields'} =
if ($cgi->param('product')) {
my @products = $cgi->param('product');
foreach my $product_name (@products) {
- # We don't use check_product because config.cgi outputs mostly
+ # We don't use check() because config.cgi outputs mostly
# in XML and JS and we don't want to display an HTML error
# instead of that.
my $product = new Bugzilla::Product({ name => $product_name });
diff --git a/editflagtypes.cgi b/editflagtypes.cgi
index a0e64957b..c09d0edb0 100755
--- a/editflagtypes.cgi
+++ b/editflagtypes.cgi
@@ -595,7 +595,8 @@ sub validateProduct {
my $product_name = shift;
return unless $product_name;
- my $product = Bugzilla::Product::check_product($product_name);
+ my $product = Bugzilla::Product->check({ name => $product_name,
+ allow_inaccessible => 1 });
return $product;
}
diff --git a/enter_bug.cgi b/enter_bug.cgi
index 64b239628..b1889cd03 100755
--- a/enter_bug.cgi
+++ b/enter_bug.cgi
@@ -153,15 +153,10 @@ if ($product_name eq '') {
$product = $enterable_products[0];
}
}
-else {
- # Do not use Bugzilla::Product::check_product() here, else the user
- # could know whether the product doesn't exist or is not accessible.
- $product = new Bugzilla::Product({'name' => $product_name});
-}
# We need to check and make sure that the user has permission
# to enter a bug against this product.
-$user->can_enter_product($product ? $product->name : $product_name, THROW_ERROR);
+$product = $user->can_enter_product($product || $product_name, THROW_ERROR);
##############################################################################
# Useful Subroutines
diff --git a/request.cgi b/request.cgi
index 2dd12c49b..16d7662e8 100755
--- a/request.cgi
+++ b/request.cgi
@@ -208,7 +208,7 @@ sub queue {
# Filter results by exact product or component.
if (defined $cgi->param('product') && $cgi->param('product') ne "") {
- my $product = Bugzilla::Product::check_product(scalar $cgi->param('product'));
+ my $product = Bugzilla::Product->check(scalar $cgi->param('product'));
push(@criteria, "bugs.product_id = " . $product->id);
push(@excluded_columns, 'product') unless $cgi->param('do_union');
if (defined $cgi->param('component') && $cgi->param('component') ne "") {
diff --git a/template/en/default/global/user-error.html.tmpl b/template/en/default/global/user-error.html.tmpl
index 91211d56b..b57792fd2 100644
--- a/template/en/default/global/user-error.html.tmpl
+++ b/template/en/default/global/user-error.html.tmpl
@@ -1328,10 +1328,6 @@
[% END %]
does not exist or you don't have access to it.
- [% ELSIF error == "product_doesnt_exist" %]
- [% title = "Specified Product Does Not Exist" %]
- The product '[% product FILTER html %]' does not exist.
-
[% ELSIF error == "product_illegal_group" %]
[% title = "Illegal Group" %]
[% group.name FILTER html %] is not an active [% terms.bug %] group
@@ -1401,15 +1397,6 @@
'versions.html' => 'Administering versions'} %]
You must enter a valid version to create a new product.
- [% ELSIF error == "product_not_specified" %]
- [% title = "No Product Specified" %]
- [% admindocslinks = {'products.html' => 'Administering products',
- 'components.html' => 'Administering components',
- 'milestones.html' => 'Administering milestones',
- 'versions.html' => 'Administering versions'} %]
- No product specified when trying to edit components, milestones, versions
- or product.
-
[% ELSIF error == "query_name_exists" %]
[% title = "Search Name Already In Use" %]
The name <em>[% name FILTER html %]</em> is already used by another