diff options
Diffstat (limited to 'rt/etc/upgrade/3.9.2/content')
-rw-r--r-- | rt/etc/upgrade/3.9.2/content | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/rt/etc/upgrade/3.9.2/content b/rt/etc/upgrade/3.9.2/content new file mode 100644 index 000000000..d0dbbfd0a --- /dev/null +++ b/rt/etc/upgrade/3.9.2/content @@ -0,0 +1,48 @@ +@Initial = ( + sub { + use strict; + $RT::Logger->debug('Removing all delegated rights'); + + my $acl = RT::ACL->new(RT->SystemUser); + $acl->Limit( CLAUSE => 'search', + FIELD => 'DelegatedBy', + OPERATOR => '>', + VALUE => '0' + ); + $acl->Limit( CLAUSE => 'search', + FIELD => 'DelegatedFrom', + OPERATOR => '>', + VALUE => '0', + ENTRYAGGREGATOR => 'OR', + ); + + while ( my $ace = $acl->Next ) { + my ( $ok, $msg ) = $ace->Delete(); + + if ( !$ok ) { + $RT::Logger->warn( + "Unable to delete ACE " . $ace->id . ": " . $msg ); + } + } + + my $groups = RT::Groups->new(RT->SystemUser); + $groups->Limit( FIELD => 'Domain', + OPERATOR => '=', + VALUE => 'Personal' + ); + while ( my $group = $groups->Next ) { + my $members = $group->MembersObj(); + while ( my $member = $members->Next ) { + my ( $ok, $msg ) = $group->DeleteMember( $member->MemberId ); + if ( !$ok ) { + $RT::Logger->warn( "Unable to remove group member " + . $member->id . ": " + . $msg ); + } + } + $group->PrincipalObj->Delete; + $group->RT::Record::Delete(); + } + }, +); + |