]> git.proxmox.com Git - pmg-api.git/blobdiff - PMG/Quarantine.pm
pmgversion: sort packages
[pmg-api.git] / PMG / Quarantine.pm
index c3426b9518574e74b41543a08f228f9ce9109e03..77af8cc2cc519b5a1d1c866913d634ea5422f5d4 100644 (file)
@@ -69,12 +69,18 @@ sub add_to_blackwhite {
                if length($blist) > $maxlen;
        }
 
-       $dbh->do(
-           "DELETE FROM UserPrefs WHERE pmail = $qu AND (Name = 'WL' OR Name = 'BL');" .
+       my $queries = "DELETE FROM UserPrefs WHERE pmail = $qu AND (Name = 'WL' OR Name = 'BL');";
+       if (scalar(keys %{$list->{WL}})) {
+           $queries .=
            "INSERT INTO UserPrefs (PMail, Name, Data, MTime) " .
-           "VALUES ($qu, 'BL', $blist, EXTRACT (EPOCH FROM now()));" .
+           "VALUES ($qu, 'WL', $wlist, EXTRACT (EPOCH FROM now()));";
+       }
+       if (scalar(keys %{$list->{BL}})) {
+           $queries .=
            "INSERT INTO UserPrefs (PMail, Name, Data, MTime) " .
-           "VALUES ($qu, 'WL', $wlist, EXTRACT (EPOCH FROM now()));");
+           "VALUES ($qu, 'BL', $blist, EXTRACT (EPOCH FROM now()));";
+       }
+       $dbh->do($queries);
     }
 
     my $values =  [ keys %{$list->{$name}} ];
@@ -83,13 +89,13 @@ sub add_to_blackwhite {
 }
 
 sub deliver_quarantined_mail {
-    my ($dbh, $ref, $targets) = @_;
+    my ($dbh, $ref, $receiver) = @_;
 
     my $filename = $ref->{file};
     my $spooldir = $PMG::MailQueue::spooldir;
     my $path = "$spooldir/$filename";
 
-    my $id = 'C' . $ref->{cid} . 'R' . $ref->{rid};
+    my $id = 'C' . $ref->{cid} . 'R' . $ref->{rid} . 'T' . $ref->{ticketid};;
 
     my $sender = 'postmaster'; # notify postmaster if something fails
 
@@ -105,7 +111,7 @@ sub deliver_quarantined_mail {
            die sprintf("smtp from error - got: %s %s\n", $smtp->code, $smtp->message);
        }
 
-       if (!$smtp->to (@$targets)) {
+       if (!$smtp->to($receiver)) {
            die sprintf("smtp to error - got: %s %s\n", $smtp->code, $smtp->message);
        }
 
@@ -144,8 +150,8 @@ sub deliver_quarantined_mail {
 
        my $sth = $dbh->prepare(
            "UPDATE CMSReceivers SET Status='D', MTime = ? " .
-           "WHERE CMailStore_CID = ? AND CMailStore_RID = ? AND PMail = ?");
-       $sth->execute(time(), $ref->{cid}, $ref->{rid}, $ref->{pmail});
+           "WHERE CMailStore_CID = ? AND CMailStore_RID = ? AND TicketID = ?");
+       $sth->execute(time(), $ref->{cid}, $ref->{rid}, $ref->{ticketid});
        $sth->finish;
     };
     my $err = $@;
@@ -170,13 +176,13 @@ sub delete_quarantined_mail {
     my $spooldir = $PMG::MailQueue::spooldir;
     my $path = "$spooldir/$filename";
 
-    my $id = 'C' . $ref->{cid} . 'R' . $ref->{rid};
+    my $id = 'C' . $ref->{cid} . 'R' . $ref->{rid} . 'T' . $ref->{ticketid};;
 
     eval {
        my $sth = $dbh->prepare(
            "UPDATE CMSReceivers SET Status='D', MTime = ? WHERE " .
-           "CMailStore_CID = ? AND CMailStore_RID = ? AND PMail = ?");
-       $sth->execute (time(), $ref->{cid}, $ref->{rid}, $ref->{pmail});
+           "CMailStore_CID = ? AND CMailStore_RID = ? AND TicketID = ?");
+       $sth->execute (time(), $ref->{cid}, $ref->{rid}, $ref->{ticketid});
        $sth->finish;
     };
     if (my $err = $@) {