| RTx-Shredder documentation | Contained in the RTx-Shredder distribution. |
RTx::Shredder::Plugin::Tickets - search plugin for wiping tickets.
Search tickets only in particular queue.
Search tickets with specified status only. 'deleted' status is also supported.
Search tickets that were updated before some date. Example: '2003-12-31 23:59:59'
| RTx-Shredder documentation | Contained in the RTx-Shredder distribution. |
package RTx::Shredder::Plugin::Tickets; use strict; use warnings FATAL => 'all'; use base qw(RTx::Shredder::Plugin::Base);
sub Type { return 'search' }
sub SupportArgs { return $_[0]->SUPER::SupportArgs, qw(queue status updated_before) } sub TestArgs { my $self = shift; my %args = @_; my $queue; if( $args{'queue'} ) { $queue = RT::Queue->new( $RT::SystemUser ); $queue->Load( $args{'queue'} ); return( 0, "Couldn't load queue '$args{'queue'}'" ) unless $queue->id; } if( $args{'status'} ) { $queue ||= RT::Queue->new( $RT::SystemUser ); my @statuses = qw(new open stalled deleted rejected); if( $queue->can( 'StatusArray' ) ) { @statuses = $queue->StatusArray; } unless( grep $_ eq $args{'status'}, @statuses ) { return( 0, "Invalid status '$args{status}'" ); } } if( $args{'updated_before'} ) { unless( $args{'updated_before'} =~ /\d\d\d\d-\d\d-\d\d(?:\s\d\d:\d\d:\d\d)?/ ) { return( 0, "Invalid date '$args{updated_before}'" ); } } return $self->SUPER::TestArgs( %args ); } sub Run { my $self = shift; my $objs = RT::Tickets->new( $RT::SystemUser ); $objs->{'allow_deleted_search'} = 1; if( $self->{'opt'}{'status'} ) { $objs->LimitStatus( VALUE => $self->{'opt'}{'status'} ); } if( $self->{'opt'}{'queue'} ) { $objs->LimitQueue( VALUE => $self->{'opt'}{'queue'} ); } if( $self->{'opt'}{'updated_before'} ) { $objs->LimitLastUpdated( OPERATOR => '<', VALUE => $self->{'opt'}{'updated_before'}, ); } if( $self->{'opt'}{'limit'} ) { $objs->RowsPerPage( $self->{'opt'}{'limit'} ); } $objs->OrderByCols( { FIELD => 'id', ORDER => 'ASC' } ); return (1, $objs); } 1;