Merge branch 'master' of git.freeside.biz:/home/git/freeside
[freeside.git] / rt / etc / upgrade / 4.0.1 / content
1 @Initial = (
2     sub {
3         use strict;
4         $RT::Logger->debug('Removing all delegated rights');
5
6         my $acl = RT::ACL->new(RT->SystemUser);
7         my $groupjoin = $acl->NewAlias('Groups');
8         $acl->Join( ALIAS1 => 'main',
9                     FIELD1 => 'PrincipalId',
10                     ALIAS2 => $groupjoin,
11                     FIELD2 => 'id'
12                   );
13         $acl->Limit( ALIAS           => $groupjoin,
14                      FIELD           => 'Domain',
15                      OPERATOR        => '=',
16                      VALUE           => 'Personal',
17                     );
18
19         while ( my $ace = $acl->Next ) {
20             my ( $ok, $msg ) = $ace->Delete();
21
22             if ( !$ok ) {
23                 $RT::Logger->warn( "Unable to delete ACE " . $ace->id . ": " . $msg );
24             }
25         }
26
27         my $groups = RT::Groups->new(RT->SystemUser);
28         $groups->Limit( FIELD    => 'Domain',
29                         OPERATOR => '=',
30                         VALUE    => 'Personal'
31                       );
32         while ( my $group = $groups->Next ) {
33             my $members = $group->MembersObj();
34             while ( my $member = $members->Next ) {
35                 my ( $ok, $msg ) = $group->DeleteMember( $member->MemberId );
36                 if ( !$ok ) {
37                     $RT::Logger->warn(   "Unable to remove group member "
38                                        . $member->id . ": "
39                                        . $msg );
40                 }
41             }
42             $group->PrincipalObj->Delete;
43             $group->RT::Record::Delete();
44         }
45     },
46     sub {
47         use strict;
48         $RT::Logger->debug('Removing all Delegate and PersonalGroup rights');
49
50         my $acl = RT::ACL->new(RT->SystemUser);
51         for my $right (qw/AdminOwnPersonalGroups AdminAllPersonalGroups DelegateRights/) {
52             $acl->Limit( FIELD => 'RightName', VALUE => $right );
53         }
54
55         while ( my $ace = $acl->Next ) {
56             my ( $ok, $msg ) = $ace->Delete();
57             $RT::Logger->debug("Removing ACE ".$ace->id." for right ".$ace->__Value('RightName'));
58
59             if ( !$ok ) {
60                 $RT::Logger->warn( "Unable to delete ACE " . $ace->id . ": " . $msg );
61             }
62         }
63     },
64     sub {
65         use strict;
66         $RT::Logger->debug('Removing unimplemented RejectTicket and ModifyTicketStatus rights');
67
68         my $acl = RT::ACL->new(RT->SystemUser);
69         for my $right (qw/RejectTicket ModifyTicketStatus/) {
70             $acl->Limit( FIELD => 'RightName', VALUE => $right );
71         }
72
73         while ( my $ace = $acl->Next ) {
74             my ( $ok, $msg ) = $ace->Delete();
75             $RT::Logger->debug("Removing ACE ".$ace->id." for right ".$ace->__Value('RightName'));
76
77             if ( !$ok ) {
78                 $RT::Logger->warn( "Unable to delete ACE " . $ace->id . ": " . $msg );
79             }
80         }
81     },
82 );
83