bug 773: correct email sending for domaincerts
authorFelix Dörre <felix@dogcraft.de>
Tue, 17 Jun 2014 16:59:30 +0000 (18:59 +0200)
committerFelix Dörre <felix@dogcraft.de>
Tue, 17 Jun 2014 17:33:49 +0000 (19:33 +0200)
CommModule/client.pl

index 78b229d..1803cd2 100755 (executable)
@@ -1025,22 +1025,27 @@ sub RevokeCerts($$)
       {
         $dbh->do("update `$table` set `revoked`=now() where `id`='".$row{'id'}."'");
 
-       my $memid = $row{memid};
-       if($server)
+       if($org eq "")
        {
-           $memid = getMemidFromDomid($row{domid});
+           if($server)
+           {
+               my @a=$dbh->selectrow_array("select `memid` from `domains` where `id`='".int($row{domid})."'");
+               sendRevokeMail($a[0],  $row{'CN'}, $row{'serial'});
+           }
+           else
+           {
+               sendRevokeMail($row{memid},  $row{'CN'}, $row{'serial'});
+           }
        }
-       if($org == "")
+       else
        {
-           setUsersLanguage($memid);
+           my $orgsth = $dbh->prepare("select `memid` from `org` where `orgid`='".int($row{orgid})."'");
+           $orgsth->execute();
+           while ( my ($memid) = $orgsth->fetchrow_array() )
+           {
+               sendRevokeMail($memid,  $row{'CN'}, $row{'serial'});
+           }
 
-           my %user=getUserData($memid);
-
-           my $body = _("Hi")." $user{fname},\n\n";
-           $body .= sprintf(_("Your certificate for '%s' with the serial number '%s' has been revoked, as per request.")."\n\n", $row{'CN'}, $row{'serial'});
-           $body .= _("Best regards")."\n"._("CAcert.org Support!")."\n\n";
-           SysLog("Sending email to ".$user{"email"}."\n") if($debug);
-           sendmail($user{email}, "[CAcert.org] "._("Your certificate"), $body, "support\@cacert.org", "", "", "CAcert Support");
        }
       }
 
@@ -1054,10 +1059,21 @@ sub RevokeCerts($$)
 
 }
 
-sub getMemidFromDomid()
+sub sendRevokeMail()
 {
-    my @a=$dbh->selectrow_array("select memid from domains where id='".int($_[0])."'");
-    return $a[0];
+    my $memid = $_[0];
+    my $certName = $_[1];
+    my $serial = $_[2];
+    setUsersLanguage($memid);
+    
+    my %user=getUserData($memid);
+    
+    my $body = _("Hi")." $user{fname},\n\n";
+    $body .= sprintf(_("Your certificate for '%s' with the serial number '%s' has been revoked, as per request.")."\n\n", $certName, $serial);
+    $body .= _("Best regards")."\n"._("CAcert.org Support!")."\n\n";
+    SysLog("Sending email to ".$user{"email"}."\n") if($debug);
+    sendmail($user{email}, "[CAcert.org] "._("Your certificate"), $body, "support\@cacert.org", "", "", "CAcert Support");
+
 }