From 2db042923b438c26e2f9683f129d24b4632f8b29 Mon Sep 17 00:00:00 2001 From: Simon Green Date: Wed, 2 Jul 2014 11:20:43 +1000 Subject: Bug 469196 - WebService function to update a user's group membership r=glob, a=glob --- Bugzilla/User.pm | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) (limited to 'Bugzilla/User.pm') 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; } -- cgit v1.2.3-24-g4f1b