summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlex Schuilenburg <alex@schuilenburg.org>2015-12-02 13:50:04 +0100
committerFrédéric Buclin <LpSolit@gmail.com>2015-12-02 13:50:04 +0100
commitcb36753dc1de6712349cd03006fa6f3514ee4122 (patch)
tree733f243d571e6fc81ff0a2ec3488a829fa726ca7
parentb94ffcb1f443efa0c790441853984ea5aa5e4c31 (diff)
downloadbugzilla-cb36753dc1de6712349cd03006fa6f3514ee4122.tar.gz
bugzilla-cb36753dc1de6712349cd03006fa6f3514ee4122.tar.xz
Bug 1219276: Creating a new group fails if a custom extension adds entries to group_control_map and "insertnew" is selected
r=LpSolit
-rw-r--r--Bugzilla/Group.pm16
-rwxr-xr-xeditgroups.cgi8
2 files changed, 15 insertions, 9 deletions
diff --git a/Bugzilla/Group.pm b/Bugzilla/Group.pm
index 07b78e366..f7a50f7f1 100644
--- a/Bugzilla/Group.pm
+++ b/Bugzilla/Group.pm
@@ -383,6 +383,7 @@ sub create {
my $dbh = Bugzilla->dbh;
my $silently = delete $params->{silently};
+ my $use_in_all_products = delete $params->{use_in_all_products};
if (Bugzilla->usage_mode == USAGE_MODE_CMDLINE and !$silently) {
print get_text('install_group_create', { name => $params->{name} }),
"\n";
@@ -406,6 +407,14 @@ sub create {
$sth->execute($admin->id, $group->id, GROUP_VISIBLE);
}
+ # Permit all existing products to use the new group if requested.
+ if ($use_in_all_products) {
+ $dbh->do('INSERT INTO group_control_map
+ (group_id, product_id, membercontrol, othercontrol)
+ SELECT ?, products.id, ?, ? FROM products',
+ undef, ($group->id, CONTROLMAPSHOWN, CONTROLMAPNA));
+ }
+
$group->_rederive_regexp() if $group->user_regexp;
Bugzilla::Hook::process('group_end_of_create', { group => $group });
@@ -524,8 +533,11 @@ provides, in addition to any methods documented below.
Note that in addition to what L<Bugzilla::Object/create($params)>
normally does, this function also makes the new group be inherited
-by the C<admin> group. That is, the C<admin> group will automatically
-be a member of this group.
+by the C<admin> group and optionally inserts access controls for
+this group into all existing products. That is, the C<admin> group
+will automatically be a member of this group and bugs for all
+products may optionally be restricted to this group by group
+members.
=item C<ValidateGroupName($name, @users)>
diff --git a/editgroups.cgi b/editgroups.cgi
index e39eb6c87..35989b954 100755
--- a/editgroups.cgi
+++ b/editgroups.cgi
@@ -194,15 +194,9 @@ if ($action eq 'new') {
isactive => scalar $cgi->param('isactive'),
icon_url => scalar $cgi->param('icon_url'),
isbuggroup => 1,
+ use_in_all_products => scalar $cgi->param('insertnew'),
});
- # Permit all existing products to use the new group if requested.
- if ($cgi->param('insertnew')) {
- $dbh->do('INSERT INTO group_control_map
- (group_id, product_id, membercontrol, othercontrol)
- SELECT ?, products.id, ?, ? FROM products',
- undef, ($group->id, CONTROLMAPSHOWN, CONTROLMAPNA));
- }
delete_token($token);
$vars->{'message'} = 'group_created';