From 947f2948bc03db13a3be41118c4c2a4265ca6b2a Mon Sep 17 00:00:00 2001 From: Alex Schuilenburg Date: Wed, 2 Dec 2015 13:51:39 +0100 Subject: Bug 1219276: Creating a new group fails if a custom extension adds entries to group_control_map and "insertnew" is selected r=LpSolit a=dkl --- Bugzilla/Group.pm | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) (limited to 'Bugzilla') 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 normally does, this function also makes the new group be inherited -by the C group. That is, the C group will automatically -be a member of this group. +by the C group and optionally inserts access controls for +this group into all existing products. That is, the C 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 -- cgit v1.2.1