Fixing up numbers and totals
[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 base qw(Exporter);
21
22 use MAPS;
23
24 use DateUtils;
25 use Utils;
26
27 our @EXPORT = qw (
28   Debug
29   Error
30   GetStats
31   Info
32   Logmsg
33   @Types
34 );
35
36 our @Types = (
37   'returned',
38   'whitelist',
39   'blacklist',
40   'registered',
41   'mailloop',
42   'nulllist'
43 );
44
45 sub nbr_msgs($) {
46   my ($sender) = @_;
47
48   return FindEmail($sender);
49 } # nbr_msgs
50
51 sub GetStats(%) {
52   my (%params) = @_;
53
54   CheckParms(['userid'], \%params);
55
56   $params{days} ||= 1;
57   $params{date} ||= Today2SQLDatetime;
58
59   my %dates;
60
61   while ($params{days} > 0) {
62     my $ymd = substr $params{date}, 0, 10;
63     my $sod = $ymd . ' 00:00:00';
64     my $eod = $ymd . ' 23:59:59';
65
66     my %stats;
67
68     for (@Types) {
69       my $condition = "type=\'$_\' and (timestamp > \'$sod\' and timestamp < \'$eod\')";
70
71       $stats{$_} = MAPS::CountLogDistinct(
72         userid     => $params{userid},
73         column     => 'sender',
74         additional => $condition,
75       );
76     } # for
77
78     $dates{$ymd} = \%stats;
79
80     $params{date} = SubtractDays $params{date}, 1;
81     $params{days}--;
82   } # while
83
84   return %dates
85 } # GetStats
86
87 sub Logmsg(%) {
88   my(%params) = @_;
89
90   CheckParms(['userid', 'type', 'message'], \%params);
91
92   # TODO Why do I need to qualify this?
93   return MAPS::AddLog(%params);
94 } # logmsg
95
96 sub Debug(%) {
97   my (%params) = @_;
98
99   return Logmsg(
100     userid  => $params{userid},
101     type    => 'debug',
102     message => $params{message});
103 } # Debug
104
105 sub Error(%) {
106   my (%params) = @_;
107
108   return Logmsg(
109     userid  => $params{userid},
110     type    => 'error',
111     message => $params{message});
112   } # Error
113
114 sub Info(%) {
115   my (%params) = @_;
116
117   return Logmsg(
118     userid  => $params{userid},
119     type    => 'info',
120     message => $params{message});
121 } # info
122
123 1;