diff options
author | Simon Green <sgreen@redhat.com> | 2014-07-02 03:20:43 +0200 |
---|---|---|
committer | Simon Green <sgreen@redhat.com> | 2014-07-02 03:20:43 +0200 |
commit | 2db042923b438c26e2f9683f129d24b4632f8b29 (patch) | |
tree | 37250cf85dd7cdfddbc3cfd120193a70641ed441 /Bugzilla/User.pm | |
parent | dbd6f8f6de86841c7dd5e4474fbba0cbb337f8ab (diff) | |
download | bugzilla-2db042923b438c26e2f9683f129d24b4632f8b29.tar.gz bugzilla-2db042923b438c26e2f9683f129d24b4632f8b29.tar.xz |
Bug 469196 - WebService function to update a user's group membership
r=glob, a=glob
Diffstat (limited to 'Bugzilla/User.pm')
-rw-r--r-- | Bugzilla/User.pm | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/Bugzilla/User.pm b/Bugzilla/User.pm index 2631a5eae..55a967796 100644 --- a/Bugzilla/User.pm +++ b/Bugzilla/User.pm @@ -25,6 +25,7 @@ use DateTime::TimeZone; use List::Util qw(max); use List::MoreUtils qw(any); use Scalar::Util qw(blessed); +use Storable qw(dclone); use URI; use URI::QueryParam; @@ -374,7 +375,8 @@ sub _set_groups { WHERE user_id = ? AND isbless = ? AND grant_type = ?}, undef, $self->id, $is_bless, GRANT_DIRECT); - my $new_groups = my $current_groups = Bugzilla::Group->new_from_list($ids); + my $current_groups = Bugzilla::Group->new_from_list($ids); + my $new_groups = dclone($current_groups); # Record the changes if (exists $changes->{set}) { @@ -390,10 +392,10 @@ sub _set_groups { } } else { - foreach my $group (@{$changes->{removed} // []}) { + foreach my $group (@{$changes->{remove} // []}) { @$new_groups = grep { $_->id ne $group->id } @$new_groups; } - foreach my $group (@{$changes->{added} // []}) { + foreach my $group (@{$changes->{add} // []}) { push @$new_groups, $group unless grep { $_->id eq $group->id } @$new_groups; } |