sub _cleanTables($$;$) {
my ($table, $timestamp, $dryrun) = @_;
- my $count = 0;
- my $msg = 'Records deleted';
my $condition = "userid = '$userid' and timestamp < '$timestamp'";
if ($dryrun) {
return $db->count($table, $condition);
} else {
- return $db->delete($table, $condition);
+ my ($count, $msg) = $db->delete($table, $condition);
+
+ return $count;
} # if
} # _cleanTables
$rec{hit_count} //= $db->count(
'email',
- "userid = '$rec{userid}' and sender like '$rec{sender}%'"
+ "userid = '$rec{userid}' and sender like '%$rec{sender}%'"
);
($rec{pattern}, $rec{domain}) = split /\@/, delete $rec{sender};
sub AddLog(%) {
my (%params) = @_;
- my $timestamp = UnixDatetime2SQLDatetime(scalar(localtime));
+ $params{timestamp} = UnixDatetime2SQLDatetime(scalar(localtime));
return $db->add('log', %params);
} # AddLog
if ($username) {
if ($username =~ /(.*)\@(.*)/) {
return lc "$1\@$2";
+ } else {
+ return lc "$username\@";
} # if
} elsif ($domain) {
if ($domain =~ /(.*)\@(.*)/) {
? "$email_on_file\@"
: $email_on_file;
if ($sender and $sender =~ /$search_for/i) {
- $rule = "Matching rule: ($listtype:$rec->{sequence}) \"$email_on_file\"";
+ my $comment = $rec->{comment} ? " - $rec->{comment}" : '';
+
+ $rule = "Matching rule: ($listtype:$rec->{sequence}) \"$email_on_file$comment\"";
$rule .= " - $rec->{comment}" if $rec->{comment};
$status = 1;
my $table = 'list';
my $condition = "userid='$params{userid}' and type='$params{type}'";
my $count = 0;
+ my $msg;
# First let's go through the list to see if we have an domain level entry
# (e.g. @spammer.com) and also individual entries (baddude@spammer.com) then
} # for
} # while
- my $msg = 'Records deleted';
$condition = "userid='$params{userid}' and type='$params{type}' and retention is not null";
# First see if anything needs to be deleted
- return (0, $msg) unless $db->count($table, $condition);
+ ($count, $msg) = $db->count($table, $condition);
+
+ return 0 unless $count;
+
+ $count = 0;
my ($err, $errmsg) = $db->find($table, $condition);
. "$rec->{pattern}\@$rec->{domain} $dryrunstr");
$params{log}->dbug("last hit = $rec->{last_hit} < agedDate = $agedDate");
} # if
-
- $count++;
} # unless
+
+ $count++;
} else {
$params{log}->dbug("$rec->{userid}:$params{type}:$rec->{sequence}: nodelete $dryrunstr "
. "last hit = $rec->{last_hit} >= agedDate = $agedDate")
ResequenceList(
userid => $params{userid},
type => $params{type},
- ) if $count and !$params{dryrun};
+ ) if $count && !$params{dryrun};
- return wantarray ? ($count, $msg) : $count;
+ return $count;
} # CleanList
sub CountEmail(%) {
$db->lock('write', $table);
# Get all records for $userid and $type
- my $listrecs = $db->get($table, $condition);
+ my $listrecs = $db->get($table, $condition,'*', 'order by hit_count desc');
# Delete all of the list entries for this $userid and $type
my ($count, $msg) = $db->delete($table, $condition);