summaryrefslogtreecommitdiffstats
path: root/Bugzilla/User.pm
diff options
context:
space:
mode:
authorSimon Green <sgreen@redhat.com>2014-07-02 03:20:43 +0200
committerSimon Green <sgreen@redhat.com>2014-07-02 03:20:43 +0200
commit2db042923b438c26e2f9683f129d24b4632f8b29 (patch)
tree37250cf85dd7cdfddbc3cfd120193a70641ed441 /Bugzilla/User.pm
parentdbd6f8f6de86841c7dd5e4474fbba0cbb337f8ab (diff)
downloadbugzilla-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.pm8
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;
}