Check if the product is "open" explicitly in editproducts.cgi until we have a single "save" method
parent
d31c230159
commit
d3257ad482
|
@ -168,6 +168,7 @@ sub update
|
|||
my $self = shift;
|
||||
my $dbh = Bugzilla->dbh;
|
||||
|
||||
# This is for future when we'll have a single "save" (create/update) method
|
||||
my $is_new = !$self->id;
|
||||
|
||||
# Don't update the DB if something goes wrong below -> transaction.
|
||||
|
@ -277,31 +278,7 @@ sub update
|
|||
my $new_settings = $self->group_controls;
|
||||
my $timestamp = $dbh->selectrow_array('SELECT NOW()');
|
||||
|
||||
if (Bugzilla->config->{forbid_open_products})
|
||||
{
|
||||
my $has_mandatory = 0;
|
||||
my $has_entry = 0;
|
||||
foreach my $gid (keys %$new_settings)
|
||||
{
|
||||
if ($new_settings->{$gid}->{entry})
|
||||
{
|
||||
$has_entry = 1;
|
||||
}
|
||||
if ($new_settings->{$gid}->{membercontrol} == CONTROLMAPMANDATORY &&
|
||||
$new_settings->{$gid}->{othercontrol} == CONTROLMAPMANDATORY)
|
||||
{
|
||||
$has_mandatory = 1;
|
||||
}
|
||||
}
|
||||
if (!$has_mandatory)
|
||||
{
|
||||
ThrowUserError('product_mandatory_group_required');
|
||||
}
|
||||
if (!$has_entry)
|
||||
{
|
||||
ThrowUserError('product_entry_group_required');
|
||||
}
|
||||
}
|
||||
$self->check_open_product;
|
||||
|
||||
foreach my $gid (keys %$new_settings)
|
||||
{
|
||||
|
@ -440,6 +417,37 @@ sub update
|
|||
return $changes;
|
||||
}
|
||||
|
||||
sub check_open_product
|
||||
{
|
||||
my $self = shift;
|
||||
if (Bugzilla->params->{forbid_open_products})
|
||||
{
|
||||
my $new_settings = $self->group_controls;
|
||||
my $has_mandatory = 0;
|
||||
my $has_entry = 0;
|
||||
foreach my $gid (keys %$new_settings)
|
||||
{
|
||||
if ($new_settings->{$gid}->{entry})
|
||||
{
|
||||
$has_entry = 1;
|
||||
}
|
||||
if ($new_settings->{$gid}->{membercontrol} == CONTROLMAPMANDATORY &&
|
||||
$new_settings->{$gid}->{othercontrol} == CONTROLMAPMANDATORY)
|
||||
{
|
||||
$has_mandatory = 1;
|
||||
}
|
||||
}
|
||||
if (!$has_mandatory)
|
||||
{
|
||||
ThrowUserError('product_mandatory_group_required');
|
||||
}
|
||||
if (!$has_entry)
|
||||
{
|
||||
ThrowUserError('product_entry_group_required');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
sub remove_from_db
|
||||
{
|
||||
my ($self, $params) = @_;
|
||||
|
@ -660,9 +668,9 @@ sub _create_bug_group
|
|||
|
||||
# Associate the new group and new product.
|
||||
$dbh->do(
|
||||
'INSERT INTO group_control_map (group_id, product_id, membercontrol, othercontrol, editcomponents)'.
|
||||
' VALUES (?, ?, ?, ?, ?)', undef, $group->id, $self->id,
|
||||
($create_admin_group ? (0, 0, 1) : (CONTROLMAPMANDATORY, CONTROLMAPMANDATORY, 0))
|
||||
'INSERT INTO group_control_map (group_id, product_id, membercontrol, othercontrol, editcomponents, entry)'.
|
||||
' VALUES (?, ?, ?, ?, ?, ?)', undef, $group->id, $self->id,
|
||||
($create_admin_group ? (0, 0, 1, 0) : (CONTROLMAPMANDATORY, CONTROLMAPMANDATORY, 0, 1))
|
||||
);
|
||||
|
||||
# Grant current user permission to edit the new group and include him in it
|
||||
|
|
|
@ -189,6 +189,9 @@ if ($action eq 'new')
|
|||
$create_params{maxvotesperbug} = $ARGS->{maxvotesperbug};
|
||||
$create_params{votestoconfirm} = $ARGS->{votestoconfirm};
|
||||
}
|
||||
|
||||
Bugzilla->dbh->bz_start_transaction();
|
||||
|
||||
my $product = Bugzilla::Product->create(\%create_params);
|
||||
|
||||
# Create groups and series for the new product, if requested.
|
||||
|
@ -200,9 +203,11 @@ if ($action eq 'new')
|
|||
$product->_create_bug_group(1, $new_bug_group);
|
||||
}
|
||||
$product->_create_series() if $ARGS->{createseries};
|
||||
|
||||
$product->check_open_product();
|
||||
delete_token($token);
|
||||
|
||||
Bugzilla->dbh->bz_commit_transaction();
|
||||
|
||||
$vars->{message} = 'product_created';
|
||||
$vars->{product} = $product;
|
||||
if ($useclassification)
|
||||
|
|
Loading…
Reference in New Issue