Initial commit 4.0.5-3
[usit-rt.git] / local / bin / rt-delete.pl
1 #!/usr/bin/perl
2
3 use warnings;
4 use strict;
5
6 use lib '/www/data/rt/rt-perl/current-perl10/share/perl5';
7 use lib '/www/data/rt/rt-perl/current-perl10/lib/perl5';
8 use lib '/www/data/rt/rt-perl/current-perl10/lib64/perl5';
9 use lib ("/www/var/hjelp/local/lib", "/www/var/hjelp/lib");
10
11 my $status_file = "/rt-delete/status/status-date.txt";
12
13 package RT;
14 use RT;
15 use POSIX;
16
17 RT::LoadConfig();
18 RT::Init(); 
19 my $date = strftime("%Y-%m-%d",localtime(time-2592000)); # 30 days ago.
20 $status_file =~ s/date/$date/;
21 my $tickets = get_tickets($date);
22 print get_timestamp()." - starting shredding job.\n";
23 print "$tickets tickets to shred.\n";
24 open(F, ">>$status_file") or warn ("Can not open statefile: $!.");
25 my $lastrun = 0;
26
27 while ($tickets > 0 and $lastrun != $tickets){
28     my $timestamp = get_timestamp();
29     my $dumpfile  = "/rt-delete/sql-dump-$timestamp";
30     $lastrun = $tickets;
31     
32     print F "$timestamp - $tickets\n";
33     
34     `/www/var/hjelp/sbin/rt-shredder --plugin \"Tickets=query,status = 'deleted' AND lastupdated < '$date'';limit,100\" --sqldump $dumpfile --force 2> /dev/null`;;
35     $tickets = get_tickets($date);
36 }
37 close F;
38 print get_timestamp()." - shredding job done.\n";
39 print "$tickets tickets remaining.\n";
40
41 sub get_timestamp {
42 return strftime("%Y-%m-%d-%H:%M:%S",localtime);
43 }
44
45 sub get_tickets {
46 my $date = shift;
47 my @result = $RT::Handle->FetchResult("select count(*) from tickets where status = 'deleted' AND lastupdated < '$date'");
48 return $result[0];
49 }