2f854b42e8c63afc4289f36cd43b67f4059c458c
[clearscm.git] / maps / bin / mapsscrub
1 #!/usr/bin/perl
2 ################################################################################
3 #
4 # File:         $RCSfile: mapsscrub,v $
5 # Revision:     $Revision: 1.1 $
6 # Description:  This script scrubs messages from the MAPS database based on the
7 #               users settings.
8 # Author:       Andrew@DeFaria.com
9 # Created:      Fri Nov 29 14:17:21  2002
10 # Modified:     $Date: 2013/06/12 14:05:47 $
11 # Language:     perl
12 #
13 # (c) Copyright 2000-2006, Andrew@DeFaria.com, all rights reserved.
14 #
15 ################################################################################
16 use strict;
17 use warnings;
18
19 use FindBin;
20
21 use lib $FindBin::Bin;
22
23 use MAPS;
24 use MAPSUtil;
25
26 my $userid;
27 my $verbose             = defined $ARGV[0] && $ARGV[0] eq "-v" ? 1 : 0;
28 my $total_emails        = 0;
29 my $total_log_entries   = 0;
30 my $total_list_entries  = 0;
31 my $total_users_emails  = 0;
32
33 my ($history, $nbr_emails, $nbr_log_entries, $nbr_list_entries, $users_emails);
34
35 format =
36 @<<<<<<<<<<<<<<<< @>> @##### @##### @#####        @#####
37 $userid,$history,$nbr_emails,$nbr_log_entries,$nbr_list_entries,$users_emails
38 .
39 format STDOUT_TOP =
40 @||||||||||||||||||||||||||||||||||||||||||||||||
41 "MAPS Scrubber"
42
43 User ID           Age  Email    Log   List User's Emails
44 ----------------- --- ------ ------ ------ -------------
45 .
46
47 sub verbose {
48   my $msg = shift;
49
50   return if $verbose eq 0;
51
52   print "$msg\n";
53 } # verbose
54
55 sub CleanUp {
56   my $userid = shift;
57
58   my %options = GetUserOptions $userid;
59   $history = $options{"History"};
60   my $timestamp = SubtractDays (Today2SQLDatetime, $history);
61
62   $nbr_emails           = CleanEmail $timestamp;
63   $nbr_log_entries      = CleanLog $timestamp;
64   $nbr_list_entries     = CleanList $timestamp, "null";
65   $users_emails         = MAPSDB::count ("email", "userid = \"$userid\"");
66   write () if $verbose;
67
68   return ($nbr_emails, $nbr_log_entries, $nbr_list_entries, $users_emails);
69 } # CleanUp
70
71 # Main
72 my $handle = FindUser;
73
74 #$~ = "REPORT" if $verbose;
75
76 while (($userid) = GetUser $handle) {
77   last if !defined $userid;
78   SetContext $userid;
79   my ($emails, $log_entries, $list_entries, $users_emails) = CleanUp $userid;
80   $total_emails         += $emails;
81   $total_log_entries    += $log_entries;
82   $total_list_entries   += $list_entries;
83   $total_users_emails   += $users_emails;
84 } # while
85
86 $handle->finish;
87
88 if ($verbose) {
89   $userid               = "Total:";
90   $history              = "n/a";
91   $nbr_emails           = $total_emails;
92   $nbr_log_entries      = $total_log_entries;
93   $nbr_list_entries     = $total_list_entries;
94   $users_emails         = $total_users_emails;
95   write ();
96 } # if
97
98 # Now optimize the database
99 OptimizeDB;
100
101 exit;