# HG changeset patch # User Matthias Förste foerste@schlittermann.de # Date 1323699234 -3600 # Node ID 3293084cfdd98e702a8912bc876e54c827bc041a # Parent df896a01960dba9cc9b013ae52322665a83a00da allow adding and removing to acl group list diff -r df896a01960d -r 3293084cfdd9 account.pm --- a/account.pm Sun Dec 11 22:36:33 2011 +0100 +++ b/account.pm Mon Dec 12 15:13:54 2011 +0100 @@ -322,7 +322,26 @@ } if ( defined $Cf->aclgroups ) { - $e->replace( (AT_ACLGROUPS) => $Cf->aclgroups ); + + my $ag = $Cf->aclgroups; + + if ($ag =~ /(^|,\s*)[+-]/) { + my %x; + @x{split /,/, $e->get_value(AT_ACLGROUPS)} = (); + for (split /,/, $ag) { + if (s/^-//) { + delete $x{$_}; + } else { + s/^\+//; + $x{$_} = undef; + } + } + + $ag = join ',', sort keys %x; + + } + + $e->replace( (AT_ACLGROUPS) => $ag ); $modified++; }