[Rt-commit] rt branch, 3.8-trunk, updated. a0dd23634b59e487b4856e3c95ee1e1727e4a305

Ruslan Zakirov ruz at bestpractical.com
Thu Jul 23 23:24:53 EDT 2009


The branch, 3.8-trunk has been updated
       via  a0dd23634b59e487b4856e3c95ee1e1727e4a305 (commit)
      from  e4ee679470175a71fbd6b4df4040e008da5e8ffa (commit)

Summary of changes:
 lib/RT/Shredder/Plugin/Users.pm |   27 +++++++++++++++++++++++++--
 1 files changed, 25 insertions(+), 2 deletions(-)

- Log -----------------------------------------------------------------
commit a0dd23634b59e487b4856e3c95ee1e1727e4a305
Author: Ruslan Zakirov <Ruslan.Zakirov at gmail.com>
Date:   Fri Jul 24 07:24:24 2009 +0400

    add option member_of in the Users shredder plugin

diff --git a/lib/RT/Shredder/Plugin/Users.pm b/lib/RT/Shredder/Plugin/Users.pm
index 102b39f..2565fc5 100644
--- a/lib/RT/Shredder/Plugin/Users.pm
+++ b/lib/RT/Shredder/Plugin/Users.pm
@@ -72,6 +72,13 @@ User name mask.
 
 Email address mask.
 
+=head2 member_of - group identifier
+
+Using this option users that are members of a particular group can
+be selected for deletion. Identifier is name of user defined group
+or id of a group, as well C<Privileged> or <unprivileged> can used
+to select people from system groups.
+
 =head2 replace_relations - user identifier
 
 When you delete user there are could be minor links to him in RT DB.
@@ -101,7 +108,7 @@ want to use C<replace_relations> option.
 sub SupportArgs
 {
     return $_[0]->SUPER::SupportArgs,
-           qw(status name email replace_relations no_tickets);
+           qw(status name email member_of replace_relations no_tickets);
 }
 
 sub TestArgs
@@ -121,6 +128,20 @@ sub TestArgs
     if( $args{'name'} ) {
         $args{'name'} = $self->ConvertMaskToSQL( $args{'name'} );
     }
+    if( $args{'member_of'} ) {
+        my $group = RT::Group->new( $RT::SystemUser );
+        if ( $args{'member_of'} =~ /^(Everyone|Privileged|Unprivileged)$/i ) {
+            $group->LoadSystemInternalGroup( $args{'member_of'} );
+        }
+        else {
+            $group->LoadUserDefinedGroup( $args{'member_of'} );
+        }
+        unless ( $group->id ) {
+            return (0, "Couldn't load group '$args{'member_of'}'" );
+        }
+        $args{'member_of'} = $group->id;
+
+    }
     if( $args{'replace_relations'} ) {
         my $uid = $args{'replace_relations'};
         # XXX: it's possible that SystemUser is not available
@@ -170,7 +191,9 @@ sub Run
                   VALUE => $self->{'opt'}{'name'},
                 );
     }
-
+    if( $self->{'opt'}{'member_of'} ) {
+        $objs->MemberOfGroup( $self->{'opt'}{'member_of'} );
+    }
     if( $self->{'opt'}{'no_tickets'} ) {
         return $self->FilterWithoutTickets(
             Shredder => $args{'Shredder'},

-----------------------------------------------------------------------


More information about the Rt-commit mailing list