]> git.ipfire.org Git - thirdparty/bugzilla.git/commitdiff
Bug 519835: Remove Bugzilla::Product::check_product() in favor of Bugzilla::Product...
authorFrédéric Buclin <LpSolit@gmail.com>
Wed, 7 Jul 2010 01:58:10 +0000 (03:58 +0200)
committerFrédéric Buclin <LpSolit@gmail.com>
Wed, 7 Jul 2010 01:58:10 +0000 (03:58 +0200)
r=mkanat a=LpSolit

Bugzilla/Bug.pm
Bugzilla/Product.pm
Bugzilla/User.pm
collectstats.pl
config.cgi
editflagtypes.cgi
enter_bug.cgi
request.cgi
template/en/default/global/user-error.html.tmpl

index 7d86fe328896278ff23e1316c1d1e05856991a13..ed302a05312a20adf4dac4e258c32682ef6f08a6 100644 (file)
@@ -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 {
index 80e1752e64467e14a044e2957c06f3fbf864027d..e61b3b5778c9c1209cbeb50966a9412d26a27e9c 100644 (file)
@@ -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
index b9405e4121cdd2b6d3e774a820c623ca216df69d..78e92eca01f7d8aef047df06f818538b8308d920 100644 (file)
@@ -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))
index 733a1e4f13de621c15f37605444a91f372b70c2d..af055ab32c0d46eb4c9aea75297905d0afa645bf 100755 (executable)
@@ -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;
index 2e1746ac22980cc192ad27cea1b6e0798a1246d6..d52c6b6c1b146da1998dcd44c9b8a61209081e1d 100755 (executable)
@@ -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 });
index a0e64957b00edd6194731bf810e428ec5c37d10d..c09d0edb040b3ae41cac2a7d42dd46f6d08b9e45 100755 (executable)
@@ -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;
 }
 
index 64b2396282e2b67b51611188cf496bee83d429a1..b1889cd03339d994e8b3f4c0a832545ab54b1a6f 100755 (executable)
@@ -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
index 2dd12c49b98c9139b895710a926dbb9b118c2ce4..16d7662e8079b6613254c912b6fdd5e048739b66 100755 (executable)
@@ -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 "") {
index 91211d56bb8446eb08537377d6b4050b0d04deae..b57792fd2996040f6cfcb26a74e83a1f1e84de11 100644 (file)
     [% 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
                          '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