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