diff options
Diffstat (limited to 'Bugzilla/User.pm')
-rw-r--r-- | Bugzilla/User.pm | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/Bugzilla/User.pm b/Bugzilla/User.pm index f73dd06df..cf8de0274 100644 --- a/Bugzilla/User.pm +++ b/Bugzilla/User.pm @@ -800,6 +800,24 @@ sub can_set_flag { || $self->in_group_id($flag_type->grant_group->id)) ? 1 : 0; } +sub direct_group_membership { + my $self = shift; + my $dbh = Bugzilla->dbh; + + if (!$self->{'direct_group_membership'}) { + my $gid = $dbh->selectcol_arrayref('SELECT id + FROM groups + INNER JOIN user_group_map + ON groups.id = user_group_map.group_id + WHERE user_id = ? + AND isbless = 0', + undef, $self->id); + $self->{'direct_group_membership'} = Bugzilla::Group->new_from_list($gid); + } + return $self->{'direct_group_membership'}; +} + + # visible_groups_inherited returns a reference to a list of all the groups # whose members are visible to this user. sub visible_groups_inherited { @@ -2026,6 +2044,11 @@ is in any of the groups input to flatten_group_membership by querying the user_group_map for any user with DIRECT or REGEXP membership IN() the list of groups returned. +=item C<direct_group_membership> + +Returns a reference to an array of group objects. Groups the user belong to +by group inheritance are excluded from the list. + =item C<visible_groups_inherited> Returns a list of all groups whose members should be visible to this user. |