Large MAPS update
[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/../lib";
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) = @_;
49
50   return if $verbose == 0;
51
52   print "$msg\n";
53 } # verbose
54
55 sub CleanUp($) {
56   my ($userid) = @_;
57
58   my %options = GetUserOptions($userid);
59
60   $history = $options{"History"};
61
62   my $timestamp = SubtractDays(Today2SQLDatetime, $history);
63
64   $nbr_emails       = CleanEmail $timestamp;
65   $nbr_log_entries  = CleanLog $timestamp;
66   $nbr_list_entries = CleanList $timestamp, "null";
67   $users_emails     = count("email", "userid = \"$userid\"");
68
69   write () if $verbose;
70
71   return ($nbr_emails, $nbr_log_entries, $nbr_list_entries, $users_emails);
72 } # CleanUp
73
74 # Main
75 my $handle = FindUser;
76
77 #$~ = "REPORT" if $verbose;
78
79 while (($userid) = GetUser($handle)) {
80   last unless $userid;
81
82   SetContext($userid);
83
84   my ($emails, $log_entries, $list_entries, $users_emails) = CleanUp($userid);
85
86   $total_emails       += $emails;
87   $total_log_entries  += $log_entries;
88   $total_list_entries += $list_entries;
89   $total_users_emails += $users_emails;
90 } # while
91
92 $handle->finish;
93
94 if ($verbose) {
95   $userid           = "Total:";
96   $history          = "n/a";
97   $nbr_emails       = $total_emails;
98   $nbr_log_entries  = $total_log_entries;
99   $nbr_list_entries = $total_list_entries;
100   $users_emails     = $total_users_emails;
101   write();
102 } # if
103
104 # Now optimize the database
105 OptimizeDB;
106
107 exit;