Fixing up numbers and totals
[clearscm.git] / maps / bin / add2nulllist.cgi
index 03815fd..1007526 100755 (executable)
@@ -2,8 +2,8 @@
 ################################################################################
 #
 # File:         $RCSfile: add2nulllist.cgi,v $
-# Revision:        $Revision: 1.1 $
-# Description:        Add an email address to the nulllist
+# Revision:     $Revision: 1.1 $
+# Description:  Add an email address to the nulllist
 # Author:       Andrew@DeFaria.com
 # Created:      Mon Jan 16 20:25:32 PST 2006
 # Modified:     $Date: 2013/06/12 14:05:47 $
@@ -16,9 +16,13 @@ use strict;
 use warnings;
 
 use FindBin;
-$0 = $FindBin::Script;
 
-use lib $FindBin::Bin;
+local $0 = $FindBin::Script;
+
+use lib "$FindBin::Bin/../lib";
+use lib "$FindBin::Bin/../../lib";
+
+use Utils;
 
 use MAPS;
 use MAPSLog;
@@ -27,85 +31,111 @@ use MAPSWeb;
 use CGI qw/:standard *table/;
 use CGI::Carp 'fatalsToBrowser';
 
-my $userid;
-my $Userid;
-my $type = 'null';
+sub Add2List(%) {
+  my (%rec) = @_;
 
-sub Add2List {
-  my $sender   = '';
-  my $nextseq  = MAPSDB::GetNextSequenceNo $userid, $type;
+  CheckParms(['userid', 'type'], \%rec);
+
+  my $nextseq  = GetNextSequenceNo(%rec);
+
+  my $Userid = ucfirst $rec{userid};
 
   while () {
-    my $pattern   = param "pattern$nextseq";
-    my $domain    = param "domain$nextseq";
-    my $comment   = param "comment$nextseq";
-    my $hit_count = param "hit_count$nextseq";
+    $rec{pattern}   = param "pattern$nextseq";
+    $rec{domain}    = param "domain$nextseq";
+    $rec{comment}   = param "comment$nextseq";
+    $rec{hit_count} = param "hit_count$nextseq";
+    $rec{retention} = param "retention$nextseq";
 
-    last if ((!defined $pattern || $pattern eq '') &&
-              (!defined $domain || $domain  eq ''));
+    last unless $rec{pattern} or $rec{domain};
 
-    $sender = lc "$pattern\@$domain";
+    $rec{sender} = CheckEmail $rec{pattern}, $rec{domain};
 
-    my ($status, $rule) = OnNulllist $sender;
+    my ($status, $rule) = OnNulllist($rec{sender});
 
-    if ($status != 0) {
-      print br {-class => 'error'}, "The email address $sender is already on ${Userid}'s $type list";
+    if ($status) {
+      print br {-class => 'error'},
+        "The email address $rec{sender} is already on ${Userid}'s $rec{type} list";
     } else {
-      $hit_count ||= CountMsg $sender;
-
-      Add2Nulllist $sender, $userid, $comment, $hit_count;
+      my ($messages, $msg) = Add2Nulllist(%rec);
 
-      print br "The email address, $sender, has been added to ${Userid}'s $type list";
+      if ($messages < -1) {
+        print br {-class => 'error'}, "Unable to add $rec{sender} to $rec{type} list";
+        return;
+      } else {
+        print br "The email address, $rec{sender}, has been added to ${Userid}'s $rec{type} list";
+      } # if
 
       # Now remove this entry from the other lists (if present)
-      foreach my $otherlist ('white', 'black') {
-        my $sth = FindList $otherlist, $sender;
-        my ($sequence, $count);
+      for my $otherlist ('white', 'black') {
+        FindList(
+          userid => $rec{userid},
+          type   => $otherlist,
+          sender => $rec{sender},
+        );
 
-        ($_, $_, $_, $_, $_, $sequence) = GetList $sth;
+        my $seq = GetList;
 
-        if ($sequence) {
-          $count = DeleteList $otherlist, $sequence;
+        if ($seq->{sequence}) {
+          my $err;
 
-          print br "Removed $sender from ${Userid}'s " . ucfirst $otherlist . ' list'
-            if $count > 0;
+          ($err, $msg) = DeleteList(
+            userid   => $rec{userid},
+            type     => $otherlist,
+            sequence => $seq->{sequence},
+          );
 
-          ResequenceList $userid, $otherlist;
+          croak $msg if $err < 0;
+
+          print br "Removed $rec{sender} from ${Userid}'s " . ucfirst $otherlist . ' list'
+            if $err > 0;
+
+          ResequenceList(
+            userid => $rec{userid},
+            type   => $otherlist,
+          );
         } # if
-      } # foreach
+      } # for
     } # if
 
     $nextseq++;
   } # while
+
+  return;
 } # Add2List
 
 # Main
-$userid = Heading (
+my $userid = Heading(
   'getcookie',
   '',
   'Add to Null List',
   'Add to Null List',
 );
 
-SetContext $userid;
+$userid ||= $ENV{USER};
 
-NavigationBar $userid;
+SetContext($userid);
 
-$Userid = ucfirst $userid;
+NavigationBar($userid);
 
-Add2List;
+my $type = 'null';
+
+Add2List(
+  userid => $userid,
+  type   => $type,
+);
 
 print start_form {
-  -method        => 'post',
-  -action        => 'processaction.cgi',
-  -name          => 'list'
+  -method => 'post',
+  -action => 'processaction.cgi',
+  -name   => 'list'
 };
 
 print '<p></p><center>',
-  hidden ({-name        => 'type',
-           -default     => $type}),
-  submit ({-name        => 'action',
-           -value       => 'Add New Entry'}),
+  hidden ({-name    => 'type',
+           -default => $type}),
+  submit ({-name    => 'action',
+           -value   => 'Add'}),
   '</center>';
 
 Footing;