Commit 2296f779 authored by lpsolit%gmail.com's avatar lpsolit%gmail.com

Bug 451716: Deleting a product does not remove its entries from the 'Series'…

Bug 451716: Deleting a product does not remove its entries from the 'Series' table - Patch by Fré©ric Buclin <LpSolit@gmail.com> r=gerv a=LpSolit
parent 717b3b5c
......@@ -376,7 +376,7 @@ sub update {
}
sub remove_from_db {
my $self = shift;
my ($self, $params) = @_;
my $user = Bugzilla->user;
my $dbh = Bugzilla->dbh;
......@@ -399,8 +399,31 @@ sub remove_from_db {
}
}
# XXX - This line can go away as soon as bug 427455 is fixed.
$dbh->do("DELETE FROM group_control_map WHERE product_id = ?", undef, $self->id);
if ($params->{delete_series}) {
my $series_ids =
$dbh->selectcol_arrayref('SELECT series_id
FROM series
INNER JOIN series_categories
ON series_categories.id = series.category
WHERE series_categories.name = ?',
undef, $self->name);
$dbh->do('DELETE FROM series WHERE ' . $dbh->sql_in('series_id', $series_ids));
# If no subcategory uses this product name, completely purge it.
my $in_use =
$dbh->selectrow_array('SELECT 1
FROM series
INNER JOIN series_categories
ON series_categories.id = series.subcategory
WHERE series_categories.name = ? ' .
$dbh->sql_limit(1),
undef, $self->name);
if (!$in_use) {
$dbh->do('DELETE FROM series_categories WHERE name = ?', undef, $self->name);
}
}
$dbh->do("DELETE FROM products WHERE id = ?", undef, $self->id);
$dbh->bz_commit_transaction();
......
......@@ -233,7 +233,7 @@ if ($action eq 'delete') {
my $product = $user->check_can_admin_product($product_name);
check_token_data($token, 'delete_product');
$product->remove_from_db;
$product->remove_from_db({ delete_series => scalar $cgi->param('delete_series')});
delete_token($token);
$vars->{'message'} = 'product_deleted';
......
......@@ -248,6 +248,11 @@
<p>Do you really want to delete this product?</p>
<form method="post" action="editproducts.cgi">
<input type="checkbox" id="delete_series" name="delete_series" value=1>
<label for="delete_series">
Delete all related series (you can also delete them later, by visiting
the <a href="chart.cgi?category=[% product.name FILTER html %]">New Charts page</a>.)
</label><p>
<input type="submit" id="delete" value="Yes, delete">
<input type="hidden" name="action" value="delete">
<input type="hidden" name="product" value="[% product.name FILTER html %]">
......
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