Large MAPS update
[clearscm.git] / maps / lib / MAPSLog.pm
1 #!/usr/bin/perl
2 #################################################################################
3 #
4 # File:         $RCSfile: MAPSLog.pm,v $
5 # Revision:     $Revision: 1.1 $
6 # Description:  MAPS routines for logging.
7 # Author:       Andrew@DeFaria.com
8 # Created:      Fri Nov 29 14:17:21  2002
9 # Modified:     $Date: 2013/06/12 14:05:47 $
10 # Language:     perl
11 #
12 # (c) Copyright 2000-2006, Andrew@DeFaria.com, all rights reserved.
13 #
14 ################################################################################
15 package MAPSLog;
16
17 use strict;
18 use warnings;
19
20 use FindBin;
21
22 use MAPS;
23 use MAPSUtil;
24
25 use vars qw(@ISA @EXPORT);
26 use Exporter;
27
28 @ISA = qw (Exporter);
29
30 @EXPORT = qw (
31   Debug
32   Error
33   GetStats
34   Info
35   Logmsg
36   getstats
37   @Types
38 );
39
40 our @Types = (
41   'returned',
42   'whitelist',
43   'blacklist',
44   'registered',
45   'mailloop',
46   'nulllist'
47 );
48
49 sub nbr_msgs($) {
50   my ($sender) = @_;
51
52   return FindEmail($sender);
53 } # nbr_msgs
54
55 sub GetStats(;$$) {
56   my ($nbr_days, $date) = @_;
57
58   $nbr_days ||= 1;
59   $date     ||= Today2SQLDatetime();
60
61   my %dates;
62
63   while ($nbr_days > 0) {
64     my $ymd = substr $date, 0, 10;
65     my $sod = $ymd . ' 00:00:00';
66     my $eod = $ymd . ' 23:59:59';
67
68     my %stats;
69
70     for (@Types) {
71       my $condition = "type=\'$_\' and (timestamp > \'$sod\' and timestamp < \'$eod\')";
72
73       # Not sure why I need to qualify countlog
74       $stats{$_} = MAPS::countlog($condition);
75     } # for
76
77     $dates{$ymd} = \%stats;
78
79     $date = SubtractDays $date, 1;
80     $nbr_days--;
81   } # while
82
83   return %dates
84 } # GetStats
85
86 sub Logmsg($$$) {
87   my ($type, $sender, $msg) = @_;
88
89   # Todo: Why do I need to specify MAPS:: here?
90   MAPS::AddLog($type, $sender, $msg);
91
92   return;
93 } # logmsg
94
95 sub Debug($) {
96   my ($msg) = @_;
97
98   Logmsg('debug', '', $msg);
99
100   return;
101 } # Debug
102
103 sub Error($) {
104   my ($msg) = @_;
105
106   Logmsg('error', '', $msg);
107
108   return;
109 } # Error
110
111 sub Info($) {
112   my ($msg) = @_;
113
114   Logmsg('info', '', $msg);
115
116   return;
117 } # info
118
119 1;