Merge branch 'bug-1276' into release
authorBenny Baumann <BenBE@geshi.org>
Wed, 20 Aug 2014 20:29:44 +0000 (22:29 +0200)
committerBenny Baumann <BenBE@geshi.org>
Wed, 20 Aug 2014 20:29:44 +0000 (22:29 +0200)
45 files changed:
CommModule/client.pl
CommModule/usbclient.pl
includes/account.php
includes/account_stuff.php
includes/general.php
includes/lib/account.php
includes/lib/general.php
includes/lib/l10n.php
includes/loggedin.php
includes/notary.inc.php
pages/account/10.php
pages/account/12.php
pages/account/13.php
pages/account/16.php
pages/account/18.php
pages/account/20.php
pages/account/21.php
pages/account/22.php
pages/account/3.php
pages/account/43.php
pages/account/44.php
pages/account/5.php
pages/account/52.php
pages/account/55.php
pages/account/56.php
pages/account/57.php
pages/account/58.php
pages/account/59.php [new file with mode: 0644]
pages/account/6.php
pages/gpg/2.php
pages/wot/1.php
pages/wot/10.php
pages/wot/15.php
pages/wot/5.php
pages/wot/6.php
pages/wot/9.php
scripts/cron/refresh_stats.php
scripts/db_migrations/version5.sh [new file with mode: 0755]
stamp/common.php
www/api/ccsr.php
www/api/cemails.php
www/index.php
www/stats.php
www/styles/default.css
www/wot.php

index bd3eb02..532761e 100755 (executable)
@@ -441,7 +441,7 @@ sub calculateDays($)
 {
   if($_[0])
   {
-    my @sum = $dbh->selectrow_array("select sum(`points`) as `total` from `notary` where `to`='".$_[0]."' group by `to`");
+    my @sum = $dbh->selectrow_array("select sum(`points`) as `total` from `notary` where `to`='".$_[0]."' and `deleted`=0 group by `to`");
     SysLog("Summe: $sum[0]\n") if($debug);
 
     return ($sum[0]>=50)?730:180;
index 3cbe2c3..6cbc111 100755 (executable)
@@ -425,7 +425,7 @@ sub calculateDays($)
 {
   if($_[0])
   {
-    my @sum = $dbh->selectrow_array("select sum(`points`) as `total` from `notary` where `to`='".$_[0]."' group by `to`");
+    my @sum = $dbh->selectrow_array("select sum(`points`) as `total` from `notary` where `to`='".$_[0]."' and `deleted`=0 group by `to`");
     SysLog("Summe: $sum[0]\n") if($debug);
 
     return ($sum[0]>=50)?730:180;
index 7e9ee2a..b1ab984 100644 (file)
@@ -84,6 +84,11 @@ function buildSubjectFromSession() {
        $memid = array_key_exists('memid',$_REQUEST) ? intval($_REQUEST['memid']) : 0;
        $domid = array_key_exists('domid',$_REQUEST) ? intval($_REQUEST['domid']) : 0;
 
+       $actionrequest = array_key_exists('action',$_REQUEST) ? $_REQUEST['action'] : "";
+
+       $ticketno = array_key_exists('ticketno',$_REQUEST) ? $_REQUEST['ticketno'] : "";
+       $ticketvalidation = FALSE;
+
 
        if(!$_SESSION['mconn'])
        {
@@ -146,7 +151,7 @@ function buildSubjectFromSession() {
                        exit;
                }
                $hash = make_hash();
-               $query = "insert into `email` set `email`='".$_REQUEST['email']."',`memid`='".$_SESSION['profile']['id']."',`created`=NOW(),`hash`='$hash'";
+               $query = "insert into `email` set `email`='".$_REQUEST['email']."',`memid`='".intval($_SESSION['profile']['id'])."',`created`=NOW(),`hash`='$hash'";
                mysql_query($query);
                $emailid = mysql_insert_id();
 
@@ -166,7 +171,7 @@ function buildSubjectFromSession() {
        {
                $id = 2;
                $emailid = intval($_REQUEST['emailid']);
-               $query = "select * from `email` where `id`='$emailid' and `memid`='".$_SESSION['profile']['id']."' and `hash` = '' and `deleted`=0";
+               $query = "select * from `email` where `id`='$emailid' and `memid`='".intval($_SESSION['profile']['id'])."' and `hash` = '' and `deleted`=0";
                $res = mysql_query($query);
                if(mysql_num_rows($res) <= 0)
                {
@@ -186,7 +191,7 @@ function buildSubjectFromSession() {
                                "support@cacert.org", "", "", "CAcert Support");
 
                $_SESSION['profile']['email'] = $row['email'];
-               $query = "update `users` set `email`='".$row['email']."' where `id`='".$_SESSION['profile']['id']."'";
+               $query = "update `users` set `email`='".mysql_real_escape_string($row['email'])."' where `id`='".intval($_SESSION['profile']['id'])."'";
                mysql_query($query);
                showheader(_("My CAcert.org Account!"));
                printf(_("Your default email address has been updated to '%s'."), sanitizeHTML($row['email']));
@@ -211,7 +216,7 @@ function buildSubjectFromSession() {
                                }
                                $id = intval($id);
                                $query = "select * from `email` where `id`='$id' and `memid`='".intval($_SESSION['profile']['id'])."' and
-                                               `email`!='".$_SESSION['profile']['email']."'";
+                                               `email`!='".mysql_real_escape_string($_SESSION['profile']['email'])."'";
                                $res = mysql_query($query);
                                if(mysql_num_rows($res) > 0)
                                {
@@ -284,6 +289,9 @@ function buildSubjectFromSession() {
                        if($_SESSION['_config']['rootcert'] < 1 || $_SESSION['_config']['rootcert'] > 2)
                                $_SESSION['_config']['rootcert'] = 1;
                }
+
+               $_SESSION['_config']['hash_alg'] = HashAlgorithms::clean($_REQUEST['hash_alg']);
+
                $csr = "";
                if(trim($_REQUEST['optionalCSR']) == "")
                {
@@ -293,11 +301,8 @@ function buildSubjectFromSession() {
                        $_REQUEST['keytype'] = "MS";
                        $csr = clean_csr($_REQUEST['optionalCSR']);
                }
-               if(trim($_REQUEST['description']) != ""){
-                       $_SESSION['_config']['description']= trim(mysql_real_escape_string(stripslashes($_REQUEST['description'])));
-               }else{
-                       $_SESSION['_config']['description']= "";
-               }
+
+               $_SESSION['_config']['description']= trim(stripslashes($_REQUEST['description']));
        }
 
        if($oldid == 4)
@@ -321,7 +326,7 @@ function buildSubjectFromSession() {
                        if(is_array($_SESSION['_config']['addid']))
                        foreach($_SESSION['_config']['addid'] as $id)
                        {
-                               $res = mysql_query("select * from `email` where `memid`='".$_SESSION['profile']['id']."' and `id`='".intval($id)."'");
+                               $res = mysql_query("select * from `email` where `memid`='".intval($_SESSION['profile']['id'])."' and `id`='".intval($id)."'");
                                if(mysql_num_rows($res) > 0)
                                {
                                        $row = mysql_fetch_assoc($res);
@@ -340,7 +345,7 @@ function buildSubjectFromSession() {
                                showfooter();
                                exit;
                        }
-                       $user = mysql_fetch_assoc(mysql_query("select * from `users` where `id`='".$_SESSION['profile']['id']."'"));
+                       $user = mysql_fetch_assoc(mysql_query("select * from `users` where `id`='".intval($_SESSION['profile']['id'])."'"));
                        if($_SESSION['_config']['SSO'] == 1)
                                $emails .= "$count.emailAddress = ".$user['uniqueID']."\n";
 
@@ -384,7 +389,8 @@ function buildSubjectFromSession() {
                                                `codesign`='".intval($_SESSION['_config']['codesign'])."',
                                                `disablelogin`='".($_SESSION['_config']['disablelogin']?1:0)."',
                                                `rootcert`='".intval($_SESSION['_config']['rootcert'])."',
-                                               `description`='".$_SESSION['_config']['description']."'";
+                                               `md`='".mysql_real_escape_string($_SESSION['_config']['hash_alg'])."',
+                                               `description`='".mysql_real_escape_string($_SESSION['_config']['description'])."'";
                        mysql_query($query);
                        $emailid = mysql_insert_id();
                        if(is_array($addys))
@@ -482,13 +488,14 @@ function buildSubjectFromSession() {
                        $query = "insert into emailcerts set
                                                `CN`='$defaultemail',
                                                `keytype`='".sanitizeHTML($_REQUEST['keytype'])."',
-                                               `memid`='".$_SESSION['profile']['id']."',
+                                               `memid`='".intval($_SESSION['profile']['id'])."',
                                                `created`=FROM_UNIXTIME(UNIX_TIMESTAMP()),
                                                `subject`='".mysql_real_escape_string($csrsubject)."',
-                                               `codesign`='".$_SESSION['_config']['codesign']."',
+                                               `codesign`='".intval($_SESSION['_config']['codesign'])."',
                                                `disablelogin`='".($_SESSION['_config']['disablelogin']?1:0)."',
-                                               `rootcert`='".$_SESSION['_config']['rootcert']."',
-                                               `description`='".$_SESSION['_config']['description']."'";
+                                               `rootcert`='".intval($_SESSION['_config']['rootcert'])."',
+                                               `md`='".mysql_real_escape_string($_SESSION['_config']['hash_alg'])."',
+                                               `description`='".mysql_real_escape_string($_SESSION['_config']['description'])."'";
                        mysql_query($query);
                        $emailid = mysql_insert_id();
                        if(is_array($addys))
@@ -653,7 +660,7 @@ function buildSubjectFromSession() {
 
                $hash = make_hash();
                $query = "insert into `domains` set `domain`='".mysql_real_escape_string($_SESSION['_config']['domain'])."',
-                                       `memid`='".$_SESSION['profile']['id']."',`created`=NOW(),`hash`='$hash'";
+                                       `memid`='".intval($_SESSION['profile']['id'])."',`created`=NOW(),`hash`='$hash'";
                mysql_query($query);
                $domainid = mysql_insert_id();
 
@@ -681,7 +688,7 @@ function buildSubjectFromSession() {
                        foreach($_REQUEST['delid'] as $id)
                        {
                                $id = intval($id);
-                               $query = "select * from `domains` where `id`='$id' and `memid`='".$_SESSION['profile']['id']."'";
+                               $query = "select * from `domains` where `id`='$id' and `memid`='".intval($_SESSION['profile']['id'])."'";
                                $res = mysql_query($query);
                                if(mysql_num_rows($res) > 0)
                                {
@@ -726,11 +733,7 @@ function buildSubjectFromSession() {
                        exit;
                }
 
-               if(trim($_REQUEST['description']) != ""){
-                       $_SESSION['_config']['description']= trim(mysql_real_escape_string(stripslashes($_REQUEST['description'])));
-               }else{
-                       $_SESSION['_config']['description']= "";
-               }
+               $_SESSION['_config']['description']= trim(stripslashes($_REQUEST['description']));
 
                $_SESSION['_config']['tmpfname'] = tempnam("/tmp", "id10CSR");
                $fp = fopen($_SESSION['_config']['tmpfname'], "w");
@@ -765,6 +768,8 @@ function buildSubjectFromSession() {
                        if($_SESSION['_config']['rootcert'] < 1 || $_SESSION['_config']['rootcert'] > 2)
                                $_SESSION['_config']['rootcert'] = 1;
                }
+
+               $_SESSION['_config']['hash_alg'] = HashAlgorithms::clean($_REQUEST['hash_alg']);
        }
 
        if($process != "" && $oldid == 11)
@@ -809,14 +814,16 @@ function buildSubjectFromSession() {
                                                `domid`='".mysql_real_escape_string($_SESSION['_config']['rowid']['0'])."',
                                                `created`=NOW(),`subject`='".mysql_real_escape_string($subject)."',
                                                `rootcert`='".mysql_real_escape_string($_SESSION['_config']['rootcert'])."',
-                                               `description`='".$_SESSION['_config']['description']."'";
+                                               `md`='".mysql_real_escape_string($_SESSION['_config']['hash_alg'])."',
+                                               `description`='".mysql_real_escape_string($_SESSION['_config']['description'])."'";
                } elseif(array_key_exists('0',$_SESSION['_config']['altid']) && $_SESSION['_config']['altid']['0'] > 0) {
                        $query = "insert into `domaincerts` set
                                                `CN`='".mysql_real_escape_string($_SESSION['_config']['altrows']['0'])."',
                                                `domid`='".mysql_real_escape_string($_SESSION['_config']['altid']['0'])."',
                                                `created`=NOW(),`subject`='".mysql_real_escape_string($subject)."',
                                                `rootcert`='".mysql_real_escape_string($_SESSION['_config']['rootcert'])."',
-                                               `description`='".$_SESSION['_config']['description']."'";
+                                               `md`='".mysql_real_escape_string($_SESSION['_config']['hash_alg'])."',
+                                               `description`='".mysql_real_escape_string($_SESSION['_config']['description'])."'";
                } else {
                        showheader(_("My CAcert.org Account!"));
                        echo _("Domain not verified.");
@@ -870,7 +877,7 @@ function buildSubjectFromSession() {
                                $query = "select *,UNIX_TIMESTAMP(`domaincerts`.`revoked`) as `revoke` from `domaincerts`,`domains`
                                                where `domaincerts`.`id`='$id' and
                                                `domaincerts`.`domid`=`domains`.`id` and
-                                               `domains`.`memid`='".$_SESSION['profile']['id']."'";
+                                               `domains`.`memid`='".intval($_SESSION['profile']['id'])."'";
                                $res = mysql_query($query);
                                if(mysql_num_rows($res) <= 0)
                                {
@@ -963,7 +970,7 @@ function buildSubjectFromSession() {
                                $query = "select *,UNIX_TIMESTAMP(`domaincerts`.`revoked`) as `revoke` from `domaincerts`,`domains`
                                                where `domaincerts`.`id`='$id' and
                                                `domaincerts`.`domid`=`domains`.`id` and
-                                               `domains`.`memid`='".$_SESSION['profile']['id']."'";
+                                               `domains`.`memid`='".intval($_SESSION['profile']['id'])."'";
                                $res = mysql_query($query);
                                if(mysql_num_rows($res) <= 0)
                                {
@@ -998,7 +1005,7 @@ function buildSubjectFromSession() {
                                $query = "select *,UNIX_TIMESTAMP(`domaincerts`.`expire`) as `expired` from `domaincerts`,`domains`
                                                where `domaincerts`.`id`='$id' and
                                                `domaincerts`.`domid`=`domains`.`id` and
-                                               `domains`.`memid`='".$_SESSION['profile']['id']."'";
+                                               `domains`.`memid`='".intval($_SESSION['profile']['id'])."'";
                                $res = mysql_query($query);
                                if(mysql_num_rows($res) <= 0)
                                {
@@ -1049,7 +1056,7 @@ function buildSubjectFromSession() {
                        {
                                $id = intval($id);
                                $query = "select *,UNIX_TIMESTAMP(`revoked`) as `revoke` from `emailcerts`
-                                               where `id`='$id' and `memid`='".$_SESSION['profile']['id']."'";
+                                               where `id`='$id' and `memid`='".intval($_SESSION['profile']['id'])."'";
                                $res = mysql_query($query);
                                if(mysql_num_rows($res) <= 0)
                                {
@@ -1123,7 +1130,7 @@ function buildSubjectFromSession() {
                        {
                                $id = intval($id);
                                $query = "select *,UNIX_TIMESTAMP(`revoked`) as `revoke` from `emailcerts`
-                                               where `id`='$id' and `memid`='".$_SESSION['profile']['id']."'";
+                                               where `id`='$id' and `memid`='".intval($_SESSION['profile']['id'])."'";
                                $res = mysql_query($query);
                                if(mysql_num_rows($res) <= 0)
                                {
@@ -1155,7 +1162,7 @@ function buildSubjectFromSession() {
                        {
                                $id = intval($id);
                                $query = "select *,UNIX_TIMESTAMP(`expire`) as `expired` from `emailcerts`
-                                               where `id`='$id' and `memid`='".$_SESSION['profile']['id']."'";
+                                               where `id`='$id' and `memid`='".intval($_SESSION['profile']['id'])."'";
                                $res = mysql_query($query);
                                if(mysql_num_rows($res) <= 0)
                                {
@@ -1187,14 +1194,14 @@ function buildSubjectFromSession() {
                        {
                                $cid = intval(substr($id,5));
                                $dis=(array_key_exists('disablelogin_'.$cid,$_REQUEST) && $_REQUEST['disablelogin_'.$cid]=="1")?"0":"1";
-                               mysql_query("update `emailcerts` set `disablelogin`='$dis' where `id`='$cid' and `memid`='".$_SESSION['profile']['id']."'");
+                               mysql_query("update `emailcerts` set `disablelogin`='$dis' where `id`='$cid' and `memid`='".intval($_SESSION['profile']['id'])."'");
                        }
                        if(substr($id,0,14)=="check_comment_")
                        {
                                $cid = intval(substr($id,14));
                                if(!empty($_REQUEST['check_comment_'.$cid])) {
                                        $comment=trim(mysql_real_escape_string(stripslashes($_REQUEST['comment_'.$cid])));
-                                       mysql_query("update `emailcerts` set `description`='$comment' where `id`='$cid' and `memid`='".$_SESSION['profile']['id']."'");
+                                       mysql_query("update `emailcerts` set `description`='$comment' where `id`='$cid' and `memid`='".intval($_SESSION['profile']['id'])."'");
                                }
                        }
                }
@@ -1268,7 +1275,7 @@ function buildSubjectFromSession() {
 
        if($oldid == 13 && $process != "")
        {
-               $ddquery = "select sum(`points`) as `total` from `notary` where `to`='".$_SESSION['profile']['id']."' group by `to`";
+               $ddquery = "select sum(`points`) as `total` from `notary` where `to`='".intval($_SESSION['profile']['id'])."' and `deleted` = 0 group by `to`";
                $ddres = mysql_query($ddquery);
                $ddrow = mysql_fetch_assoc($ddres);
                $_SESSION['profile']['points'] = $ddrow['total'];
@@ -1308,7 +1315,7 @@ function buildSubjectFromSession() {
                                                `lname`='".$_SESSION['_config']['user']['lname']."',
                                                `suffix`='".$_SESSION['_config']['user']['suffix']."',
                                                `dob`='".$_SESSION['_config']['user']['year']."-".$_SESSION['_config']['user']['month']."-".$_SESSION['_config']['user']['day']."'
-                                               where `id`='".$_SESSION['profile']['id']."'";
+                                               where `id`='".intval($_SESSION['profile']['id'])."'";
                        mysql_query($query);
                }
                if ($showdetails!="") {
@@ -1322,25 +1329,25 @@ function buildSubjectFromSession() {
                                                        `A3`='".$_SESSION['_config']['user']['A3']."',
                                                        `A4`='".$_SESSION['_config']['user']['A4']."',
                                                        `A5`='".$_SESSION['_config']['user']['A5']."'
-                                                       where `id`='".$_SESSION['profile']['id']."'";
+                                                       where `id`='".intval($_SESSION['profile']['id'])."'";
                        mysql_query($query);
                }
 
                //!!!Should be rewritten
-               $_SESSION['_config']['user']['otphash'] = trim(mysql_real_escape_string(stripslashes(strip_tags($_REQUEST['otphash']))));
-               $_SESSION['_config']['user']['otppin'] = trim(mysql_real_escape_string(stripslashes(strip_tags($_REQUEST['otppin']))));
+               $_SESSION['_config']['user']['otphash'] = trim(stripslashes(strip_tags($_REQUEST['otphash'])));
+               $_SESSION['_config']['user']['otppin']  = trim(stripslashes(strip_tags($_REQUEST['otppin'])));
                if($_SESSION['_config']['user']['otphash'] != "" && $_SESSION['_config']['user']['otppin'] != "")
                {
-                       $query = "update `users` set `otphash`='".$_SESSION['_config']['user']['otphash']."',
-                                               `otppin`='".$_SESSION['_config']['user']['otppin']."' where `id`='".$_SESSION['profile']['id']."'";
+                       $query = "update `users` set `otphash`='".mysql_real_escape_string($_SESSION['_config']['user']['otphash'])."',
+                                               `otppin`='".mysql_real_escape_string($_SESSION['_config']['user']['otppin'])."' where `id`='".intval($_SESSION['profile']['id'])."'";
                        mysql_query($query);
                }
 
                $_SESSION['_config']['user']['set'] = 0;
-               $_SESSION['profile'] = mysql_fetch_assoc(mysql_query("select * from `users` where `id`='".$_SESSION['profile']['id']."'"));
+               $_SESSION['profile'] = mysql_fetch_assoc(mysql_query("select * from `users` where `id`='".intval($_SESSION['profile']['id'])."'"));
                $_SESSION['profile']['loggedin'] = 1;
 
-               $ddquery = "select sum(`points`) as `total` from `notary` where `to`='".$_SESSION['profile']['id']."' group by `to`";
+               $ddquery = "select sum(`points`) as `total` from `notary` where `to`='".intval($_SESSION['profile']['id'])."' and `deleted` = 0 group by `to`";
                $ddres = mysql_query($ddquery);
                $ddrow = mysql_fetch_assoc($ddres);
                $_SESSION['profile']['points'] = $ddrow['total'];
@@ -1374,7 +1381,7 @@ function buildSubjectFromSession() {
 
                        if($_SESSION['_config']['hostname'] != $_SESSION['_config']['securehostname'])
                        {
-                               $match = mysql_query("select * from `users` where `id`='".$_SESSION['profile']['id']."' and
+                               $match = mysql_query("select * from `users` where `id`='".intval($_SESSION['profile']['id'])."' and
                                                (`password`=old_password('".$_SESSION['_config']['user']['oldpass']."') or
                                                `password`=sha1('".$_SESSION['_config']['user']['oldpass']."'))");
                                $rc = mysql_num_rows($match);
@@ -1396,7 +1403,7 @@ function buildSubjectFromSession() {
                                echo _("You failed to correctly enter your current Pass Phrase.");
                        } else {
                                mysql_query("update `users` set `password`=sha1('".$_SESSION['_config']['user']['pword1']."')
-                                               where `id`='".$_SESSION['profile']['id']."'");
+                                               where `id`='".intval($_SESSION['profile']['id'])."'");
                                echo '<h3>', _("Pass Phrase Changed Successfully"), '</h3>', "\n";
                                echo _("Your Pass Phrase has been updated and your primary email account has been notified of the change.");
                                $body  = sprintf(_("Hi %s,"),$_SESSION['profile']['fname'])."\n\n";
@@ -1438,14 +1445,9 @@ function buildSubjectFromSession() {
                                $_SESSION['_config']['emails'][] = $val;
                }
                $_SESSION['_config']['name'] = mysql_real_escape_string(stripslashes(trim($_REQUEST['name'])));
-               $_SESSION['_config']['OU'] = mysql_real_escape_string(stripslashes(trim($_REQUEST['OU'])));
-
+               $_SESSION['_config']['OU'] = stripslashes(trim($_REQUEST['OU']));
 
-               if(trim($_REQUEST['description']) != ""){
-                       $_SESSION['_config']['description']= trim(mysql_real_escape_string(stripslashes($_REQUEST['description'])));
-               }else{
-                       $_SESSION['_config']['description']= "";
-               }
+               $_SESSION['_config']['description']= trim(stripslashes($_REQUEST['description']));
        }
 
        if($oldid == 16 && (intval(count($_SESSION['_config']['emails'])) + 0) <= 0)
@@ -1474,11 +1476,9 @@ function buildSubjectFromSession() {
                if($_SESSION['_config']['rootcert'] < 1 || $_SESSION['_config']['rootcert'] > 2)
                        $_SESSION['_config']['rootcert'] = 1;
 
-               if(trim($_REQUEST['description']) != ""){
-                       $_SESSION['_config']['description']= trim(mysql_real_escape_string(stripslashes($_REQUEST['description'])));
-               }else{
-                       $_SESSION['_config']['description']= "";
-               }
+               $_SESSION['_config']['hash_alg'] = HashAlgorithms::clean($_REQUEST['hash_alg']);
+
+               $_SESSION['_config']['description']= trim(stripslashes($_REQUEST['description']));
 
                if(@count($_SESSION['_config']['emails']) > 0)
                        $id = 17;
@@ -1514,7 +1514,7 @@ function buildSubjectFromSession() {
                        if($_SESSION['_config']['name'] != "")
                                $emails .= "commonName = ".$_SESSION['_config']['name']."\n";
                        if($_SESSION['_config']['OU'])
-                               $emails .= "organizationalUnitName = ".$_SESSION['_config']['OU']."\n";
+                               $emails .= "organizationalUnitName = ".mysql_real_escape_string($_SESSION['_config']['OU'])."\n";
                        if($org['O'])
                                $emails .= "organizationName = ".$org['O']."\n";
                        if($org['L'])
@@ -1539,13 +1539,14 @@ function buildSubjectFromSession() {
 
                        $query = "insert into `orgemailcerts` set
                                                `CN`='$defaultemail',
-                                               `ou`='".$_SESSION['_config']['OU']."',
+                                               `ou`='".mysql_real_escape_string($_SESSION['_config']['OU'])."',
                                                `keytype`='NS',
-                                               `orgid`='".$org['orgid']."',
+                                               `orgid`='".intval($org['orgid'])."',
                                                `created`=FROM_UNIXTIME(UNIX_TIMESTAMP()),
-                                               `codesign`='".$_SESSION['_config']['codesign']."',
-                                               `rootcert`='".$_SESSION['_config']['rootcert']."',
-                                               `description`='".$_SESSION['_config']['description']."'";
+                                               `codesign`='".intval($_SESSION['_config']['codesign'])."',
+                                               `rootcert`='".intval($_SESSION['_config']['rootcert'])."',
+                                               `md`='".mysql_real_escape_string($_SESSION['_config']['hash_alg'])."',
+                                               `description`='".mysql_real_escape_string($_SESSION['_config']['description'])."'";
                        mysql_query($query);
                        $emailid = mysql_insert_id();
 
@@ -1633,14 +1634,15 @@ function buildSubjectFromSession() {
 
                        $query = "insert into `orgemailcerts` set
                                                `CN`='$defaultemail',
-                                               `ou`='".$_SESSION['_config']['OU']."',
+                                               `ou`='".mysql_real_escape_string($_SESSION['_config']['OU'])."',
                                                `keytype`='" . sanitizeHTML($_REQUEST['keytype']) . "',
-                                               `orgid`='".$org['orgid']."',
+                                               `orgid`='".intval($org['orgid'])."',
                                                `created`=FROM_UNIXTIME(UNIX_TIMESTAMP()),
-                                               `subject`='$csrsubject',
-                                               `codesign`='".$_SESSION['_config']['codesign']."',
-                                               `rootcert`='".$_SESSION['_config']['rootcert']."',
-                                               `description`='".$_SESSION['_config']['description']."'";
+                                               `subject`='".mysql_real_escape_string($csrsubject)."',
+                                               `codesign`='".intval($_SESSION['_config']['codesign'])."',
+                                               `rootcert`='".intval($_SESSION['_config']['rootcert'])."',
+                                               `md`='".mysql_real_escape_string($_SESSION['_config']['hash_alg'])."',
+                                               `description`='".mysql_real_escape_string($_SESSION['_config']['description'])."'";
                        mysql_query($query);
                        $emailid = mysql_insert_id();
 
@@ -1682,7 +1684,7 @@ function buildSubjectFromSession() {
                                echo "Renewing certificate #$id ...\n<br/>";
                                $id = intval($id);
                                $query = "select *,UNIX_TIMESTAMP(`revoked`) as `revoke` from `orgemailcerts`, `org`
-                                               where `orgemailcerts`.`id`='$id' and `org`.`memid`='".$_SESSION['profile']['id']."' and
+                                               where `orgemailcerts`.`id`='$id' and `org`.`memid`='".intval($_SESSION['profile']['id'])."' and
                                                `org`.`orgid`=`orgemailcerts`.`orgid`";
                                $res = mysql_query($query);
                                if(mysql_num_rows($res) <= 0)
@@ -1755,7 +1757,7 @@ function buildSubjectFromSession() {
                        {
                                $id = intval($id);
                                $query = "select *,UNIX_TIMESTAMP(`revoked`) as `revoke` from `orgemailcerts`, `org`
-                                               where `orgemailcerts`.`id`='$id' and `org`.`memid`='".$_SESSION['profile']['id']."' and
+                                               where `orgemailcerts`.`id`='".intval($id)."' and `org`.`memid`='".intval($_SESSION['profile']['id'])."' and
                                                `org`.`orgid`=`orgemailcerts`.`orgid`";
                                $res = mysql_query($query);
                                if(mysql_num_rows($res) <= 0)
@@ -1788,7 +1790,7 @@ function buildSubjectFromSession() {
                        {
                                $id = intval($id);
                                $query = "select *,UNIX_TIMESTAMP(`expire`) as `expired` from `orgemailcerts`, `org`
-                                               where `orgemailcerts`.`id`='$id' and `org`.`memid`='".$_SESSION['profile']['id']."' and
+                                               where `orgemailcerts`.`id`='".intval($id)."' and `org`.`memid`='".intval($_SESSION['profile']['id'])."' and
                                                `org`.`orgid`=`orgemailcerts`.`orgid`";
                                $res = mysql_query($query);
                                if(mysql_num_rows($res) <= 0)
@@ -1858,11 +1860,7 @@ function buildSubjectFromSession() {
                        exit;
                }
 
-               if(trim($_REQUEST['description']) != ""){
-                       $_SESSION['_config']['description']= trim(mysql_real_escape_string(stripslashes($_REQUEST['description'])));
-               }else{
-                       $_SESSION['_config']['description']= "";
-               }
+               $_SESSION['_config']['description']= trim(stripslashes($_REQUEST['description']));
 
                $_SESSION['_config']['tmpfname'] = tempnam("/tmp", "id20CSR");
                $fp = fopen($_SESSION['_config']['tmpfname'], "w");
@@ -1883,16 +1881,16 @@ function buildSubjectFromSession() {
                getalt2();
 
                $query = "select * from `orginfo`,`org`,`orgdomains` where
-                               `org`.`memid`='".$_SESSION['profile']['id']."' and
+                               `org`.`memid`='".intval($_SESSION['profile']['id'])."' and
                                `org`.`orgid`=`orginfo`.`id` and
                                `org`.`orgid`=`orgdomains`.`orgid` and
-                               `orgdomains`.`domain`='".$_SESSION['_config']['0.CN']."'";
+                               `orgdomains`.`domain`='".mysql_real_escape_string($_SESSION['_config']['0.CN'])."'";
                $_SESSION['_config']['CNorg'] = mysql_fetch_assoc(mysql_query($query));
                $query = "select * from `orginfo`,`org`,`orgdomains` where
-                               `org`.`memid`='".$_SESSION['profile']['id']."' and
+                               `org`.`memid`='".intval($_SESSION['profile']['id'])."' and
                                `org`.`orgid`=`orginfo`.`id` and
                                `org`.`orgid`=`orgdomains`.`orgid` and
-                               `orgdomains`.`domain`='".$_SESSION['_config']['0.subjectAltName']."'";
+                               `orgdomains`.`domain`='".mysql_real_escape_string($_SESSION['_config']['0.subjectAltName'])."'";
                $_SESSION['_config']['SANorg'] = mysql_fetch_assoc(mysql_query($query));
 //echo "<pre>"; print_r($_SESSION['_config']); die;
 
@@ -1908,6 +1906,8 @@ function buildSubjectFromSession() {
                $_SESSION['_config']['rootcert'] = intval($_REQUEST['rootcert']);
                if($_SESSION['_config']['rootcert'] < 1 || $_SESSION['_config']['rootcert'] > 2)
                        $_SESSION['_config']['rootcert'] = 1;
+
+               $_SESSION['_config']['hash_alg'] = HashAlgorithms::clean($_REQUEST['hash_alg']);
        }
 
        if($process != "" && $oldid == 21)
@@ -1942,14 +1942,14 @@ function buildSubjectFromSession() {
                if($_SESSION['_config']['rowid']['0'] > 0)
                {
                        $query = "select * from `org`,`orginfo` where
-                                       `orginfo`.`id`='".$_SESSION['_config']['rowid']['0']."' and
+                                       `orginfo`.`id`='".intval($_SESSION['_config']['rowid']['0'])."' and
                                        `orginfo`.`id`=`org`.`orgid` and
-                                       `org`.`memid`='".$_SESSION['profile']['id']."'";
+                                       `org`.`memid`='".intval($_SESSION['profile']['id'])."'";
                } else {
                        $query = "select * from `org`,`orginfo` where
-                                       `orginfo`.`id`='".$_SESSION['_config']['altid']['0']."' and
+                                       `orginfo`.`id`='".intval($_SESSION['_config']['altid']['0'])."' and
                                        `orginfo`.`id`=`org`.`orgid` and
-                                       `org`.`memid`='".$_SESSION['profile']['id']."'";
+                                       `org`.`memid`='".intval($_SESSION['profile']['id'])."'";
                }
                $org = mysql_fetch_assoc(mysql_query($query));
                $csrsubject = "";
@@ -1977,22 +1977,24 @@ function buildSubjectFromSession() {
                if($_SESSION['_config']['rowid']['0'] > 0)
                {
                        $query = "insert into `orgdomaincerts` set
-                                       `CN`='".$_SESSION['_config']['rows']['0']."',
-                                       `orgid`='".$org['id']."',
+                                       `CN`='".mysql_real_escape_string($_SESSION['_config']['rows']['0'])."',
+                                       `orgid`='".intval($org['id'])."',
                                        `created`=NOW(),
-                                       `subject`='$csrsubject',
-                                       `rootcert`='".$_SESSION['_config']['rootcert']."',
-                                       `type`='$type',
-                                       `description`='".$_SESSION['_config']['description']."'";
+                                       `subject`='".mysql_real_escape_string($csrsubject)."',
+                                       `rootcert`='".intval($_SESSION['_config']['rootcert'])."',
+                                       `md`='".mysql_real_escape_string($_SESSION['_config']['hash_alg'])."',
+                                       `type`='".$type."',
+                                       `description`='".mysql_real_escape_string($_SESSION['_config']['description'])."'";
                } else {
                        $query = "insert into `orgdomaincerts` set
-                                       `CN`='".$_SESSION['_config']['altrows']['0']."',
-                                       `orgid`='".$org['id']."',
+                                       `CN`='".mysql_real_escape_string($_SESSION['_config']['altrows']['0'])."',
+                                       `orgid`='".intval($org['id'])."',
                                        `created`=NOW(),
-                                       `subject`='$csrsubject',
-                                       `rootcert`='".$_SESSION['_config']['rootcert']."',
-                                       `type`='$type',
-                                       `description`='".$_SESSION['_config']['description']."'";
+                                       `subject`='".mysql_real_escape_string($csrsubject)."',
+                                       `rootcert`='".intval($_SESSION['_config']['rootcert'])."',
+                                       `md`='".mysql_real_escape_string($_SESSION['_config']['hash_alg'])."',
+                                       `type`='".$type."',
+                                       `description`='".mysql_real_escape_string($_SESSION['_config']['description'])."'";
                }
                mysql_query($query);
                $CSRid = mysql_insert_id();
@@ -2003,10 +2005,10 @@ function buildSubjectFromSession() {
                mysql_query("update `orgdomaincerts` set `CSR_name`='$CSRname' where `id`='$CSRid'");
                if(is_array($_SESSION['_config']['rowid']))
                        foreach($_SESSION['_config']['rowid'] as $id)
-                               mysql_query("insert into `orgdomlink` set `orgdomid`='$id', `orgcertid`='$CSRid'");
+                               mysql_query("insert into `orgdomlink` set `orgdomid`='".intval($id)."', `orgcertid`='$CSRid'");
                if(is_array($_SESSION['_config']['altid']))
                        foreach($_SESSION['_config']['altid'] as $id)
-                               mysql_query("insert into `orgdomlink` set `orgdomid`='$id', `orgcertid`='$CSRid'");
+                               mysql_query("insert into `orgdomlink` set `orgdomid`='".intval($id)."', `orgcertid`='$CSRid'");
                waitForResult("orgdomaincerts", $CSRid,$oldid);
                $query = "select * from `orgdomaincerts` where `id`='$CSRid' and `crt_name` != ''";
                $res = mysql_query($query);
@@ -2037,7 +2039,7 @@ function buildSubjectFromSession() {
                                                `orgdomaincerts`,`org`
                                                where `orgdomaincerts`.`id`='$id' and
                                                `orgdomaincerts`.`orgid`=`org`.`orgid` and
-                                               `org`.`memid`='".$_SESSION['profile']['id']."'";
+                                               `org`.`memid`='".intval($_SESSION['profile']['id'])."'";
                                $res = mysql_query($query);
                                if(mysql_num_rows($res) <= 0)
                                {
@@ -2079,7 +2081,7 @@ function buildSubjectFromSession() {
                                echo _("Renewing").": ".$row['CN']."<br>\n";
                                $res = mysql_query("select * from `orgdomlink` where `orgcertid`='".$row['id']."'");
                                while($r2 = mysql_fetch_assoc($res))
-                                       mysql_query("insert into `orgdomlink` set `orgdomid`='".$r2['id']."', `orgcertid`='$newid'");
+                                       mysql_query("insert into `orgdomlink` set `orgdomid`='".intval($r2['orgdomid'])."', `orgcertid`='$newid'");
                                waitForResult("orgdomaincerts", $newid,$oldid,0);
                                $query = "select * from `orgdomaincerts` where `id`='$newid' and `crt_name` != ''";
                                $res = mysql_query($query);
@@ -2116,7 +2118,7 @@ function buildSubjectFromSession() {
                                                `orgdomaincerts`,`org`
                                                where `orgdomaincerts`.`id`='$id' and
                                                `orgdomaincerts`.`orgid`=`org`.`orgid` and
-                                               `org`.`memid`='".$_SESSION['profile']['id']."'";
+                                               `org`.`memid`='".intval($_SESSION['profile']['id'])."'";
                                $res = mysql_query($query);
                                if(mysql_num_rows($res) <= 0)
                                {
@@ -2151,7 +2153,7 @@ function buildSubjectFromSession() {
                                                `orgdomaincerts`,`org`
                                                where `orgdomaincerts`.`id`='$id' and
                                                `orgdomaincerts`.`orgid`=`org`.`orgid` and
-                                               `org`.`memid`='".$_SESSION['profile']['id']."'";
+                                               `org`.`memid`='".intval($_SESSION['profile']['id'])."'";
                                $res = mysql_query($query);
                                if(mysql_num_rows($res) <= 0)
                                {
@@ -2267,7 +2269,7 @@ function buildSubjectFromSession() {
                                                `ST`='".$_SESSION['_config']['ST']."',
                                                `C`='".$_SESSION['_config']['C']."',
                                                `comments`='".$_SESSION['_config']['comments']."'
-                                       where `id`='".$_SESSION['_config']['orgid']."'");
+                                       where `id`='".intval($_SESSION['_config']['orgid'])."'");
                        showheader(_("My CAcert.org Account!"));
                        printf(_("'%s' has just been successfully updated in the database."), sanitizeHTML($_SESSION['_config']['O']));
                        showfooter();
@@ -2447,11 +2449,11 @@ function buildSubjectFromSession() {
        {
                csrf_check('orgadmadd');
                if($_SESSION['profile']['orgadmin'] == 1)
-                       $masteracc = $_SESSION['_config'][masteracc] = intval($_REQUEST['masteracc']);
+                       $masteracc = $_SESSION['_config']['masteracc'] = intval($_REQUEST['masteracc']);
                else
-                       $masteracc = $_SESSION['_config'][masteracc] = 0;
+                       $masteracc = $_SESSION['_config']['masteracc'] = 0;
                $_REQUEST['email'] = $_SESSION['_config']['email'] = mysql_real_escape_string(stripslashes(trim($_REQUEST['email'])));
-               $OU = $_SESSION['_config']['OU'] = mysql_real_escape_string(stripslashes(trim($_REQUEST['OU'])));
+               $_SESSION['_config']['OU'] = stripslashes(trim($_REQUEST['OU']));
                $comments = $_SESSION['_config']['comments'] = mysql_real_escape_string(stripslashes(trim($_REQUEST['comments'])));
                $res = mysql_query("select * from `users` where `email`='".$_REQUEST['email']."' and `deleted`=0");
                if(mysql_num_rows($res) <= 0)
@@ -2473,7 +2475,7 @@ function buildSubjectFromSession() {
                                                set `memid`='".intval($row['id'])."',
                                                        `orgid`='".intval($_SESSION['_config']['orgid'])."',
                                                        `masteracc`='$masteracc',
-                                                       `OU`='$OU',
+                                                       `OU`='".mysql_real_escape_string($_SESSION['_config']['OU'])."',
                                                        `comments`='$comments'");
                        }
                }
@@ -2482,7 +2484,7 @@ function buildSubjectFromSession() {
        if(($oldid == 34 || $id == 34) && $_SESSION['profile']['orgadmin'] != 1)
        {
                $orgid = intval($_SESSION['_config']['orgid']);
-               $res = mysql_query("select * from `org` where `orgid`='$orgid' and `memid`='".$_SESSION['profile']['id']."' and `masteracc`='1'");
+               $res = mysql_query("select * from `org` where `orgid`='$orgid' and `memid`='".intval($_SESSION['profile']['id'])."' and `masteracc`='1'");
                if(mysql_num_rows($res) <= 0)
                        $id = 32;
        }
@@ -2541,7 +2543,7 @@ function buildSubjectFromSession() {
                {
                        if($key == $lang)
                        {
-                               mysql_query("update `users` set `language`='$lang' where `id`='".$_SESSION['profile']['id']."'");
+                               mysql_query("update `users` set `language`='$lang' where `id`='".intval($_SESSION['profile']['id'])."'");
                                $_SESSION['profile']['language'] = $lang;
                                showheader(_("My CAcert.org Account!"));
                                echo _("Your language setting has been updated.");
@@ -2696,10 +2698,27 @@ function buildSubjectFromSession() {
                $oldid=0;
        }
 
-       if($oldid == 43 && $_REQUEST['action'] == "updatedob")
+       //check if ticket number was entered
+       if ( $id == 43 || $oldid == 43 || $id == 44 || $oldid == 44 ) {
+               if ($ticketno != "" ) {
+                       $ticketno = trim($_REQUEST['ticketno']);
+                       $ticketvalidation = valid_ticket_number($ticketno);
+               }
+
+               $_SESSION['ticketno'] = $ticketno;
+       }
+
+       if($oldid == 43 && $actionrequest == "updatedob" && $ticketvalidation == TRUE)
        {
                $id = 43;
                $oldid=0;
+               $userid = intval($_REQUEST['userid']);
+               if (!write_se_log($userid, $_SESSION['profile']['id'],'SE Name/DOB Change',$ticketno)) {
+                       showheader(_("Something went wrong"));
+                       echo _("Writing to the admin log failed. Can't continue.");
+                       showfooter();
+                       exit;
+               }
                $fname = mysql_real_escape_string($_REQUEST['fname']);
                $mname = mysql_real_escape_string($_REQUEST['mname']);
                $lname = mysql_real_escape_string($_REQUEST['lname']);
@@ -2707,21 +2726,29 @@ function buildSubjectFromSession() {
                $day = intval($_REQUEST['day']);
                $month = intval($_REQUEST['month']);
                $year = intval($_REQUEST['year']);
-               $userid = intval($_REQUEST['userid']);
-               $query = "select `fname`,`mname`,`lname`,`suffix`,`dob` from `users` where `id`='$userid'";
-               $details = mysql_fetch_assoc(mysql_query($query));
-               $query = "insert into `adminlog` set `when`=NOW(),`old-lname`='${details['lname']}',`old-dob`='${details['dob']}',
-                               `new-lname`='$lname',`new-dob`='$year-$month-$day',`uid`='$userid',`adminid`='".$_SESSION['profile']['id']."'";
-               mysql_query($query);
                $query = "update `users` set `fname`='$fname',`mname`='$mname',`lname`='$lname',`suffix`='$suffix',`dob`='$year-$month-$day' where `id`='$userid'";
                mysql_query($query);
+       }elseif($oldid == 43 && $actionrequest == "updatedob" && $ticketvalidation == FALSE){
+               $id = 43;
+               $oldid=0;
+               $_SESSION['ticketmsg']='No action (name/dob change) taken. Ticket number is missing!';
        }
 
-       if($oldid == 43 && $_REQUEST['action'] == 'revokecert')
+       if($oldid == 43 && $actionrequest == 'revokecert' && $ticketvalidation == TRUE)
        {
                $userid = intval($_REQUEST['userid']);
+               if (!write_se_log($userid, $_SESSION['profile']['id'], 'SE Revoke all certificates',$ticketno)) {
+                       showheader(_("Something went wrong"));
+                       echo _("Writing to the admin log failed. Can't continue.");
+                       showfooter();
+                       exit;
+               }
                revoke_all_private_cert($userid);
                $id=43;
+       }elseif($oldid == 43 && $actionrequest == "revokecert" && $ticketvalidation == FALSE){
+               $id = 43;
+               $oldid=0;
+               $_SESSION['ticketmsg']='No certificates revokes. Ticket number is missing!';
        }
 
        if($oldid == 48 && $_REQUEST['domain'] == "")
@@ -2738,8 +2765,7 @@ function buildSubjectFromSession() {
 
        if($id == 44)
        {
-               if($_REQUEST['userid'] != "")
-                       $_REQUEST['userid'] = intval($_REQUEST['userid']);
+               $_REQUEST['userid'] = intval($_REQUEST['userid']);
                $row = mysql_fetch_assoc(mysql_query("select * from `users` where `id`='".intval($_REQUEST['userid'])."'"));
                if($row['email'] == "")
                        $id = 42;
@@ -2747,13 +2773,19 @@ function buildSubjectFromSession() {
                        $_REQUEST['email'] = $row['email'];
        }
 
-       if($oldid == 44)
+       if($oldid == 44 && $ticketvalidation == TRUE)
        {
                showheader(_("My CAcert.org Account!"));
                if(intval($_REQUEST['userid']) <= 0)
                {
                        echo _("No such user found.");
                } else {
+                       if (!write_se_log(intval($_REQUEST['userid']), $_SESSION['profile']['id'],'SE reset password',$ticketno)) {
+                               showheader(_("Something went wrong"));
+                               echo _("Writing to the admin log failed. Can't continue.");
+                               showfooter();
+                               exit;
+                       }
                        mysql_query("update `users` set `password`=sha1('".mysql_real_escape_string(stripslashes($_REQUEST['newpass']))."') where `id`='".intval($_REQUEST['userid'])."'");
                        $row = mysql_fetch_assoc(mysql_query("select * from `users` where `id`='".intval($_REQUEST['userid'])."'"));
                        printf(_("The password for %s has been updated successfully in the system."), sanitizeHTML($row['email']));
@@ -2771,8 +2803,11 @@ function buildSubjectFromSession() {
 
                showfooter();
                exit;
+       }elseif($oldid == 44 && $ticketvalidation == FALSE){
+               $_SESSION['ticketmsg']='No password reset taken. Ticket number is missing!';
        }
 
+
        if($process != "" && $oldid == 45)
        {
                $CSR = clean_csr($CSR);
@@ -2839,10 +2874,10 @@ function buildSubjectFromSession() {
                $CSRid = mysql_insert_id();
 
                foreach($_SESSION['_config']['rowid'] as $dom)
-                       mysql_query("insert into `domlink` set `certid`='$CSRid', `domid`='$dom'");
+                       mysql_query("insert into `domlink` set `certid`='$CSRid', `domid`='".intval($dom)."'");
                if(is_array($_SESSION['_config']['altid']))
                foreach($_SESSION['_config']['altid'] as $dom)
-                       mysql_query("insert into `domlink` set `certid`='$CSRid', `domid`='$dom'");
+                       mysql_query("insert into `domlink` set `certid`='$CSRid', `domid`='".intval($dom)."'");
 
                $CSRname=generatecertpath("csr","server",$CSRid);
                $fp = fopen($CSRname, "w");
@@ -2865,150 +2900,279 @@ function buildSubjectFromSession() {
                }
        }
 
-       if($id == 43 && array_key_exists('tverify',$_REQUEST) && $_REQUEST['tverify'] > 0)
+       /* presently not needed
+       if($id == 43 && array_key_exists('tverify',$_REQUEST) && $_REQUEST['tverify'] > 0 && $ticketvalidation==TRUE)
        {
                $memid = $_REQUEST['userid'] = intval($_REQUEST['tverify']);
+               if (!write_se_log($memid, $_SESSION['profile']['id'],'SE Change tverify status',$ticketno)) {
+                       showheader(_("Something went wrong"));
+                       echo _("Writing to the admin log failed. Can't continue.");
+                       showfooter();
+                       exit;
+               }
                $query = "select * from `users` where `id`='$memid'";
                $row = mysql_fetch_assoc(mysql_query($query));
                $ver = !$row['tverify'];
                mysql_query("update `users` set `tverify`='$ver' where `id`='$memid'");
+       }elseif($id == 43 && array_key_exists('tverify',$_REQUEST) && $_REQUEST['tverify'] > 0 && $ticketvalidation==FALSE){
+               $_SESSION['ticketmsg']='No action taken. Ticket number is missing!';
        }
+       */
 
-       if($id == 43 && array_key_exists('assurer',$_REQUEST) && $_REQUEST['assurer'] > 0)
+       if($id == 43 && array_key_exists('assurer',$_REQUEST) && $_REQUEST['assurer'] > 0 && $ticketvalidation == TRUE)
        {
                csrf_check('admsetassuret');
                $memid = $_REQUEST['userid'] = intval($_REQUEST['assurer']);
+               if (!write_se_log($memid, $_SESSION['profile']['id'],'SE Change assurer status',$ticketno)) {
+                       showheader(_("Something went wrong"));
+                       echo _("Writing to the admin log failed. Can't continue.");
+                       showfooter();
+                       exit;
+               }
                $query = "select * from `users` where `id`='$memid'";
                $row = mysql_fetch_assoc(mysql_query($query));
                $ver = !$row['assurer'];
                mysql_query("update `users` set `assurer`='$ver' where `id`='$memid'");
+       }elseif($id == 43 && array_key_exists('assurer',$_REQUEST) && $_REQUEST['assurer'] > 0 && $ticketvalidation == FALSE){
+               $_REQUEST['userid'] = intval($_REQUEST['assurer']);
+               $_SESSION['ticketmsg']='No action (Change assurer status) taken. Ticket number is missing!';
        }
 
-       if($id == 43 && array_key_exists('assurer_blocked',$_REQUEST) && $_REQUEST['assurer_blocked'] > 0)
+       if($id == 43 && array_key_exists('assurer_blocked',$_REQUEST) && $_REQUEST['assurer_blocked'] > 0 && $ticketvalidation == TRUE)
        {
                $memid = $_REQUEST['userid'] = intval($_REQUEST['assurer_blocked']);
+               if (!write_se_log($memid, $_SESSION['profile']['id'],'SE Change assurer blocked status',$ticketno)) {
+                       showheader(_("Something went wrong"));
+                       echo _("Writing to the admin log failed. Can't continue.");
+                       showfooter();
+                       exit;
+               }
                $query = "select * from `users` where `id`='$memid'";
                $row = mysql_fetch_assoc(mysql_query($query));
                $ver = !$row['assurer_blocked'];
                mysql_query("update `users` set `assurer_blocked`='$ver' where `id`='$memid'");
+       }elseif($id == 43 && array_key_exists('assurer_blocked',$_REQUEST) && $_REQUEST['assurer_blocked'] > 0 && $ticketvalidation == FALSE){
+               $_REQUEST['userid'] = intval($_REQUEST['assurer_blocked']);
+               $_SESSION['ticketmsg']='No action taken. Ticket number is missing!';
        }
 
-       if($id == 43 && array_key_exists('locked',$_REQUEST) && $_REQUEST['locked'] > 0)
+       if($id == 43 && array_key_exists('locked',$_REQUEST) && $_REQUEST['locked'] > 0 && $ticketvalidation == TRUE)
        {
                csrf_check('admactlock');
                $memid = $_REQUEST['userid'] = intval($_REQUEST['locked']);
+               if (!write_se_log($memid, $_SESSION['profile']['id'],'SE Change locked status',$ticketno)) {
+                       showheader(_("Something went wrong"));
+                       echo _("Writing to the admin log failed. Can't continue.");
+                       showfooter();
+                       exit;
+               }
                $query = "select * from `users` where `id`='$memid'";
                $row = mysql_fetch_assoc(mysql_query($query));
                $ver = !$row['locked'];
                mysql_query("update `users` set `locked`='$ver' where `id`='$memid'");
+       }elseif($id == 43 && array_key_exists('locked',$_REQUEST) && $_REQUEST['locked'] > 0 && $ticketvalidation == FALSE){
+               $_REQUEST['userid'] = intval($_REQUEST['locked']);
+               $_SESSION['ticketmsg']='No action taken. Ticket number is missing!';
        }
 
-       if($id == 43 && array_key_exists('codesign',$_REQUEST) && $_REQUEST['codesign'] > 0)
+       if($id == 43 && array_key_exists('codesign',$_REQUEST) && $_REQUEST['codesign'] > 0 && $ticketvalidation == TRUE)
        {
                csrf_check('admcodesign');
                $memid = $_REQUEST['userid'] = intval($_REQUEST['codesign']);
+               if (!write_se_log($memid, $_SESSION['profile']['id'],'SE Change codesign status',$ticketno)) {
+                       showheader(_("Something went wrong"));
+                       echo _("Writing to the admin log failed. Can't continue.");
+                       showfooter();
+                       exit;
+               }
                $query = "select * from `users` where `id`='$memid'";
                $row = mysql_fetch_assoc(mysql_query($query));
                $ver = !$row['codesign'];
                mysql_query("update `users` set `codesign`='$ver' where `id`='$memid'");
+       }elseif($id == 43 && array_key_exists('codesign',$_REQUEST) && $_REQUEST['codesign'] > 0 && $ticketvalidation == FALSE){
+               $_REQUEST['userid'] = intval($_REQUEST['codesign']);
+               $_SESSION['ticketmsg']='No action taken. Ticket number is missing!';
        }
 
-       if($id == 43 && array_key_exists('orgadmin',$_REQUEST) && $_REQUEST['orgadmin'] > 0)
+       if($id == 43 && array_key_exists('orgadmin',$_REQUEST) && $_REQUEST['orgadmin'] > 0 && $ticketvalidation == TRUE)
        {
                csrf_check('admorgadmin');
                $memid = $_REQUEST['userid'] = intval($_REQUEST['orgadmin']);
+               if (!write_se_log($memid, $_SESSION['profile']['id'],'SE Change org assuer status',$ticketno)) {
+                       showheader(_("Something went wrong"));
+                       echo _("Writing to the admin log failed. Can't continue.");
+                       showfooter();
+                       exit;
+               }
                $query = "select * from `users` where `id`='$memid'";
                $row = mysql_fetch_assoc(mysql_query($query));
                $ver = !$row['orgadmin'];
                mysql_query("update `users` set `orgadmin`='$ver' where `id`='$memid'");
+       }elseif($id == 43 && array_key_exists('orgadmin',$_REQUEST) && $_REQUEST['orgadmin'] > 0 && $ticketvalidation == FALSE){
+               $_REQUEST['userid'] = intval($_REQUEST['orgadmin']);
+               $_SESSION['ticketmsg']='No action taken. Ticket number is missing!';
        }
 
-       if($id == 43 && array_key_exists('ttpadmin',$_REQUEST) && $_REQUEST['ttpadmin'] > 0)
+       if($id == 43 && array_key_exists('ttpadmin',$_REQUEST) && $_REQUEST['ttpadmin'] > 0 && $ticketvalidation == TRUE)
        {
                csrf_check('admttpadmin');
                $memid = $_REQUEST['userid'] = intval($_REQUEST['ttpadmin']);
+               if(!write_se_log($memid, $_SESSION['profile']['id'],'SE Change ttp admin status',$ticketno)) {
+                       showheader(_("Something went wrong"));
+                       echo _("Writing to the admin log failed. Can't continue.");
+                       showfooter();
+                       exit;
+               }
                $query = "select * from `users` where `id`='$memid'";
                $row = mysql_fetch_assoc(mysql_query($query));
                $ver = !$row['ttpadmin'];
                mysql_query("update `users` set `ttpadmin`='$ver' where `id`='$memid'");
+       }elseif($id == 43 && array_key_exists('ttpadmin',$_REQUEST) && $_REQUEST['ttpadmin'] > 0 && $ticketvalidation == FALSE){
+               $_REQUEST['userid'] = intval($_REQUEST['ttpadmin']);
+               $_SESSION['ticketmsg']='No action taken. Ticket number is missing!';
        }
 
-       if($id == 43 && array_key_exists('adadmin',$_REQUEST) && $_REQUEST['adadmin'] > 0)
+       if($id == 43 && array_key_exists('adadmin',$_REQUEST) && $_REQUEST['adadmin'] > 0 && $ticketvalidation == TRUE)
        {
                $memid = $_REQUEST['userid'] = intval($_REQUEST['adadmin']);
+               if (!write_se_log($memid, $_SESSION['profile']['id'],'SE Change advertising admin status',$ticketno)) {
+                       showheader(_("Something went wrong"));
+                       echo _("Writing to the admin log failed. Can't continue.");
+                       showfooter();
+                       exit;
+               }
                $query = "select * from `users` where `id`='$memid'";
                $row = mysql_fetch_assoc(mysql_query($query));
                $ver = $row['adadmin'] + 1;
                if($ver > 2)
                        $ver = 0;
                mysql_query("update `users` set `adadmin`='$ver' where `id`='$memid'");
+       }elseif($id == 43 && array_key_exists('adadmin',$_REQUEST) && $_REQUEST['adadmin'] > 0 && $ticketvalidation == FALSE){
+               $_REQUEST['userid'] = intval($_REQUEST['adadmin']);
+               $_SESSION['ticketmsg']='No action taken. Ticket number is missing!';
        }
 
-       if($id == 43 && array_key_exists('locadmin',$_REQUEST) && $_REQUEST['locadmin'] > 0)
+       if($id == 43 && array_key_exists('locadmin',$_REQUEST) && $_REQUEST['locadmin'] > 0 && $ticketvalidation == TRUE)
        {
                $memid = $_REQUEST['userid'] = intval($_REQUEST['locadmin']);
+               if (!write_se_log($memid, $_SESSION['profile']['id'],'SE Change location admin status',$ticketno)) {
+                       showheader(_("Something went wrong"));
+                       echo _("Writing to the admin log failed. Can't continue.");
+                       showfooter();
+                       exit;
+               }
                $query = "select * from `users` where `id`='$memid'";
                $row = mysql_fetch_assoc(mysql_query($query));
                $ver = !$row['locadmin'];
                mysql_query("update `users` set `locadmin`='$ver' where `id`='$memid'");
+       }elseif($id == 43 && array_key_exists('locadmin',$_REQUEST) && $_REQUEST['locadmin'] > 0 && $ticketvalidation == FALSE){
+               $_REQUEST['userid'] = intval($_REQUEST['locadmin']);
+               $_SESSION['ticketmsg']='No action taken. Ticket number is missing!';
        }
 
-       if($id == 43 && array_key_exists('admin',$_REQUEST) && $_REQUEST['admin'] > 0)
+       if($id == 43 && array_key_exists('admin',$_REQUEST) && $_REQUEST['admin'] > 0 && $ticketvalidation == TRUE)
        {
                csrf_check('admsetadmin');
                $memid = $_REQUEST['userid'] = intval($_REQUEST['admin']);
+               if (!write_se_log($memid, $_SESSION['profile']['id'],'SE Change SE status',$ticketno)) {
+                       showheader(_("Something went wrong"));
+                       echo _("Writing to the admin log failed. Can't continue.");
+                       showfooter();
+                       exit;
+               }
                $query = "select * from `users` where `id`='$memid'";
                $row = mysql_fetch_assoc(mysql_query($query));
                $ver = !$row['admin'];
                mysql_query("update `users` set `admin`='$ver' where `id`='$memid'");
+       }elseif($id == 43 && array_key_exists('admin',$_REQUEST) && $_REQUEST['admin'] > 0 && $ticketvalidation == FALSE){
+               $_REQUEST['userid'] = intval($_REQUEST['admin']);
+               $_SESSION['ticketmsg']='No action taken. Ticket number is missing!';
        }
 
-       if($id == 43 && array_key_exists('general',$_REQUEST) && $_REQUEST['general'] > 0)
+       if($id == 43 && array_key_exists('general',$_REQUEST) && $_REQUEST['general'] > 0 && $ticketvalidation == TRUE)
        {
                $memid = $_REQUEST['userid'] = intval($_REQUEST['general']);
+               if (!write_se_log($memid, $_SESSION['profile']['id'],'SE Change general status',$ticketno)) {
+                       showheader(_("Something went wrong"));
+                       echo _("Writing to the admin log failed. Can't continue.");
+                       showfooter();
+                       exit;
+               }
                $query = "select * from `alerts` where `memid`='$memid'";
                $row = mysql_fetch_assoc(mysql_query($query));
                $ver = !$row['general'];
                mysql_query("update `alerts` set `general`='$ver' where `memid`='$memid'");
+       }elseif($id == 43 && array_key_exists('general',$_REQUEST) && $_REQUEST['general'] > 0 && $ticketvalidation == FALSE){
+               $_REQUEST['userid'] = intval($_REQUEST['general']);
+               $_SESSION['ticketmsg']='No action taken. Ticket number is missing!';
        }
 
-       if($id == 43 && array_key_exists('country',$_REQUEST) && $_REQUEST['country'] > 0)
+       if($id == 43 && array_key_exists('country',$_REQUEST) && $_REQUEST['country'] > 0 && $ticketvalidation == TRUE)
        {
                $memid = $_REQUEST['userid'] = intval($_REQUEST['country']);
+               if (!write_se_log($memid, $_SESSION['profile']['id'],'SE Change country status',$ticketno)) {
+                       showheader(_("Something went wrong"));
+                       echo _("Writing to the admin log failed. Can't continue.");
+                       showfooter();
+                       exit;
+               }
                $query = "select * from `alerts` where `memid`='$memid'";
                $row = mysql_fetch_assoc(mysql_query($query));
                $ver = !$row['country'];
                mysql_query("update `alerts` set `country`='$ver' where `memid`='$memid'");
+       }elseif($id == 43 && array_key_exists('country',$_REQUEST) && $_REQUEST['country'] > 0 && $ticketvalidation == FALSE){
+               $_REQUEST['userid'] = intval($_REQUEST['country']);
+               $_SESSION['ticketmsg']='No action taken. Ticket number is missing!';
        }
 
-       if($id == 43 && array_key_exists('regional',$_REQUEST) && $_REQUEST['regional'] > 0)
+       if($id == 43 && array_key_exists('regional',$_REQUEST) && $_REQUEST['regional'] > 0 && $ticketvalidation == TRUE)
        {
                $memid = $_REQUEST['userid'] = intval($_REQUEST['regional']);
+               if (!write_se_log($memid, $_SESSION['profile']['id'],'SE Change regional status',$ticketno)) {
+                       showheader(_("Something went wrong"));
+                       echo _("Writing to the admin log failed. Can't continue.");
+                       showfooter();
+                       exit;
+               }
                $query = "select * from `alerts` where `memid`='$memid'";
                $row = mysql_fetch_assoc(mysql_query($query));
                $ver = !$row['regional'];
                mysql_query("update `alerts` set `regional`='$ver' where `memid`='$memid'");
+       }elseif($id == 43 && array_key_exists('regional',$_REQUEST) && $_REQUEST['regional'] > 0 && $ticketvalidation == FALSE){
+               $_REQUEST['userid'] = intval($_REQUEST['regional']);
+               $_SESSION['ticketmsg']='No action taken. Ticket number is missing!';
        }
 
-       if($id == 43 && array_key_exists('radius',$_REQUEST) && $_REQUEST['radius'] > 0)
+       if($id == 43 && array_key_exists('radius',$_REQUEST) && $_REQUEST['radius'] > 0 && $ticketvalidation == TRUE)
        {
                $memid = $_REQUEST['userid'] = intval($_REQUEST['radius']);
+               if (!write_se_log($memid, $_SESSION['profile']['id'],'SE Change radius status',$ticketno)) {
+                       showheader(_("Something went wrong"));
+                       echo _("Writing to the admin log failed. Can't continue.");
+                       showfooter();
+                       exit;
+               }
                $query = "select * from `alerts` where `memid`='$memid'";
                $row = mysql_fetch_assoc(mysql_query($query));
                $ver = !$row['radius'];
                mysql_query("update `alerts` set `radius`='$ver' where `memid`='$memid'");
+       }elseif($id == 43 && array_key_exists('radius',$_REQUEST) && $_REQUEST['radius'] > 0 && $ticketvalidation == false){
+               $_REQUEST['userid'] = intval($_REQUEST['radius']);
+               $_SESSION['ticketmsg']='No action taken. Ticket number is missing!';
        }
 
        if($id == 50)
        {
-               if(array_key_exists('userid',$_REQUEST) && $_REQUEST['userid'] != "")
+               if(array_key_exists('userid',$_REQUEST) && $_REQUEST['userid'] !== "") {
                        $_REQUEST['userid'] = intval($_REQUEST['userid']);
+               }
 
                $row = mysql_fetch_assoc(mysql_query("select * from `users` where `id`='".intval($_REQUEST['userid'])."'"));
-               if($row['email'] == "")
+               if($row['email'] == "") {
                        $id = 42;
-               else
+               } else {
                        $_REQUEST['email'] = $row['email'];
+               }
        }
 
        if($oldid == 50)
@@ -3023,151 +3187,69 @@ function buildSubjectFromSession() {
                if (trim($_REQUEST['arbitrationno'])==""){
                        showheader(_("My CAcert.org Account!"));
                        echo _("You did not enter an arbitration number entry.");
+                       printf('<br/><a href="account.php?id=43&amp;userid=' . intval($_REQUEST['userid']) . '">' . _('Back to previous page.') .'</a>');
                        showfooter();
                        exit;
                }
                if ( 1 !== preg_match('/^[a-z]\d{8}\.\d+\.\d+$/i',trim($_REQUEST['arbitrationno'])) ) {
                        showheader(_("My CAcert.org Account!"));
                        printf(_("'%s' is not a valid arbitration number entry."), sanitizeHTML(trim($_REQUEST['arbitrationno'])));
+                       printf('<br/><a href="account.php?id=43&amp;userid=' . intval($_REQUEST['userid']) . '">' . _('Back to previous page.') .'</a>');
                        showfooter();
                        exit;
                }
                if (check_email_exists(trim($_REQUEST['arbitrationno']).'@cacert.org')) {
                        showheader(_("My CAcert.org Account!"));
                        printf(_("The email address '%s' is already in a different account. Can't continue."), sanitizeHTML($_REQUEST['arbitrationno'].'@cacert.org'));
+                       printf('<br/><a href="account.php?id=43&amp;userid=' . intval($_REQUEST['userid']) . '">' . _('Back to previous page.') .'</a>');
                        showfooter();
                        exit;
-                }
-               if (check_client_cert_running($_REQUEST['userid'],1) ||
-                       check_server_cert_running($_REQUEST['userid'],1) ||
-                       check_gpg_cert_running($_REQUEST['userid'],1)) {
+               }
+               if (check_client_cert_running(intval($_REQUEST['userid']),1) ||
+                       check_server_cert_running(intval($_REQUEST['userid']),1) ||
+                       check_gpg_cert_running(intval($_REQUEST['userid']),1)) {
                        showheader(_("My CAcert.org Account!"));
                        printf(_("The CCA retention time for at least one certificate is not over. Can't continue."));
+                       printf('<br/><a href="account.php?id=43&amp;userid=' . intval($_REQUEST['userid']) . '">' . _('Back to previous page.') .'</a>');
                        showfooter();
                        exit;
                }
-               if (check_is_orgadmin($_REQUEST['userid'],1)) {
+               if (check_is_orgadmin(intval($_REQUEST['userid']),1)) {
                        showheader(_("My CAcert.org Account!"));
                        printf(_("The user is listed as Organisation Administrator. Can't continue."));
+                       printf('<br/><a href="account.php?id=43&amp;userid=' . intval($_REQUEST['userid']) . '">' . _('Back to previous page.') .'</a>');
+                       showfooter();
+                       exit;
+               }
+               if (!write_se_log(intval($_REQUEST['userid']), $_SESSION['profile']['id'], 'SE Account delete', trim($_REQUEST['arbitrationno']))) {
+                       showheader(_("Something went wrong"));
+                       echo _("Writing to the admin log failed. Can't continue.");
+                       printf('<br/><a href="account.php?id=43&amp;userid=' . intval($_REQUEST['userid']) . '">' . _('Back to previous page.') .'</a>');
                        showfooter();
                        exit;
                }
-               account_delete($_REQUEST['userid'], trim($_REQUEST['arbitrationno']), $_SESSION['profile']['id']);
+               account_delete(intval($_REQUEST['userid']), trim($_REQUEST['arbitrationno']), $_SESSION['profile']['id']);
        }
 
-       if(($id == 51 || $id == 52 || $oldid == 52) && $_SESSION['profile']['tverify'] <= 0)
+       if(($id == 51 || $id == 52 || $oldid == 52))
        {
                showheader(_("My CAcert.org Account!"));
-               echo _("You don't have access to this area.");
+               echo _("You don't have access to this area.\nThe Tverify programme is terminated as of 16th November 2010" );
                showfooter();
                exit;
        }
 
-       if($oldid == 52)
-       {
-               $uid = intval($_REQUEST['uid']);
-               $query = "select * from `tverify` where `id`='$uid' and `modified`=0";
-               $rc = mysql_num_rows(mysql_query($query));
-               if($rc <= 0)
-               {
-                       showheader(_("My CAcert.org Account!"));
-                       echo _("Unable to find a valid tverify request for this ID.");
-                       showfooter();
-                       exit;
-               }
-       }
-
-       if($oldid == 52)
-       {
-               $query = "select * from `tverify-vote` where `tverify`='$uid' and `memid`='".$_SESSION['profile']['id']."'";
-               $rc = mysql_num_rows(mysql_query($query));
-               if($rc > 0)
+       if($id == 59){
+               if (!($oldid == 43 && $_SESSION['profile']['admin'] == 1) &&
+                   !($oldid == 13 && intval($_REQUEST['userid']) == $_SESSION['profile']['id']))
                {
                        showheader(_("My CAcert.org Account!"));
-                       echo _("You have already voted on this request.");
+                       echo _("You do not have access to this page.");
                        showfooter();
                        exit;
                }
        }
 
-       if($oldid == 52 && ($_REQUEST['agree'] != "" || $_REQUEST['disagree'] != ""))
-       {
-               $vote = -1;
-               if($_REQUEST['agree'] != "")
-                       $vote = 1;
-
-               $query = "insert into `tverify-vote` set
-                               `tverify`='$uid',
-                               `memid`='".$_SESSION['profile']['id']."',
-                               `when`=NOW(), `vote`='$vote',
-                               `comment`='".mysql_real_escape_string($_REQUEST['comment'])."'";
-               mysql_query($query);
-
-               $rc = mysql_num_rows(mysql_query("select * from `tverify-vote` where `tverify`='$uid' and `vote`='1'"));
-               if($rc >= 8)
-               {
-                       mysql_query("update `tverify` set `modified`=NOW() where `id`='$uid'");
-                       $tverify = mysql_fetch_assoc(mysql_query("select * from `tverify` where `id`='$uid'"));
-                       $memid = $tverify['memid'];
-                       $user = mysql_fetch_assoc(mysql_query("select * from `users` where `id`='$memid'"));
-                       $tmp = mysql_fetch_assoc(mysql_query("select sum(`points`) as `points` from `notary` where `to`='$memid'"));
-
-                       $points = 0;
-                       if($tverify['URL'] != "" && $tverify['photoid'] != "")
-                               $points = 150 - intval($tmp['points']);
-                       if($tverify['URL'] != "" && $tverify['photoid'] == "")
-                               $points = 90 - intval($tmp['points']);
-                       if($tverify['URL'] == "" && $tverify['photoid'] == "")
-                               $points = 50 - intval($tmp['points']);
-
-                       if($points < 0)
-                               $points = 0;
-
-                       if($points > 0)
-                       {
-                               mysql_query("insert into `notary` set `from`='0', `to`='$memid', `points`='$points',
-                                               `method`='Thawte Points Transfer', `when`=NOW()");
-                               fix_assurer_flag($memid);
-                       }
-                       $totalpoints = intval($tmp['points']) + $points;
-
-                       $body  = _("Your request to have points transfered was successful. You were issued $points points as a result, and you now have $totalpoints in total")."\n\n"._("The following comments were made by reviewers")."\n\n";
-                       $res = mysql_query("select * from `tverify-vote` where `tverify`='$uid' and `vote`='1'");
-                       while($row = mysql_fetch_assoc($res))
-                               $body .= $row['comment']."\n";
-                       $body .= "\n";
-
-                       $body .= _("Best regards")."\n";
-                       $body .= _("CAcert Support Team");
-                       sendmail($user['email'], "[CAcert.org] Thawte Notary Points Transfer", $body, "website-form@cacert.org", "support@cacert.org", "", "CAcert Tverify");
-               }
-
-               $rc = mysql_num_rows(mysql_query("select * from `tverify-vote` where `tverify`='$uid' and `vote`='-1'"));
-               if($rc >= 4)
-               {
-                       mysql_query("update `tverify` set `modified`=NOW() where `id`='$uid'");
-                       $tverify = mysql_fetch_assoc(mysql_query("select * from `tverify` where `id`='$uid'"));
-                       $memid = $tverify['memid'];
-                       $user = mysql_fetch_assoc(mysql_query("select * from `users` where `id`='$memid'"));
-
-                       $body  = _("Unfortunately your request for a points increase has been denied, below is the comments from people that reviewed your request as to why they rejected your application.")."\n\n";
-                       $res = mysql_query("select * from `tverify-vote` where `tverify`='$uid' and `vote`='-1'");
-                       while($row = mysql_fetch_assoc($res))
-                               $body .= $row['comment']."\n";
-                       $body .= "\n";
-
-                       $body .= _("You are welcome to try submitting another request at any time in the future, please make sure you take the reviewer comments into consideration or you risk having your application rejected again.")."\n\n";
-
-                       $body .= _("Best regards")."\n";
-                       $body .= _("CAcert Support Team");
-                       sendmail($user['email'], "[CAcert.org] Thawte Notary Points Transfer", $body, "website-form@cacert.org", "support@cacert.org", "", "CAcert Tverify");
-               }
-
-               showheader(_("My CAcert.org Account!"));
-               echo _("Your vote has been accepted.");
-               showfooter();
-               exit;
-       }
 
        if(intval($cert) > 0)
                $_SESSION['_config']['cert'] = intval($cert);
index dbebf6a..0fda2f1 100644 (file)
@@ -22,6 +22,7 @@
        function showheader($title = "CAcert.org", $title2 = "")
        {
                global $id, $PHP_SELF;
+       $PHP_SELF = &$_SERVER['PHP_SELF'];
        $expand="";
        $tmpid = $id;
        if($PHP_SELF == "/wot.php")
 
        switch($tmpid)
        {
-               case 1:
-               case 2: $expand = " explode('emailacc');"; break;
-               case 3:
-               case 4:
-               case 5:
-               case 6: $expand = " explode('clicerts');"; break;
-               case 7:
-               case 8:
-               case 9: $expand = " explode('domains');"; break;
-               case 10:
-               case 11:
-               case 12:
-               case 15: $expand = " explode('servercert');"; break;
-               case 13:
-               case 14:
-               case 36:
-               case 41:
+               case 1:                                                 // Add email address
+               case 2: $expand = " explode('emailacc');"; break;       // View email addresses
+               case 3:                                                 // Add Client certificate
+               case 4:                                                 // Confirm Client Certificate Request
+               case 5:                                                 // View Client Certificates
+               case 6: $expand = " explode('clicerts');"; break;       // Client Certificate page
+               case 7:                                                 // Add new domain
+               case 8:                                                 // Confirm Domain page
+               case 9: $expand = " explode('domains');"; break;        // View Domains
+               case 10:                                                // Add Server Certifiacte
+               case 11:                                                // Confirm Server Certificate Rewust
+               case 12:                                                // View Server Cerificate
+               case 15: $expand = " explode('servercert');"; break;    // Server Certificate page
+               case 13:                                                // ViewEdit
+               case 14:                                                // Change password
+               case 36:                                                // My Alert settings
+               case 41:                                                // Language Settings
+               case 55:                                                // Trainings
+               case 59:                                                // Account History
                case 507:
-               case 508:
-               case 513: $expand = " explode('mydetails');"; break;
-               case 16:
-               case 17:
-               case 18:
-               case 19: $expand = " explode('clientorg');"; break;
-               case 20:
-               case 21:
-               case 22:
-               case 23: $expand = " explode('serverorg');"; break;
-               case 24:
-               case 25:
-               case 26:
-               case 27:
-               case 28:
-               case 29:
-               case 30:
+               case 508:                                               // My Listing
+               case 510:                                               // Old points calculation
+               case 515:                                               // New points calculation
+               case 513: $expand = " explode('mydetails');"; break;    // My Location
+               case 16:                                                // Add Org Client Cert
+               case 17:                                                // Confirm Org Client Certificate Request
+               case 18:                                                // View Org Client Certificate
+               case 19: $expand = " explode('clientorg');"; break;     // Org Cleint Cert page
+               case 20:                                                // Add Org Server Cert
+               case 21:                                                // Conform Org Server Cert Request
+               case 22:                                                // View Org Server Certs
+               case 23: $expand = " explode('serverorg');"; break;     // Org Server Certificate page
+               case 24:                                                // Add new Organisation
+               case 25:                                                // View Organisation List
+               case 26:                                                // View Organisation Domains
+               case 27:                                                // Edit Org Account
+               case 28:                                                // View Add Org Domain
+               case 29:                                                // Edit Org Domain
+               case 30:                                                // Delete Org Domain
                case 31:
-               case 32:
-               case 33:
-               case 34:
-               case 35: $expand = " explode('orgadmin');"; break;
+               case 32:                                                // View Org Admin
+               case 33:                                                // Add Org Admin
+               case 34:                                                // Delete Org Admin
+               case 60:                                                // View Organisation Account History
+               case 35: $expand = " explode('orgadmin');"; break;      // View Org Admin Organisation List
                case 42:
                case 43:
                case 44:
                case 50:
                case 54:
                case 53: $expand = " explode('sysadmin');"; break;
-               case 500:
+               case 500:                                               // CAcert Web of Trust
                case 501:
-               case 502:
-               case 503:
-               case 504:
-               case 505:
+               case 502:                                               // Become an Assurer
+               case 503:                                               // CAcert Web of Trust Roles
+               case 504:                                               // TTP
+               case 505:                                               // Assurer Some one
                case 506:
                case 509:
-               case 510:
                case 511:
-               case 512: $expand = " explode('WoT');"; break;
+               case 512: $expand = " explode('WoT');"; break;          // Find Assurer
                case 1000:
                case 1001:
-               case 1002:
+               case 1002:                                              // View GPG key
                case 1003:
                case 1004:
                case 1005:
                case 1008:
                case 1009:
                case 1010: $expand = " explode('gpg');"; break;
-               case 1500:
-               case 1501:
-               case 1502:
+               case 1500:                                              // Dipute
+               case 1501:                                              // Dispute Email Request
+               case 1502:                                              // ViewEdit
                case 1503:
                case 1504:
                case 1505:
@@ -172,9 +177,11 @@ function hideall() {
     </div>
     <div class="relatedLinks">
       <h3 class="pointer" onclick="explode('mydetails')">+ <?=_("My Details")?></h3>
-      <ul class="menu" id="mydetails"><li><a href="account.php?id=13"><?=_("View/Edit")?></a></li><li><a href="account.php?id=14"><?=_("Change Password")?></a></li><li><a href="account.php?id=41"><?=_("Default Language")?></a></li><li><a href="wot.php?id=8"><?=_("My Listing")?></a></li><li><a href="wot.php?id=13"><?=_("My Location")?></a></li><li><a href="account.php?id=36"><?=_("My Alert Settings")?></a></li><li><a href="wot.php?id=10"><?=_("My Points")?></a></li><?
+      <ul class="menu" id="mydetails"><li><a href="account.php?id=13"><?=_("View/Edit")?></a></li><li><a href="account.php?id=14"><?=_("Change Password")?></a></li><li><a href="account.php?id=41"><?=_("Default Language")?></a></li><li><a href="wot.php?id=8"><?=_("My Listing")?></a></li><li><a href="wot.php?id=13"><?=_("My Location")?></a></li><li><a href="account.php?id=36"><?=_("My Alert Settings")?></a></li><li><a href="account.php?id=55"><?=_("My Trainings")?></a></li><li><a href="wot.php?id=10"><?=_("My Points")?></a></li><?
+/* to delete
        if($_SESSION['profile']['id'] == 1 || $_SESSION['profile']['id'] == 5897)
                echo "<li><a href='sqldump.php'>SQL Dump</a></li>";
+*/
        ?></ul>
     </div>
     <div class="relatedLinks">
@@ -217,7 +224,7 @@ function hideall() {
 <? } ?>
     <div class="relatedLinks">
       <h3 class="pointer" onclick="explode('WoT')">+ <?=_("CAcert Web of Trust")?></h3>
-      <ul class="menu" id="WoT"><li><a href="wot.php?id=0"><?=_("About")?></a></li><li><a href="wot.php?id=12"><?=_("Find an Assurer")?></a></li><li><a href="wot.php?id=3"><?=_("Rules")?></a></li><li><? if($_SESSION['profile']['assurer'] != 1) { ?><a href="wot.php?id=2"><?=_("Becoming an Assurer")?></a><? } else { ?><a href="wot.php?id=5"><?=_("Assure Someone")?></a><? } ?></li><li><a href="wot.php?id=4"><?=_("Trusted ThirdParties")?></a></li><? if($_SESSION['profile']['points'] >= 500) { ?><li><a href="wot.php?id=11"><div style="white-space:nowrap"><?=_("Organisation Assurance")?></div></a></li><? } ?><li><a href="account.php?id=55"><?=_("Training")?></a></li></ul>
+      <ul class="menu" id="WoT"><li><a href="wot.php?id=0"><?=_("About")?></a></li><li><a href="wot.php?id=12"><?=_("Find an Assurer")?></a></li><li><a href="wot.php?id=3"><?=_("Rules")?></a></li><li><? if($_SESSION['profile']['assurer'] != 1) { ?><a href="wot.php?id=2"><?=_("Becoming an Assurer")?></a><? } else { ?><a href="wot.php?id=5"><?=_("Assure Someone")?></a><? } ?></li><li><a href="wot.php?id=4"><?=_("Trusted ThirdParties")?></a></li><? if($_SESSION['profile']['points'] >= 500) { ?><li><a href="wot.php?id=11"><div style="white-space:nowrap"><?=_("Organisation Assurance")?></div></a></li><? } ?></ul>
     </div>
     <div class="relatedLinks">
       <h3 class="pointer" onclick="explode('WoTForms')">+ <?=_("CAP Forms")?></h3><?
index f36ccdf..854aab4 100644 (file)
@@ -57,7 +57,7 @@
                exit;
        }
 
-       if(array_key_exists('HTTP_HOST',$_SERVER) && 
+       if(array_key_exists('HTTP_HOST',$_SERVER) &&
                        ($_SERVER['HTTP_HOST'] == $_SESSION['_config']['securehostname'] ||
                        $_SERVER['HTTP_HOST'] == $_SESSION['_config']['tverify']))
        {
        L10n::detect_language();
        L10n::init_gettext();
 
-        if(array_key_exists('profile',$_SESSION) && is_array($_SESSION['profile']) && array_key_exists('id',$_SESSION['profile']) && $_SESSION['profile']['id'] > 0)
+       if(array_key_exists('profile',$_SESSION) && is_array($_SESSION['profile']) && array_key_exists('id',$_SESSION['profile']) && $_SESSION['profile']['id'] > 0)
        {
-               $locked = mysql_fetch_assoc(mysql_query("select `locked` from `users` where `id`='".$_SESSION['profile']['id']."'"));
+               $locked = mysql_fetch_assoc(mysql_query("select `locked` from `users` where `id`='".intval($_SESSION['profile']['id'])."'"));
                if($locked['locked'] == 0)
                {
-                       $query = "select sum(`points`) as `total` from `notary` where `to`='".$_SESSION['profile']['id']."' group by `to`";
+                       $query = "select sum(`points`) as `total` from `notary` where `to`='".intval($_SESSION['profile']['id'])."' and `deleted` = 0 group by `to`";
                        $res = mysql_query($query);
                        $row = mysql_fetch_assoc($res);
                        $_SESSION['profile']['points'] = $row['total'];
                        $points++;
 
                //echo "Points due to length and charset: $points<br/>";
-               
+
                // check for historical password proposal
                if ($pwd === "Fr3d Sm|7h") {
                        return 0;
                }
-               
+
                return $points;
        }
 
        function checkpw($pwd, $email, $fname, $mname, $lname, $suffix)
        {
                $points = checkpwlight($pwd);
-               
+
                if(@strstr(strtolower($pwd), strtolower($email)))
                        $points--;
 
        {
                $bits = explode(": ", $_SESSION['_config']['subject'], 2);
                $bits = str_replace(", ", "|", str_replace("/", "|", array_key_exists('1',$bits)?$bits['1']:""));
-               $bits = explode("|", $bits);    
+               $bits = explode("|", $bits);
 
                $_SESSION['_config']['cnc'] = $_SESSION['_config']['subaltc'] = 0;
                $_SESSION['_config']['OU'] = "";
                                        $dom = $bits[$i];
                                $_SESSION['_config']['row'] = "";
                                $dom = mysql_real_escape_string($dom);
-                               $query = "select * from domains where `memid`='".$_SESSION['profile']['id']."' and `domain` like '$dom' and `deleted`=0 and `hash`=''";
+                               $query = "select * from domains where `memid`='".intval($_SESSION['profile']['id'])."' and `domain` like '$dom' and `deleted`=0 and `hash`=''";
                                $res = mysql_query($query);
                                if(mysql_num_rows($res) > 0)
                                {
                                        $dom = $bits[$i];
                                $_SESSION['_config']['altrow'] = "";
                                $dom = mysql_real_escape_string($dom);
-                               $query = "select * from domains where `memid`='".$_SESSION['profile']['id']."' and `domain` like '$dom' and `deleted`=0 and `hash`=''";
+                               $query = "select * from domains where `memid`='".intval($_SESSION['profile']['id'])."' and `domain` like '$dom' and `deleted`=0 and `hash`=''";
                                $res = mysql_query($query);
                                if(mysql_num_rows($res) > 0)
                                {
                                $_SESSION['_config']['row'] = "";
                                $dom = mysql_real_escape_string($dom);
                                $query = "select *, `orginfo`.`id` as `id` from `orginfo`,`orgdomains`,`org` where
-                                               `org`.`memid`='".$_SESSION['profile']['id']."' and
+                                               `org`.`memid`='".intval($_SESSION['profile']['id'])."' and
                                                `org`.`orgid`=`orginfo`.`id` and
                                                `orgdomains`.`orgid`=`orginfo`.`id` and
                                                `orgdomains`.`domain`='$dom'";
                                $_SESSION['_config']['altrow'] = "";
                                $dom = mysql_real_escape_string($dom);
                                $query = "select * from `orginfo`,`orgdomains`,`org` where
-                                               `org`.`memid`='".$_SESSION['profile']['id']."' and
+                                               `org`.`memid`='".intval($_SESSION['profile']['id'])."' and
                                                `org`.`orgid`=`orginfo`.`id` and
                                                `orgdomains`.`orgid`=`orginfo`.`id` and
                                                `orgdomains`.`domain`='$dom'";
                                $dom = $bits[$i];
                        $dom = mysql_real_escape_string($dom);
                        $query = "select * from `org`,`orgdomains`,`orginfo`
-                                       where `org`.`memid`='".$_SESSION['profile']['id']."'
+                                       where `org`.`memid`='".intval($_SESSION['profile']['id'])."'
                                        and `orgdomains`.`orgid`=`org`.`orgid`
                                        and `orginfo`.`id`=`org`.`orgid`
                                        and `orgdomains`.`domain`='$dom'";
                if($id <= 0)
                        $id = $_SESSION['profile']['id'];
 
-               $query = "select sum(`points`) as `points` from `notary` where `to`='$id' group by `to`";
+               $query = "select sum(`points`) as `points` from `notary` where `to`='$id' and `deleted` = 0 group by `to`";
                $row = mysql_fetch_assoc(mysql_query($query));
                $points = $row['points'];
 
                $dob = date("Y-m-d", mktime(0,0,0,date("m"),date("d"),date("Y")-18));
-               $query = "select * from `users` where `id`='".$_SESSION['profile']['id']."' and `dob` < '$dob'";
+               $query = "select * from `users` where `id`='".intval($_SESSION['profile']['id'])."' and `dob` < '$dob'";
                if(mysql_num_rows(mysql_query($query)) < 1)
                {
                        if($points >= 100)
                                $fp = @fsockopen($domain,25,$errno,$errstr,5);
                                if($fp)
                                {
-                               
+
                                        $line = fgets($fp, 4096);
                                         while(substr($line, 0, 4) == "220-")
                                                $line = fgets($fp, 4096);
 
                                        $line = mysql_real_escape_string(trim(strip_tags($line)));
                                        $query = "insert into `pinglog` set `when`=NOW(), `email`='$myemail', `result`='$line'";
-                                       if(is_array($_SESSION['profile'])) $query.=", `uid`='".$_SESSION['profile']['id']."'";
+                                       if(is_array($_SESSION['profile'])) $query.=", `uid`='".intval($_SESSION['profile']['id'])."'";
                                        mysql_query($query);
 
                                        if(substr($line, 0, 3) != "250")
                                }
                        }
                }
-               $query = "insert into `pinglog` set `when`=NOW(), `uid`='".$_SESSION['profile']['id']."',
+               $query = "insert into `pinglog` set `when`=NOW(), `uid`='".intval($_SESSION['profile']['id'])."',
                                `email`='$myemail', `result`='Failed to make a connection to the mail server'";
                mysql_query($query);
                return _("Failed to make a connection to the mail server");
                return $ticket;
        }
 
-       function sanitizeHTML($input) 
+       function sanitizeHTML($input)
        {
                return htmlentities(strip_tags($input), ENT_QUOTES);
                //In case of problems, please use the following line again:
                $text=preg_replace("/[^\w-.@]/","",$text);
                return($text);
        }
-       
+
 
        // returns text message to be shown to the user given the result of is_no_assurer
        function no_assurer_text($Status)
                        $name="../$type/$kind/".intval($id/1000)."/$kind-".intval($id).".$type";
                        if (!is_dir("../csr")) { mkdir("../csr",0777); }
                        if (!is_dir("../crt")) { mkdir("../crt",0777); }
-                       
+
                        if (!is_dir("../csr/$kind")) { mkdir("../csr/$kind",0777); }
                        if (!is_dir("../crt/$kind")) { mkdir("../crt/$kind",0777); }
                        if (!is_dir("../csr/$kind/".intval($id/1000))) { mkdir("../csr/$kind/".intval($id/1000)); }
index e311668..dd8afd3 100644 (file)
 
 /**
  * Function to recalculate the cached Assurer status
- * 
+ *
  * @param int $userID
  *     if the user ID is not given the flag will be recalculated for all users
- * 
+ *
  * @return bool
  *     false if there was an error on fixing the flag. This does NOT return the
  *     new value of the flag
@@ -30,7 +30,7 @@
 function fix_assurer_flag($userID = NULL)
 {
        // Update Assurer-Flag on users table if 100 points and CATS passed.
-       // 
+       //
        // We may have some performance issues here if no userID is given
        // there are ~150k assurances and ~220k users currently
        // but the exists-clause on cats_passed should be a good filter
@@ -46,20 +46,21 @@ function fix_assurer_flag($userID = NULL)
                                WHERE `cp`.`variant_id` = `cv`.`id`
                                        AND `cv`.`type_id` = 1
                                        AND `cp`.`user_id` = `u`.`id`
-                       ) 
+                       )
                        AND (
                                SELECT SUM(`points`) FROM `notary` AS `n`
                                WHERE `n`.`to` = `u`.`id`
                                        AND (`n`.`expire` > now()
-                                       OR `n`.`expire` IS NULL)
+                                            OR `n`.`expire` IS NULL)
+                                       AND `n`.`deleted` = 0
                        ) >= 100';
-       
+
        $query = mysql_query($sql);
        if (!$query) {
                return false;
        }
        // Challenge has been passed and non-expired points >= 100
-       
+
        // Reset flag if requirements are not met
        //
        // Also a bit performance critical but assurer flag is only set on
@@ -86,13 +87,64 @@ function fix_assurer_flag($userID = NULL)
                                                        `n`.`expire` > now()
                                                        OR `n`.`expire` IS NULL
                                                )
+                                               AND `n`.`deleted` = 0
                                ) < 100
                        )';
-       
+
        $query = mysql_query($sql);
        if (!$query) {
                return false;
        }
-       
+
        return true;
-}
\ No newline at end of file
+}
+
+/**
+ * Supported hash algorithms for signing certificates
+ */
+class HashAlgorithms {
+       /**
+        * Default hash algorithm identifier for signing
+        * @var string
+        */
+       public static $default = 'sha256';
+
+       /**
+        * Get display strings for the supported hash algorithms
+        * @return array(string=>array('name'=>string, 'info'=>string))
+        *     - [$hash_identifier]['name'] = Name that should be displayed in UI
+        *     - [$hash_identifier]['info'] = Additional information that can help
+        *       with the selection of a suitable algorithm
+        */
+       public static function getInfo() {
+               return array(
+                               'sha256' => array(
+                                               'name' => 'SHA-256',
+                                               'info' => _('Currently recommended, because the other algorithms might break on some older versions of the GnuTLS library (older than 3.x) still shipped in Debian for example.'),
+                                       ),
+                               'sha384' => array(
+                                               'name' => 'SHA-384',
+                                               'info' => '',
+                                       ),
+                               'sha512' => array(
+                                               'name' => 'SHA-512',
+                                               'info' => _('Highest protection against hash collision attacks of the algorithms offered here.'),
+                                       ),
+                       );
+       }
+
+       /**
+        * Check if the input is a supported hash algorithm identifier otherwise
+        * return the identifier of the default hash algorithm
+        *
+        * @param string $hash_identifier
+        * @return string The cleaned identifier
+        */
+       public static function clean($hash_identifier) {
+               if (array_key_exists($hash_identifier, self::getInfo() )) {
+                       return $hash_identifier;
+               } else {
+                       return self::$default;
+               }
+       }
+}
index 85b132d..127c6b7 100644 (file)
 
 /**
  * Checks if the user may log in and retrieve the user id
- * 
+ *
  * Usually called with $_SERVER['SSL_CLIENT_M_SERIAL'] and
  *     $_SERVER['SSL_CLIENT_I_DN_CN']
- * 
+ *
  * @param $serial string
  *     usually $_SERVER['SSL_CLIENT_M_SERIAL']
  * @param $issuer_cn string
@@ -43,7 +43,7 @@ function get_user_id_from_cert($serial, $issuer_cn)
                $row = mysql_fetch_assoc($res);
                return intval($row['memid']);
        }
-       
+
        return -1;
 }
 
@@ -71,7 +71,7 @@ function failWithId($errormessage) {
 
 /**
  * Runs a command on the shell and return it's exit code and output
- * 
+ *
  * @param string $command
  *             The command to run. Make sure that you escapeshellarg() any non-constant
  *             parts as this is executed on a shell!
@@ -85,7 +85,7 @@ function failWithId($errormessage) {
  * @param string|bool $errors
  *             The output the command wrote to STDERR (this is passed as reference),
  *             if true (default) the output will be written to the real STDERR
- * 
+ *
  * @return int|bool
  *             The exit code of the command, true if the execution of the command
  *             failed (true because then
@@ -93,38 +93,38 @@ function failWithId($errormessage) {
  */
 function runCommand($command, $input = "", &$output = null, &$errors = true) {
        $descriptorspec = array();
-       
+
        if ($input !== true) {
                $descriptorspec[0] = array("pipe", "r"); // STDIN for child
        }
-       
+
        if ($output !== true) {
                $descriptorspec[1] = array("pipe", "w"); // STDOUT for child
        }
-       
+
        if ($errors !== true) {
                $descriptorspec[2] = array("pipe", "w"); // STDERR for child
        }
-       
+
        $proc = proc_open($command, $descriptorspec, $pipes);
-       
+
        if (is_resource($proc))
        {
                if ($input !== true) {
                        fwrite($pipes[0], $input);
                        fclose($pipes[0]);
                }
-               
+
                if ($output !== true) {
                        $output = stream_get_contents($pipes[1]);
                }
-               
+
                if ($errors !== true) {
                        $errors = stream_get_contents($pipes[2]);
                }
-               
+
                return proc_close($proc);
-               
+
        } else {
                return true;
        }
@@ -145,19 +145,18 @@ function runCommand($command, $input = "", &$output = null, &$errors = true) {
                {
                        $Result |= 5;
                }
-               
-               $query = mysql_query('SELECT SUM(`points`) AS `points` FROM `notary` AS `n` WHERE `n`.`to` = \''.(int)intval($userID).'\' AND `n`.`expire` < now()');
+
+               $query = mysql_query('SELECT SUM(`points`) AS `points` FROM `notary` AS `n` WHERE `n`.`to` = \''.(int)intval($userID).'\' AND `n`.`expire` < now() and `deleted` = 0');
                $row = mysql_fetch_assoc($query);
                if ($row['points'] < 100) {
                        $Result |= 3;
                }
-               
+
                $query = mysql_query('SELECT `assurer_blocked` FROM `users` WHERE `id` = \''.(int)intval($userID).'\'');
                $row = mysql_fetch_assoc($query);
                if ($row['assurer_blocked'] > 0) {
                        $Result |= 9;
                }
-               
+
                return $Result;
        }
-       
\ No newline at end of file
index 85b7aff..e325add 100644 (file)
 class L10n {
        /**
         * These are tranlations we currently support.
-        * 
+        *
         * If another translation is added, it doesn't suffice to have gettext set
         * up, you also need to add it here, because it acts as a white list.
-        * 
+        *
         * @var array("ISO-language code" => "native name of the language")
         */
        public static $translations = array(
@@ -53,15 +53,15 @@ class L10n {
                                "zh-cn" => "&#x4e2d;&#x6587;(&#x7b80;&#x4f53;)",
                                "zh-tw" => "&#x4e2d;&#x6587;(&#33274;&#28771;)",
                        );
-       
+
        /**
         * setlocale needs a language + region code for whatever reason so here's
         * the mapping from a translation code to locales with the region that
         * seemed the most common for this language
-        * 
+        *
         * You probably never need this. Use {@link set_translation()} to change the
         * language instead of manually calling setlocale().
-        * 
+        *
         * @var array(string => string)
         */
        private static $locales = array(
@@ -101,11 +101,11 @@ class L10n {
                                "zh-cn" => "zh_CN",
                                "zh-tw" => "zh_TW",
                        );
-       
+
        /**
         * Auto-detects the language that should be used and sets it. Only works for
         * HTTP, not in a command line script.
-        * 
+        *
         * Priority:
         * <ol>
         *      <li>explicit parameter "lang" passed in HTTP (e.g. via GET)</li>
@@ -128,10 +128,10 @@ class L10n {
                                return;
                        }
                }
-               
-               
+
+
                $languages = array();
-               
+
                // parse Accept-Language header
                if (array_key_exists('HTTP_ACCEPT_LANGUAGE', $_SERVER)) {
                        $bits = explode(",", strtolower(
@@ -144,29 +144,29 @@ class L10n {
                                        $c = floatval(substr($b[1], 2));
                                else
                                        $c = 1;
-                               
+
                                if ($c != 0)
                                {
                                        $languages[trim($b[0])] = $c;
                                }
                        }
                }
-               
+
                // check if there is an explicit language given as parameter
                if(array_key_exists("lang",$_REQUEST) && trim($_REQUEST["lang"]) != "")
                {
                        // higher priority than those values in the header
                        $languages[strtolower(trim($_REQUEST["lang"]))] = 2.0;
                }
-               
+
                arsort($languages, SORT_NUMERIC);
-               
+
                // this is used to be compatible with browsers like internet
                // explorer which only provide the language code including the
                // region not without. Also handles the fallback to English (qvalues
                // may only have three digits after the .)
                $fallbacks = array("en" => 0.0005);
-               
+
                foreach($languages as $lang => $qvalue)
                {
                        // ignore any non-conforming values (that's why we don't need to
@@ -179,7 +179,7 @@ class L10n {
                        }
                        $lang_prefix = $matches[1]; // usually two-letter language code
                        $fallbacks[$lang_prefix] = $qvalue;
-                       
+
                        $chosen_translation = "";
                        if ($lang === '*') {
                                // According to the standard '*' matches anything but any
@@ -202,7 +202,7 @@ class L10n {
                                        }
                                }
                        }
-                       
+
                        if ($chosen_translation !== "")
                        {
                                if (self::set_translation($chosen_translation)) {
@@ -210,7 +210,7 @@ class L10n {
                                }
                        }
                }
-               
+
                // No translation found yet => try the prefixes
                arsort($fallbacks, SORT_NUMERIC);
                foreach ($fallbacks as $lang => $qvalue) {
@@ -218,16 +218,47 @@ class L10n {
                                return;
                        }
                }
-               
+
                // should not get here, as the fallback of "en" is provided and that
                // should always work => log an error
                trigger_error("L10n::detect_language(): could not set language",
                        E_USER_WARNING);
        }
-       
+
+       /**
+        * Normalise the translation code (e.g. from the old codes to the new)
+        *
+        * @return string
+        *              a translation code or the empty string if it can't be normalised
+        */
+       public static function normalise_translation($translation_code) {
+               // check $translation_code against whitelist
+               if (array_key_exists($translation_code, self::$translations) ) {
+                       return $translation_code;
+               }
+
+               // maybe it's a locale as previously used in the system? e.g. en_AU
+               if (preg_match('/^([a-z][a-z])_([A-Z][A-Z])$/', $translation_code, $matches) !== 1) {
+                       return '';
+               }
+
+               $lang_code = $matches[1];
+               $region_code = strtolower($matches[2]);
+
+               if (array_key_exists("${lang_code}-${region_code}", self::$translations)) {
+                       return "${lang_code}-${region_code}";
+               }
+
+               if (array_key_exists($lang_code, self::$translations)) {
+                       return $lang_code;
+               }
+
+               return '';
+       }
+
        /**
         * Get the set translation
-        * 
+        *
         * @return string
         *              a translation code or the empty string if not set
         */
@@ -238,13 +269,13 @@ class L10n {
                        return "";
                }
        }
-       
+
        /**
         * Set the translation to use.
-        * 
+        *
         * @param string $translation_code
         *              the translation code as specified in the keys of {@link $translations}
-        * 
+        *
         * @return bool
         *              <ul>
         *              <li>true if the translation has been set successfully</li>
@@ -255,27 +286,11 @@ class L10n {
         *              </ul>
         */
        public static function set_translation($translation_code) {
-               // check $translation_code against whitelist
-               if ( !array_key_exists($translation_code, self::$translations) ) {
-                       // maybe it's a locale as previously used in the system? e.g. en_AU
-                       if ( preg_match('/^([a-z][a-z])_([A-Z][A-Z])$/', $translation_code,
-                                           $matches) !== 1 ) {
-                               return false;
-                       }
-                       
-                       $lang_code = $matches[1];
-                       $region_code = strtolower($matches[2]);
-                       
-                       if ( array_key_exists("${lang_code}-${region_code}",
-                                                 self::$translations) ) {
-                               $translation_code = "${lang_code}-${region_code}";
-                       } elseif ( array_key_exists($lang_code, self::$translations) ) {
-                               $translation_code = $lang_code;
-                       } else {
-                               return false;
-                       }
+               $translation_code = self::normalise_translation($translation_code);
+               if (empty($translation_code)) {
+                       return false;
                }
-               
+
                // map translation to locale
                if ( !array_key_exists($translation_code, self::$locales) ) {
                        // weird. maybe you added a translation but haven't added a
@@ -285,7 +300,7 @@ class L10n {
                        return false;
                }
                $locale = self::$locales[$translation_code];
-               
+
                // set up locale
                if ( !putenv("LANG=$locale") ) {
                        trigger_error("L10n::set_translation(): could not set the ".
@@ -297,42 +312,42 @@ class L10n {
                                "LC_ALL to $locale", E_USER_WARNING);
                        return false;
                }
-               
-               
+
+
                // only set if we're running in a server not in a script
                if (isset($_SESSION)) {
                        // save the setting
                        $_SESSION['_config']['language'] = $translation_code;
-                       
-                       
+
+
                        // Set up the recode settings needed e.g. in PDF creation
                        $_SESSION['_config']['recode'] = "html..latin-1";
-                       
+
                        if($translation_code === "zh-cn" || $translation_code === "zh-tw")
                        {
                                $_SESSION['_config']['recode'] = "html..gb2312";
-                               
+
                        } else if($translation_code === "pl" || $translation_code === "hu") {
                                $_SESSION['_config']['recode'] = "html..ISO-8859-2";
-                               
+
                        } else if($translation_code === "ja") {
                                $_SESSION['_config']['recode'] = "html..SHIFT-JIS";
-                               
+
                        } else if($translation_code === "ru") {
                                $_SESSION['_config']['recode'] = "html..ISO-8859-5";
-                               
+
                        } else if($translation_code == "lt") { // legacy, keep for reference
                                $_SESSION['_config']['recode'] = "html..ISO-8859-13";
-                               
+
                        }
                }
-               
+
                return true;
        }
-       
+
        /**
         * Sets up the text domain used by gettext
-        * 
+        *
         * @param string $domain
         *              the gettext domain that should be used, defaults to "messages"
         */
index 4f9b8e8..70c9674 100644 (file)
                        if($key == '_config' || $key == 'mconn' || 'csrf_' == substr($key, 0, 5))
                                continue;
                        if(is_int($key) || is_string($key))
-                               unset($_SESSION[$key]);
-                       unset($$key);
-                       //session_unregister($key);
+                               unset($_SESSION[$key]);
+                       unset($$key);
+                       //session_unregister($key);
                }
 
-               $_SESSION['profile'] = mysql_fetch_assoc(mysql_query("select * from `users` where `id`='$uid'"));
+               $_SESSION['profile'] = mysql_fetch_assoc(mysql_query("select * from `users` where `id`='".intval($uid)."'"));
                if($_SESSION['profile']['locked'] == 0)
                        $_SESSION['profile']['loggedin'] = 1;
                else
                        unset($_SESSION['profile']);
        }
-  
+
        if($_SERVER['HTTP_HOST'] == $_SESSION['_config']['securehostname'] && ($_SESSION['profile']['id'] == 0 || $_SESSION['profile']['loggedin'] == 0))
        {
                $user_id = get_user_id_from_cert($_SERVER['SSL_CLIENT_M_SERIAL'],
                                if($key == '_config' || $key == 'mconn' || 'csrf_' == substr($key, 0, 5))
                                        continue;
                                if(is_int($key) || is_string($key))
-                                       unset($_SESSION[$key]);
-                               unset($$key);
-                               //session_unregister($key);
+                                       unset($_SESSION[$key]);
+                               unset($$key);
+                               //session_unregister($key);
                        }
 
                        $_SESSION['profile'] = mysql_fetch_assoc(mysql_query(
-                                       "select * from `users` where `id`='".$user_id."'"));
+                                       "select * from `users` where `id`='".intval($user_id)."'"));
                        if($_SESSION['profile']['locked'] == 0)
                                $_SESSION['profile']['loggedin'] = 1;
                        else
@@ -82,9 +82,9 @@
                        {
                                if($key == '_config' || $key == 'mconn' || 'csrf_' == substr($key, 0, 5))
                                        continue;
-                               unset($_SESSION[$key]);
-                               unset($$key);
-                               //session_unregister($key);
+                               unset($_SESSION[$key]);
+                               unset($$key);
+                               //session_unregister($key);
                        }
 
                        $_SESSION['_config']['oldlocation'] = '';
 
        if($_SERVER['HTTP_HOST'] == $_SESSION['_config']['securehostname'] && $_SESSION['profile']['id'] > 0 && $_SESSION['profile']['loggedin'] > 0)
        {
-               $query = "select sum(`points`) as `total` from `notary` where `to`='".$_SESSION['profile']['id']."' group by `to`";
+               $query = "select sum(`points`) as `total` from `notary` where `to`='".intval($_SESSION['profile']['id'])."' and `deleted` = 0 group by `to`";
                $res = mysql_query($query);
                $row = mysql_fetch_assoc($res);
                $_SESSION['profile']['points'] = $row['total'];
                if($_SESSION['profile']['language'] == "")
                {
                        $query = "update `users` set `language`='".L10n::get_translation()."'
-                                                       where `id`='".$_SESSION['profile']['id']."'";
+                                                       where `id`='".intval($_SESSION['profile']['id'])."'";
                        mysql_query($query);
                } else {
                        L10n::set_translation($_SESSION['profile']['language']);
                $_SESSION['profile'] = "";
                foreach($_SESSION as $key => $value)
                {
-                       unset($_SESSION[$key]);
-                       unset($$key);
-                       //session_unregister($key);
+                       unset($_SESSION[$key]);
+                       unset($$key);
+                       //session_unregister($key);
                }
 
                header("location: https://".$normalhost."/index.php");
index b34b2f4..3b8e736 100644 (file)
@@ -16,6 +16,9 @@
     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
 */
 
+define('NULL_DATETIME', '0000-00-00 00:00:00');
+define('THAWTE_REVOCATION_DATETIME', '2010-11-16 00:00:00');
+
        function query_init ($query)
        {
                return mysql_query($query);
@@ -35,7 +38,7 @@
        function get_number_of_assurances ($userid)
        {
                $res = query_init ("SELECT count(*) AS `list` FROM `notary`
-                       WHERE `method` = 'Face to Face Meeting' AND `from`='".intval($userid)."' ");
+                       WHERE `method` = 'Face to Face Meeting' AND `from`='".intval($userid)."' and `deleted` = 0");
                $row = query_getnextrow($res);
 
                return intval($row['list']);
@@ -44,7 +47,7 @@
        function get_number_of_ttpassurances ($userid)
        {
                $res = query_init ("SELECT count(*) AS `list` FROM `notary`
-                       WHERE (`method`='Trusted Third Parties' or `method`='TTP-Assisted') AND `to`='".intval($userid)."' ");
+                       WHERE (`method`='Trusted Third Parties' or `method`='TTP-Assisted') AND `to`='".intval($userid)."' and `deleted` = 0");
                $row = query_getnextrow($res);
 
                return intval($row['list']);
@@ -53,7 +56,7 @@
        function get_number_of_assurees ($userid)
        {
                $res = query_init ("SELECT count(*) AS `list` FROM `notary`
-                       WHERE `method` = 'Face to Face Meeting' AND `to`='".intval($userid)."' ");
+                       WHERE `method` = 'Face to Face Meeting' AND `to`='".intval($userid)."' and `deleted` = 0");
                $row = query_getnextrow($res);
 
                return intval($row['list']);
@@ -62,7 +65,7 @@
        function get_top_assurer_position ($no_of_assurances)
        {
                $res = query_init ("SELECT count(*) AS `list` FROM `notary`
-                       WHERE `method` = 'Face to Face Meeting'
+                       WHERE `method` = 'Face to Face Meeting' and `deleted` = 0
                        GROUP BY `from` HAVING count(*) > '".intval($no_of_assurances)."'");
                return intval(query_get_number_of_rows($res)+1);
        }
        function get_top_assuree_position ($no_of_assurees)
        {
                $res = query_init ("SELECT count(*) AS `list` FROM `notary`
-                       WHERE `method` = 'Face to Face Meeting'
+                       WHERE `method` = 'Face to Face Meeting' and `deleted` = 0
                        GROUP BY `to` HAVING count(*) > '".intval($no_of_assurees)."'");
                return intval(query_get_number_of_rows($res)+1);
        }
 
-       function get_given_assurances ($userid)
+       /**
+        * Get the list of assurances given by the user
+        * @param int $userid - id of the assurer
+        * @param int $log - if set to 1 also includes deleted assurances
+        * @return resource - a MySQL result set
+        */
+       function get_given_assurances($userid, $log=0)
        {
-               $res = query_init ("select * from `notary` where `from`='".intval($userid)."' and `from` != `to` order by `id` asc");
+               $deleted='';
+               if ($log == 0) {
+                       $deleted = ' and `deleted` = 0 ';
+               }
+               $res = query_init("select * from `notary` where `from`='".intval($userid)."' and `from` != `to` $deleted order by `id` asc");
                return $res;
        }
 
-       function get_received_assurances ($userid)
+       /**
+        * Get the list of assurances received by the user
+        * @param int $userid - id of the assuree
+        * @param int $log - if set to 1 also includes deleted assurances
+        * @return resource - a MySQL result set
+        */
+       function get_received_assurances($userid, $log=0)
        {
-               $res = query_init ("select * from `notary` where `to`='".intval($userid)."' and `from` != `to` order by `id` asc ");
+               $deleted='';
+               if ($log == 0) {
+                       $deleted = ' and `deleted` = 0 ';
+               }
+               $res = query_init("select * from `notary` where `to`='".intval($userid)."' and `from` != `to` $deleted order by `id` asc  ");
                return $res;
        }
 
        function get_given_assurances_summary ($userid)
        {
-               $res = query_init ("select count(*) as number,points,awarded,method from notary where `from`='".intval($userid)."' group by points,awarded,method");
+               $res = query_init ("select count(*) as number,points,awarded,method from notary where `from`='".intval($userid)."' and `deleted` = 0 group by points,awarded,method");
                return $res;
        }
 
        function get_received_assurances_summary ($userid)
        {
-               $res = query_init ("select count(*) as number,points,awarded,method from notary where `to`='".intval($userid)."' group by points,awarded,method");
+               $res = query_init ("select count(*) as number,points,awarded,method from notary where `to`='".intval($userid)."' and `deleted` = 0 group by points,awarded,method");
                return $res;
        }
 
                return mysql_num_rows($res);
        }
 
-       function calc_experience ($row,&$points,&$experience,&$sum_experience,&$revoked)
+
+       /**
+        * Calculate awarded points (corrects some issues like out of range points
+        * or points that were issued by means that have been deprecated)
+        *
+        * @param array $row - associative array containing the data from the
+        *     `notary` table
+        * @return int - the awarded points for this assurance
+        */
+       function calc_awarded($row)
+       {
+               // Back in the old days there was no `awarded` column => is now zero,
+               // there the `points` column contained that data
+               $points = max(intval($row['awarded']), intval($row['points']));
+
+               // Set negative points to zero, yes there are such things in the database
+               $points = max($points, 0);
+
+               switch ($row['method'])
+               {
+                       // These programmes have been revoked
+                       case 'Thawte Points Transfer':    // revoke all Thawte-points     (as per arbitration)
+                       case 'CT Magazine - Germany':      // revoke c't                   (only one test-entry)
+                       case 'Temporary Increase':            // revoke 'temporary increase'  (Current usage breaks audit aspects, needs to be reimplemented)
+                               $points = 0;
+                               break;
+
+                       case 'Administrative Increase':  // ignore AI with 2 points or less (historical for experiance points, now other calculation)
+                               if ($points <= 2)              // maybe limit to 35/50 pts in the future?
+                                       $points = 0;
+                               break;
+
+                       // TTP assurances, limit to 35
+                       case 'TTP-Assisted':
+                               $points = min($points, 35);
+                               break;
+
+                               // TTP TOPUP, limit to 30
+                       case 'TOPUP':
+                               $points = min($points, 30);
+
+                       // All these should be preserved for the time being
+                       case 'Unknown':                  // to be revoked in the future? limit to max 50 pts?
+                       case 'Trusted Third Parties':        // to be revoked in the future? limit to max 35 pts?
+                       case '':                                // to be revoked in the future? limit to max 50 pts?
+                       case 'Face to Face Meeting': // normal assurances (and superassurances?), limit to 35/50 pts in the future?
+                               break;
+
+                       default:                                // should never happen ... ;-)
+                               $points = 0;
+               }
+
+               return $points;
+       }
+
+
+       /**
+        * Calculate the experience points from a given Assurance
+        * @param array  $row - [inout] associative array containing the data from
+        *     the `notary` table, the keys 'experience' and 'calc_awarded' will be
+        *     added
+        * @param int    $sum_points - [inout] the sum of already counted assurance
+        *     points the assurer issued
+        * @param int    $sum_experience - [inout] the sum of already counted
+        *     experience points that were awarded to the assurer
+        */
+       function calc_experience(&$row, &$sum_points, &$sum_experience)
        {
-               $apoints = max($row['points'], $row['awarded']);
-               $points += $apoints;
-               $experience = "&nbsp;";
-               $revoked = false;                               # to be coded later (after DB-upgrade)
+               $row['calc_awarded'] = calc_awarded($row);
+
+               // Don't count revoked assurances even if we are displaying them
+               if ($row['deleted'] !== NULL_DATETIME) {
+                       $row['experience'] = 0;
+                       return;
+               }
+
+               $experience = 0;
                if ($row['method'] == "Face to Face Meeting")
                {
-                       $sum_experience = $sum_experience +2;
-                       $experience = "2";
+                       $experience = 2;
                }
-               return $apoints;
+               $sum_experience += $experience;
+               $row['experience'] = $experience;
+
+               $sum_points += $row['calc_awarded'];
        }
 
-       function calc_assurances ($row,&$points,&$experience,&$sumexperience,&$awarded,&$revoked)
+       /**
+        * Calculate the points received from a received Assurance
+        * @param array  $row - [inout] associative array containing the data from
+        *     the `notary` table, the keys 'experience' and 'calc_awarded' will be
+        *     added
+        * @param int    $sum_points - [inout] the sum of already counted assurance
+        *     points the assuree received
+        * @param int    $sum_experience - [inout] the sum of already counted
+        *     experience points that were awarded to the assurer
+        */
+       function calc_assurances(&$row, &$sum_points, &$sum_experience)
        {
-               $awarded = calc_points($row);
-               $revoked = false;
+               $row['calc_awarded'] = calc_awarded($row);
+               $experience = 0;
 
-               if ($awarded > 100)
+               // High point values mean that some of them are experience points
+               if ($row['calc_awarded'] > 100)
                {
-                       $experience = $awarded - 100;           // needs to be fixed in the future (limit 50 pts and/or no experience if pts > 100)
-                       $awarded = 100;
+                       $experience = $row['calc_awarded'] - 100;               // needs to be fixed in the future (limit 50 pts and/or no experience if pts > 100)
+                       $row['calc_awarded'] = 100;
                }
-               else
-                       $experience = 0;
 
                switch ($row['method'])
                {
                        case 'Thawte Points Transfer':
                        case 'CT Magazine - Germany':
                        case 'Temporary Increase':            // Current usage of 'Temporary Increase' may break audit aspects, needs to be reimplemented
-                               $awarded=sprintf("<strong style='color: red'>%s</strong>",_("Revoked"));
-                               $experience=0;
-                               $revoked=true;
+                               $experience = 0;
+                               $row['deleted'] = THAWTE_REVOCATION_DATETIME;
                                break;
-                       default:
-                               $points += $awarded;
                }
-               $sumexperience = $sumexperience + $experience;
-       }
 
+               // Don't count revoked assurances even if we are displaying them
+               if ($row['deleted'] !== NULL_DATETIME) {
+                       $row['experience'] = 0;
+                       return;
+               }
+
+               $sum_experience += $experience;
+               $row['experience'] = $experience;
+               $sum_points += $row['calc_awarded'];
+       }
 
-       function show_user_link ($name,$userid)
+       /**
+        * Generate a link to the support engineer page for the user with the name
+        * of the user as link text
+        * @param array $user - associative array containing the data from the
+        *     `user` table
+        * @return string
+        */
+       function show_user_link($user)
        {
-               $name = trim($name);
+               $name = trim($user['fname'].' '.$user['lname']);
+               $userid = intval($user['id']);
+
                if($name == "")
                {
-                       if ($userid == 0)
+                       if ($userid == 0) {
                                $name = _("System");
-                       else
+                       } else {
                                $name = _("Deleted account");
+                       }
                }
                else
-                       $name = "<a href='wot.php?id=9&amp;userid=".intval($userid)."'>".sanitizeHTML($name)."</a>";
+               {
+                       $name = "<a href='wot.php?id=9&amp;userid=".$userid."'>".sanitizeHTML($name)."</a>";
+               }
+
                return $name;
        }
 
-       function show_email_link ($email,$userid)
+       /**
+        * Generate a link to the support engineer page for the user with the email
+        * address as link text
+        * @param array $user - associative array containing the data from the
+        *     `user` table
+        * @return string
+        */
+       function show_email_link($user)
        {
-               $email = trim($email);
-               if($email != "")
-                       $email = "<a href='account.php?id=43&amp;userid=".intval($userid)."'>".sanitizeHTML($email)."</a>";
+               $email = trim($user['email']);
+               if($email != "") {
+                       $email = "<a href='account.php?id=43&amp;userid=".intval($user['id'])."'>".sanitizeHTML($email)."</a>";
+               }
                return $email;
        }
 
 <?
        }
 
-       function output_assurances_header($title,$support)
+       /**
+        * Render header for the assurance table (same for given/received)
+        * @param string $title - The title for the table
+        * @param int    $support - set to 1 if the output is for the support interface
+        * @param int    $log - if set to 1 also includes deleted assurances
+        */
+       function output_assurances_header($title, $support, $log)
        {
+               if ($support == 1) {
+                       $log = 1;
+               }
+
+               $colspan = 7;
+               if ($support == 1) {
+                       $colspan += 2;
+               }
+               if ($log == 1) {
+                       $colspan += 1;
+               }
 ?>
 <table align="center" valign="middle" border="0" cellspacing="0" cellpadding="0" class="wrapper">
        <tr>
-<?
-       if ($support == "1")
-       {
-?>
-               <td colspan="10" class="title"><?=$title?></td>
-<?
-       } else {
-?>
-               <td colspan="7" class="title"><?=$title?></td>
-<?
-       }
-?>
+               <td colspan="<?=$colspan?>" class="title"><?=$title?></td>
        </tr>
        <tr>
                <td class="DataTD"><strong><?=_("ID")?></strong></td>
                <td class="DataTD"><strong><?=_("Date")?></strong></td>
 <?
-       if ($support == "1")
-       {
+               if ($support == 1)
+               {
 ?>
                <td class="DataTD"><strong><?=_("When")?></strong></td>
                <td class="DataTD"><strong><?=_("Email")?></strong></td>
 <?
-       }
+               }
 ?>
                <td class="DataTD"><strong><?=_("Who")?></strong></td>
                <td class="DataTD"><strong><?=_("Points")?></strong></td>
                <td class="DataTD"><strong><?=_("Method")?></strong></td>
                <td class="DataTD"><strong><?=_("Experience Points")?></strong></td>
 <?
-       if ($support == "1")
-       {
+               if ($log == 1)
+               {
 ?>
-               <td class="DataTD"><strong><?=_("Revoke")?></strong></td>
+               <td class="DataTD"><strong><?=_("Revoked")?></strong></td>
 <?
-       }
+               }
 ?>
        </tr>
 <?
        }
 
-       function output_assurances_footer($points_txt,$points,$experience_txt,$sumexperience,$support)
+       /**
+        * Render footer for the assurance table (same for given/received)
+        * @param string $points_txt - Description for sum of assurance points
+        * @param int    $sumpoints - sum of assurance points
+        * @param string $experience_txt - Description for sum of experience points
+        * @param int    $sumexperience - sum of experience points
+        * @param int    $support - set to 1 if the output is for the support interface
+        * @param int    $log - if set to 1 also includes deleted assurances
+        */
+       function output_assurances_footer(
+                       $points_txt,
+                       $sumpoints,
+                       $experience_txt,
+                       $sumexperience,
+                       $support,
+                       $log)
        {
 ?>
        <tr>
-               <td<?=($support == "1")?' colspan="5"':' colspan="3"'?> class="DataTD"><strong><?=$points_txt?>:</strong></td>
-               <td class="DataTD"><?=$points?></td>
+               <td colspan="<?=($support == 1) ? 5 : 3 ?>" class="DataTD"><strong><?=$points_txt?>:</strong></td>
+               <td class="DataTD"><?=intval($sumpoints)?></td>
                <td class="DataTD">&nbsp;</td>
                <td class="DataTD"><strong><?=$experience_txt?>:</strong></td>
-               <td class="DataTD"><?=$sumexperience?></td>
+               <td class="DataTD"><?=intval($sumexperience)?></td>
 <?
-       if ($support == "1")
-       {
+               if ($log == 1)
+               {
 ?>
                <td class="DataTD">&nbsp;</td>
 <?
-       }
+               }
 ?>
-
        </tr>
 </table>
 <br/>
 <?
        }
 
-       function output_assurances_row($assuranceid,$date,$when,$email,$name,$awarded,$points,$location,$method,$experience,$userid,$support,$revoked)
+       /**
+        * Render an assurance for a view
+        * @param array   $assurance - associative array containing the data from the `notary` table
+        * @param int     $userid - Id of the user whichs given/received assurances are displayed
+        * @param array   $other_user - associative array containing the other users data from the `users` table
+        * @param int     $support - set to 1 if the output is for the support interface
+        * @param string  $ticketno - ticket number currently set in the support interface
+        * @param int     $log - if set to 1 also includes deleted assurances
+        */
+       function output_assurances_row(
+                       $assurance,
+                       $userid,
+                       $other_user,
+                       $support,
+                       $ticketno,
+                       $log)
        {
+               $assuranceid = intval($assurance['id']);
+               $date = $assurance['date'];
+               $when = $assurance['when'];
+               $awarded = intval($assurance['calc_awarded']);
+               $points = intval($assurance['points']);
+               $location = $assurance['location'];
+               $method = $assurance['method'] ? _($assurance['method']) : '';
+               $experience = intval($assurance['experience']);
+               $revoked = $assurance['deleted'] !== NULL_DATETIME;
+
+               $email = show_email_link($other_user);
+               $name = show_user_link($other_user);
+
+               if ($support == 1) {
+                       $log = 1;
+               }
 
                $tdstyle="";
                $emopen="";
 
                if ($awarded == $points)
                {
-                       if ($awarded == "0")
+                       if ($awarded == 0)
                        {
                                if ($when < "2006-09-01")
                                {
                <td class="DataTD" <?=$tdstyle?>><?=$emopen?><?=$assuranceid?><?=$emclose?></td>
                <td class="DataTD" <?=$tdstyle?>><?=$emopen?><?=$date?><?=$emclose?></td>
 <?
-               if ($support == "1")
+               if ($support == 1)
                {
 ?>
                <td class="DataTD" <?=$tdstyle?>><?=$emopen?><?=$when?><?=$emclose?></td>
                }
 ?>
                <td class="DataTD" <?=$tdstyle?>><?=$emopen?><?=$name?><?=$emclose?></td>
-               <td class="DataTD" <?=$tdstyle?>><?=$emopen?><?=$awarded?><?=$emclose?></td>
-               <td class="DataTD" <?=$tdstyle?>><?=$emopen?><?=$location?><?=$emclose?></td>
+               <td class="DataTD" <?=$tdstyle?>><?=$emopen?><?=$revoked ? sprintf("<strong style='color: red'>%s</strong>",_("Revoked")) : $awarded?><?=$emclose?></td>
+               <td class="DataTD" <?=$tdstyle?>><?=$emopen?><?=sanitizeHTML($location)?><?=$emclose?></td>
                <td class="DataTD" <?=$tdstyle?>><?=$emopen?><?=$method?><?=$emclose?></td>
-               <td class="DataTD" <?=$tdstyle?>><?=$emopen?><?=$experience?><?=$emclose?></td>
+               <td class="DataTD" <?=$tdstyle?>><?=$emopen?><?=$experience?$experience:'&nbsp;'?><?=$emclose?></td>
 <?
-               if ($support == "1")
+               if ($log == 1)
                {
                        if ($revoked == true)
                        {
 ?>
-               <td class="DataTD" <?=$tdstyle?>>&nbsp;</td>
+               <td class="DataTD" <?=$tdstyle?>><?=$assurance['deleted']?></td>
+<?
+                       } elseif ($support == 1) {
+?>
+               <td class="DataTD" <?=$tdstyle?>><?=$emopen?><a href="account.php?id=43&amp;userid=<?=intval($userid)?>&amp;assurance=<?=intval($assuranceid)?>&amp;csrf=<?=make_csrf('admdelassurance')?>&amp;ticketno=<?=sanitizeHTML($ticketno)?>" onclick="return confirm('<?=sprintf(_("Are you sure you want to revoke the assurance with ID &quot;%s&quot;?"),$assuranceid)?>');"><?=_("Revoke")?></a><?=$emclose?></td>
 <?
                        } else {
 ?>
-               <td class="DataTD" <?=$tdstyle?>><?=$emopen?><a href="account.php?id=43&amp;userid=<?=intval($userid)?>&amp;assurance=<?=intval($assuranceid)?>&amp;csrf=<?=make_csrf('admdelassurance')?>" onclick="return confirm('<?=sprintf(_("Are you sure you want to revoke the assurance with ID &quot;%s&quot;?"),$assuranceid)?>');"><?=_("Revoke")?></a><?=$emclose?></td>
+               <td class="DataTD" <?=$tdstyle?>>&nbsp;</td>
 <?
                        }
                }
 ?>
-    </tr>
+       </tr>
 <?
        }
 
 
 // ************* output given assurances ******************
 
-       function output_given_assurances_content($userid,&$points,&$sum_experience,$support)
+       /**
+        * Helper function to render assurances given by the user
+        * @param int  $userid
+        * @param int& $sum_points - [out] sum of given points
+        * @param int& $sum_experience - [out] sum of experience points gained
+        * @param int  $support - set to 1 if the output is for the support interface
+        * @param string $ticketno - the ticket number set in the support interface
+        * @param int  $log - if set to 1 also includes deleted assurances
+        */
+       function output_given_assurances_content(
+                       $userid,
+                       &$sum_points,
+                       &$sum_experience,
+                       $support,
+                       $ticketno,
+                       $log)
        {
-               $points = 0;
+               $sum_points = 0;
                $sumexperience = 0;
-               $res = get_given_assurances(intval($userid));
+               $res = get_given_assurances(intval($userid), $log);
                while($row = mysql_fetch_assoc($res))
                {
-                       $fromuser = get_user (intval($row['to']));
-                       $apoints = calc_experience ($row,$points,$experience,$sum_experience,$revoked);
-                       $name = show_user_link ($fromuser['fname']." ".$fromuser['lname'],intval($row['to']));
-                       $email = show_email_link ($fromuser['email'],intval($row['to']));
-                       output_assurances_row (intval($row['id']),$row['date'],$row['when'],$email,$name,$apoints,intval($row['points']),$row['location'],$row['method']==""?"":_(sprintf("%s", $row['method'])),$experience,$userid,$support,$revoked);
+                       $assuree = get_user(intval($row['to']));
+                       calc_experience($row, $sum_points, $sum_experience);
+                       output_assurances_row($row, $userid, $assuree, $support, $ticketno, $log);
                }
        }
 
 // ************* output received assurances ******************
 
-       function output_received_assurances_content($userid,&$points,&$sum_experience,$support)
+       /**
+        * Helper function to render assurances received by the user
+        * @param int  $userid
+        * @param int& $sum_points - [out] sum of received points
+        * @param int& $sum_experience - [out] sum of experience points the assurers gained
+        * @param int  $support - set to 1 if the output is for the support interface
+        * @param string $ticketno - the ticket number set in the support interface
+        * @param int  $log - if set to 1 also includes deleted assurances
+        */
+       function output_received_assurances_content(
+                       $userid,
+                       &$sum_points,
+                       &$sum_experience,
+                       $support,
+                       $ticketno,
+                       $log)
        {
-               $points = 0;
+               $sum_points = 0;
                $sumexperience = 0;
-               $res = get_received_assurances(intval($userid));
+               $res = get_received_assurances(intval($userid), $log);
                while($row = mysql_fetch_assoc($res))
                {
-                       $fromuser = get_user (intval($row['from']));
-                       calc_assurances ($row,$points,$experience,$sum_experience,$awarded,$revoked);
-                       $name = show_user_link ($fromuser['fname']." ".$fromuser['lname'],intval($row['from']));
-                       $email = show_email_link ($fromuser['email'],intval($row['from']));
-                       output_assurances_row (intval($row['id']),$row['date'],$row['when'],$email,$name,$awarded,intval($row['points']),$row['location'],$row['method']==""?"":_(sprintf("%s", $row['method'])),$experience,$userid,$support,$revoked);
+                       $fromuser = get_user(intval($row['from']));
+                       calc_assurances($row, $sum_points, $sum_experience);
+                       output_assurances_row($row, $userid, $fromuser, $support, $ticketno, $log);
                }
        }
 
                return intval(query_get_number_of_rows($res));
        }
 
-       function calc_points($row)
-       {
-               $awarded = intval($row['awarded']);
-               if ($awarded == "")
-                       $awarded = 0;
-               if (intval($row['points']) < $awarded)
-                       $points = $awarded;      // if 'sum of added points' > 100, awarded shows correct value
-               else
-                       $points = intval($row['points']);       // on very old assurances, awarded is '0' instead of correct value
-               switch ($row['method'])
-               {
-                       case 'Thawte Points Transfer':    // revoke all Thawte-points     (as per arbitration)
-                       case 'CT Magazine - Germany':      // revoke c't                   (only one test-entry)
-                       case 'Temporary Increase':            // revoke 'temporary increase'  (Current usage breaks audit aspects, needs to be reimplemented)
-                               $points = 0;
-                               break;
-                       case 'Administrative Increase':  // ignore AI with 2 points or less (historical for experiance points, now other calculation)
-                               if ($points <= 2)              // maybe limit to 35/50 pts in the future?
-                                       $points = 0;
-                               break;
-                       case 'Unknown':                  // to be revoked in the future? limit to max 50 pts?
-                       case 'Trusted Third Parties':        // to be revoked in the future? limit to max 35 pts?
-                       case 'TTP-Assisted':         // TTP assurances, limit to 35
-                       case 'TOPUP':        // TOPUP to be delevoped in the future, limit to 30
-                       case '':                                // to be revoked in the future? limit to max 50 pts?
-                       case 'Face to Face Meeting':        // normal assurances, limit to 35/50 pts in the future?
-                               break;
-                       default:                                // should never happen ... ;-)
-                               $points = 0;
-               }
-               if ($points < 0)                                // ignore negative points (bug needs to be fixed)
-                       $points = 0;
-               return $points;
-       }
-
        function max_points($userid)
        {
                return output_summary_content ($userid,0);
                $res = get_received_assurances_summary($userid);
                while($row = mysql_fetch_assoc($res))
                {
-                       $points = calc_points ($row);
+                       $points = calc_awarded($row);
 
                        if ($points > $max_points)                      // limit to 100 points, above is experience (needs to be fixed)
                        {
                return $issue_points;
        }
 
-       function output_given_assurances($userid,$support=0)
+       /**
+        * Render assurances given by the user
+        * @param int $userid
+        * @param int $support - set to 1 if the output is for the support interface
+        * @param string $ticketno - the ticket number set in the support interface
+        * @param int $log - if set to 1 also includes deleted assurances
+        */
+       function output_given_assurances($userid, $support=0, $ticketno='', $log=0)
        {
-               output_assurances_header(_("Assurance Points You Issued"),$support);
-               output_given_assurances_content($userid,$points,$sum_experience,$support);
-               output_assurances_footer(_("Total Points Issued"),$points,_("Total Experience Points"),$sum_experience,$support);
+               output_assurances_header(
+                               _("Assurance Points You Issued"),
+                               $support,
+                               $log);
+
+               output_given_assurances_content(
+                               $userid,
+                               $sum_points,
+                               $sum_experience,
+                               $support,
+                               $ticketno,
+                               $log);
+
+               output_assurances_footer(
+                               _("Total Points Issued"),
+                               $sum_points,
+                               _("Total Experience Points"),
+                               $sum_experience,
+                               $support,
+                               $log);
        }
 
-       function output_received_assurances($userid,$support=0)
+       /**
+        * Render assurances received by the user
+        * @param int $userid
+        * @param int $support - set to 1 if the output is for the support interface
+        * @param string $ticketno - the ticket number set in the support interface
+        * @param int $log - if set to 1 also includes deleted assurances
+        */
+       function output_received_assurances($userid, $support=0, $ticketno='', $log=0)
        {
-               output_assurances_header(_("Your Assurance Points"),$support);
-               output_received_assurances_content($userid,$points,$sum_experience,$support);
-               output_assurances_footer(_("Total Assurance Points"),$points,_("Total Experience Points"),$sum_experience,$support);
+               output_assurances_header(
+                               _("Assurance Points You Received"),
+                               $support,
+                               $log);
+
+               output_received_assurances_content(
+                               $userid,
+                               $sum_points,
+                               $sum_experience,
+                               $support,
+                               $ticketno,
+                               $log);
+
+               output_assurances_footer(
+                               _("Total Points Received"),
+                               $sum_points,
+                               _("Total Experience Points"),
+                               $sum_experience,
+                               $support,
+                               $log);
        }
 
        function output_summary($userid)
        }
 
        /**
-        * get_first_user_agreement()
-        *  returns the first user_agreement entry of the requested type depending on thes status of active of a given user
-        * @param mixed $memid
-        * @param integer $active, 0 - passive, 1 -active
-        * @param string $type
-        * @return
+        * Get the first user_agreement entry of the requested type
+        * @param int $memid
+        * @param string $type - the type of user agreement, by default all
+        *     agreements are listed
+        * @param int $active - whether to get active or passive agreements:
+        *     0 := passive
+        *     1 := active
+        *     null := both
+        * @return array(string=>mixed) - an associative array containing
+        *     'document', 'date', 'method', 'comment', 'active'
         */
-       function get_first_user_agreement($memid, $active=1, $type="CCA"){
-       //returns an array (`document`,`date`,`method`, `comment`,`active`)
+       function get_first_user_agreement($memid, $type=null, $active=null){
+               $filter = '';
+               if (!is_null($type)) {
+                       $filter .= " AND u.`document` = '".mysql_real_escape_string($type)."'";
+               }
+
+               if (!is_null($active)) {
+                       $filter .= " AND u.`active` = ".intval($active);
+               }
+
                $query="SELECT u.`document`, u.`date`, u.`method`, u.`comment`, u.`active` FROM `user_agreements` AS u
-                       WHERE u.`document` = '" . mysql_real_escape_string($type) . "' AND u.`memid`=" . intval($memid) . " AND u.`active`=" . intval($active) .
-                       " ORDER BY u.`date` Limit 1;";
+                       WHERE u.`memid`=".intval($memid)."
+                               $filter
+                       ORDER BY u.`date` LIMIT 1";
                $res = mysql_query($query);
                if(mysql_num_rows($res) >0){
                        $rec = mysql_fetch_assoc($res);
        }
 
        /**
-        * get_last_user_agreement()
-        *  returns the last user_agreement entry of a given type and of a given user
-        * @param mixed $memid
-        * @param string $type
-        * @return
+        * Get the last user_agreement entry of the requested type
+        * @param int $memid
+        * @param string $type - the type of user agreement, by default all
+        *     agreements are listed
+        * @param int $active - whether to get active or passive agreements:
+        *     0 := passive,
+        *     1 := active,
+        *     null := both
+        * @return array(string=>mixed) - an associative array containing
+        *     'document', 'date', 'method', 'comment', 'active'
         */
-       function get_last_user_agreement($memid, $type="CCA"){
-       //returns an array (`document`,`date`,`method`, `comment`,`active`)
-               $query="SELECT u.`document`, u.`date`, u.`method`, u.`comment`, u.`active` FROM user_agreements u WHERE u.`document` = '" . mysql_real_escape_string($type) . "' AND (u.`memid`=" . intval($memid) . " ) order by `date` desc limit 1 " ;
+       function get_last_user_agreement($memid, $type=null, $active=null){
+               $filter = '';
+               if (!is_null($type)) {
+                       $filter .= " AND u.`document` = '".mysql_real_escape_string($type)."'";
+               }
+
+               if (!is_null($active)) {
+                       $filter .= " AND u.`active` = ".intval($active);
+               }
+
+               $query="SELECT u.`document`, u.`date`, u.`method`, u.`comment`, u.`active` FROM `user_agreements` AS u
+                       WHERE u.`memid`=".intval($memid)."
+                               $filter
+                       ORDER BY u.`date` DESC LIMIT 1";
                $res = mysql_query($query);
                if(mysql_num_rows($res) >0){
                        $rec = mysql_fetch_assoc($res);
                return $rec;
        }
 
+/**
+ * Get the all user_agreement entries of the requested type
+ * @param int $memid
+ * @param string $type - the type of user agreement, by default all
+ *     agreements are listed
+ * @param int $active - whether to get an active or passive agreements:
+ *     0 := passive,
+ *     1 := active,
+ *     null := both
+ * @return resource - a mysql result set containing all agreements
+ */
+function get_user_agreements($memid, $type=null, $active=null){
+       $filter = '';
+       if (!is_null($type)) {
+               $filter .= " AND u.`document` = '".mysql_real_escape_string($type)."'";
+       }
+
+       if (!is_null($active)) {
+               $filter .= " AND u.`active` = ".intval($active);
+       }
+
+       $query="SELECT u.`document`, u.`date`, u.`method`, u.`comment`, u.`active` FROM `user_agreements` AS u
+               WHERE u.`memid`=".intval($memid)."
+                       $filter
+               ORDER BY u.`date`";
+       return mysql_query($query);
+}
+
        /**
         * delete_user_agreement()
         *  deletes all entries for a given type from user_agreement of a given user, if type is not given all
         * @return
         */
        function delete_user_agreement($memid, $type=false){
-       //deletes all entries to an user for the given type of user agreements
                if ($type === false) {
                        $filter = '';
                } else {
 <?
                } else {
 ?>
-       <input type="hidden" name="<?=$val?>" value="<?=$methods[0]?>" />
+       <input type="hidden" name="method" value="<?=$methods[0]?>" />
 <?
                }
        }
                }
 
        //change personal information to arbitration number and DOB=1900-01-01
-               $query = "select `fname`,`mname`,`lname`,`suffix`,`dob` from `users` where `id`='$userid'";
-               $details = mysql_fetch_assoc(mysql_query($query));
-               $query = "insert into `adminlog` set `when`=NOW(),`old-lname`='${details['lname']}',`old-dob`='${details['dob']}',
-                       `new-lname`='$arbno',`new-dob`='1900-01-01',`uid`='$id',`adminid`='".$adminid."'";
-               mysql_query($query);
                $query = "update `users` set `fname`='".$arbno."',
                        `mname`='".$arbno."',
                        `lname`='".$arbno."',
        function check_date_difference($date, $diff=1){
                return (strtotime($date)<=time()+$diff*86400);
        }
+
+/**
+ * Write some information to the adminlog
+ *
+ * @param int $uid - id of the user account
+ * @param int $adminid - id of the admin
+ * @param string $type - the operation that was performed on the user account
+ * @param string $info - the ticket / arbitration number or other information
+ * @return bool - true := success, false := error
+ */
+function write_se_log($uid, $adminid, $type, $info){
+       //records all support engineer actions changing a user account
+       $uid = intval($uid);
+       $adminid = intval($adminid);
+       $type = mysql_real_escape_string($type);
+       $info = mysql_real_escape_string($info);
+       $query="insert into `adminlog` (`when`, `uid`, `adminid`,`type`,`information`) values
+               (Now(), $uid, $adminid, '$type', '$info')";
+       return mysql_query($query);
+}
+
+/**
+ * Check if the entered information is a valid ticket or arbitration number
+ * @param string $ticketno
+ * @return bool
+ */
+function valid_ticket_number($ticketno){
+       //a arbitration case
+       //d dispute action
+       //s support case
+       //m board motion
+       $pattern='/[adsmADSM]\d{8}\.\d+/';
+       if (preg_match($pattern, $ticketno)) {
+               return true;
+       }
+       return false;
+}
+
+// function for handling account/43.php
+/**
+ * Get all data of an account given by the id from the `users` table
+ * @param int $userid - account id
+ * @param int $deleted - states if deleted data should be visible , default = 0 - not visible
+ * @return resource - a mysql result set
+ */
+function get_user_data($userid, $deleted=0){
+       $userid = intval($userid);
+       $filter='';
+       if (0==$deleted) {
+               $filter .=' and `users`.`deleted`=0';
+       }
+       $query = "select * from `users` where `users`.`id`='$userid' ".$filter;
+       return mysql_query($query);
+}
+
+/**
+ * Get the alert settings for a user
+ * @param int $userid for the requested account
+ * @return array - associative array
+ */
+function get_alerts($userid){
+       return mysql_fetch_assoc(mysql_query("select * from `alerts` where `memid`='".intval($userid)."'"));
+}
+
+/**
+ * Get all email addresses linked to the account
+ * @param int    $userid
+ * @param string $exclude - if given the email address will be excluded
+ * @param int    $deleted - states if deleted data should be visible, default = 0 - not visible
+ * @return resource - a mysql result set
+ */
+function get_email_addresses($userid, $exclude, $deleted=0){
+       //should be entered in account/2.php
+       $userid = intval($userid);
+       $filter='';
+       if (0==$deleted) {
+               $filter .= ' and `deleted`=0';
+       }
+       if ($exclude) {
+               $filter .= " and `email`!='".mysql_real_escape_string($exclude)."'";
+       }
+       $query = "select * from `email` where `memid`='".$userid."' and `hash`='' ".$filter." order by `created`";
+       return mysql_query($query);
+}
+
+/**
+ * Get all domains linked to the account
+ * @param int $userid
+ * @param int $deleted - states if deleted data should be visible, default = 0 - not visible
+ * @return resource - a mysql result set
+ */
+function get_domains($userid, $deleted=0){
+       //should be entered in account/9.php
+       $userid = intval($userid);
+       $filter='';
+       if (0==$deleted) {
+               $filter .= ' and `deleted`=0';
+       }
+       $query = "select * from `domains` where `memid`='".$userid."' and `hash`=''".$filter." order by `created`";
+       return mysql_query($query);
+}
+
+/**
+ * Get all training results for the account
+ * @param int $userid
+ * @return resource - a mysql result set
+ */
+function get_training_results($userid){
+       //should be entered in account/55.php
+       $userid = intval($userid);
+       $query = "SELECT `CP`.`pass_date`, `CT`.`type_text`, `CV`.`test_text` ".
+               " FROM `cats_passed` AS CP, `cats_variant` AS CV, `cats_type` AS CT ".
+               " WHERE `CP`.`variant_id`=`CV`.`id` AND `CV`.`type_id`=`CT`.`id` AND `CP`.`user_id` ='".$userid."'".
+               " ORDER BY `CP`.`pass_date`";
+       return mysql_query($query);
+}
+
+/**
+ * Get all SE log entries for the account
+ * @param int $userid
+ * @return resource - a mysql result set
+ */
+function get_se_log($userid){
+       $userid = intval($userid);
+       $query = "SELECT `adminlog`.`when`, `adminlog`.`type`, `adminlog`.`information`, `users`.`fname`, `users`.`lname`
+               FROM `adminlog`, `users`
+               WHERE `adminlog`.`adminid` = `users`.`id` and `adminlog`.`uid`=".$userid."
+               ORDER BY `adminlog`.`when`";
+       return mysql_query($query);
+}
+
+/**
+ * Get all client certificates linked to the account
+ * @param int $userid
+ * @param int $viewall - states if expired certs should be visible, default = 0 - not visible
+ * @return resource - a mysql result set
+ */
+function get_client_certs($userid, $viewall=0){
+       //add to account/5.php
+       $userid = intval($userid);
+       $query = "select UNIX_TIMESTAMP(`emailcerts`.`created`) as `created`,
+               UNIX_TIMESTAMP(`emailcerts`.`expire`) - UNIX_TIMESTAMP() as `timeleft`,
+               UNIX_TIMESTAMP(`emailcerts`.`expire`) as `expired`,
+               `emailcerts`.`expire`,
+               `emailcerts`.`revoked` as `revoke`,
+               UNIX_TIMESTAMP(`emailcerts`.`revoked`) as `revoked`,
+               `emailcerts`.`id`,
+               `emailcerts`.`CN`,
+               `emailcerts`.`serial`,
+               `emailcerts`.`disablelogin`,
+               `emailcerts`.`description`
+               from `emailcerts`
+               where `emailcerts`.`memid`='".$userid."'";
+       if($viewall == 0)
+       {
+               $query .= " AND `emailcerts`.`revoked`=0 AND `emailcerts`.`renewed`=0";
+               $query .= " HAVING `timeleft` > 0";
+       }
+       $query .= " ORDER BY `emailcerts`.`modified` desc";
+       return mysql_query($query);
+}
+
+/**
+ * Get all server certs linked to the account
+ * @param int $userid
+ * @param int $viewall - states if expired certs should be visible, default = 0 - not visible
+ * @return resource - a mysql result set
+ */
+function get_server_certs($userid, $viewall=0){
+       //add to account/12.php
+       $userid = intval($userid);
+       $query = "select UNIX_TIMESTAMP(`domaincerts`.`created`) as `created`,
+                       UNIX_TIMESTAMP(`domaincerts`.`expire`) - UNIX_TIMESTAMP() as `timeleft`,
+                       UNIX_TIMESTAMP(`domaincerts`.`expire`) as `expired`,
+                       `domaincerts`.`expire`,
+                       `domaincerts`.`revoked` as `revoke`,
+                       UNIX_TIMESTAMP(`revoked`) as `revoked`,
+                       `domaincerts`.`CN`,
+                       `domaincerts`.`serial`,
+                       `domaincerts`.`id`,
+                       `domaincerts`.`description`
+                       from `domaincerts`,`domains`
+                       where `domains`.`memid`='".$userid."' and `domaincerts`.`domid`=`domains`.`id`";
+       if($viewall == 0)
+       {
+               $query .= " AND `domaincerts`.`revoked`=0 AND `domaincerts`.`renewed`=0";
+               $query .= " HAVING `timeleft` > 0";
+       }
+       $query .= " ORDER BY `domaincerts`.`modified` desc";
+       return mysql_query($query);
+}
+
+/**
+ * Get all gpg certs linked to the account
+ * @param int $userid
+ * @param int $viewall - states if expired certs should be visible, default = 0 - not visible
+ * @return resource - a mysql result set
+ */
+function get_gpg_certs($userid, $viewall=0){
+       //add to gpg/2.php
+       $userid = intval($userid);
+       $query = $query = "select UNIX_TIMESTAMP(`issued`) as `issued`,
+                       UNIX_TIMESTAMP(`expire`) - UNIX_TIMESTAMP() as `timeleft`,
+                       UNIX_TIMESTAMP(`expire`) as `expired`,
+                       `expire`, `id`, `level`, `email`, `keyid`, `description`
+                       from `gpg` where `memid`='".$userid."'";
+       if ($viewall == 0) {
+               $query .= " HAVING `timeleft` > 0";
+       }
+       $query .= " ORDER BY `issued` desc";
+       return mysql_query($query);
+}
+
+
+
+/**
+ * Show the table header to the email table for the admin log
+ */
+function output_log_email_header(){
+       ?>
+       <tr>
+               <td class="DataTD bold"><?= _("Email, primary bold") ?></td>
+               <td class="DataTD bold"><?= _("Created") ?></td>
+               <td class="DataTD bold"><?= _("Deleted") ?></td>
+       </tr>
+
+       <?
+}
+/**
+ * Show all email data for the admin log
+ * @param array  $row - associative array containing the column data
+ * @param string $primary - if given the primary address is highlighted
+ */
+function output_log_email($row, $primary){
+       $style = '';
+       if ($row['deleted'] !== NULL_DATETIME) {
+               $style = ' deletedemailaddress';
+       } elseif ($primary == $row['email']) {
+               $style = ' primaryemailaddress';
+       }
+       ?>
+       <tr>
+               <td class="DataTD<?=$style?>"><?=$row['email']?></td>
+               <td class="DataTD<?=$style?>"><?=$row['created']?></td>
+               <td class="DataTD<?=$style?>"><?=$row['deleted']?></td>
+       </tr>
+       <?
+}
+
+/**
+ * Show the table header to the domains table for the admin log
+ */
+function output_log_domains_header(){
+       ?>
+       <tr>
+               <td class="DataTD bold"><?= _("Domain") ?></td>
+               <td class="DataTD bold"><?= _("Created") ?></td>
+               <td class="DataTD bold"><?= _("Deleted") ?></td>
+       </tr>
+
+       <?
+}
+
+/**
+ * Show the domain data for the admin log
+ * @param array $row - associative array containing the column data
+ */
+function output_log_domains($row){
+       $italic='';
+       if ($row['deleted'] !== NULL_DATETIME) {
+               $italic=' italic';
+       }
+       ?>
+       <tr>
+               <td class="DataTD<?=$italic?>"><?=$row['domain']?></td>
+               <td class="DataTD<?=$italic?>"><?=$row['created']?></td>
+               <td class="DataTD<?=$italic?>"><?=$row['deleted']?></td>
+       </tr>
+       <?
+}
+
+/**
+ * Show the table header to the user agreement table for the admin log
+ */
+function output_log_agreement_header(){
+       ?>
+       <tr>
+               <td class="DataTD bold"><?= _("Agreement") ?></td>
+               <td class="DataTD bold"><?= _("Date") ?></td>
+               <td class="DataTD bold"><?= _("Method") ?></td>
+               <td class="DataTD bold"><?= _("Active ") ?></td>
+       </tr>
+       <?
+}
+
+/**
+ * Show the agreement data for the admin log
+ * @param array $row - associative array containing the column data
+ */
+function output_log_agreement($row){
+       ?>
+       <tr>
+               <td class="DataTD" ><?=$row['document']?></td>
+               <td class="DataTD" ><?=$row['date']?></td>
+               <td class="DataTD" ><?=$row['method']?></td>
+               <td class="DataTD"><?= ($row['active']==0)? _('passive'):_('active')?></td>
+       </tr>
+       <?
+}
+
+/**
+ * Show the table header to the training table
+ */
+function output_log_training_header(){
+       //should be entered in account/55.php
+       ?>
+       <tr>
+               <td class="DataTD bold"><?= _("Agreement") ?></td>
+               <td class="DataTD bold"><?= _("Test") ?></td>
+               <td class="DataTD bold"><?= _("Variant") ?></td>
+       </tr>
+       <?
+}
+
+/**
+ * Show the training data
+ * @param array $row - associative array containing the column data
+ */
+function output_log_training($row){
+       //should be entered in account/55.php
+       ?>
+       <tr>
+               <td class="DataTD"><?=$row['pass_date']?></td>
+               <td class="DataTD"><?=$row['type_text']?></td>
+               <td class="DataTD"><?=$row['test_text']?></td>
+       </tr>
+       <?
+}
+
+/**
+ * Show the table header to the SE log table for the admin log
+ * @param int $support - if support = 1 more information is visible
+ */
+function output_log_se_header($support=0){
+       ?>
+       <tr>
+               <td class="DataTD bold"><?= _("Date") ?></td>
+               <td class="DataTD bold"><?= _("Type") ?></td>
+               <?
+               if (1 == $support) {
+                       ?>
+                       <td class="DataTD bold"><?= _("Information") ?></td>
+                       <td class="DataTD bold"><?= _("Admin") ?></td>
+                       <?
+               }
+               ?>
+       </tr>
+       <?
+}
+
+/**
+ * Show the SE log data for the admin log
+ * @param array $row - associative array containing the column data
+ * @param int   $support - if support = 1 more information is visible
+ */
+function output_log_se($row, $support=0){
+       //should be entered in account/55.php
+       ?>
+       <tr>
+               <td class="DataTD"><?=$row['when']?></td>
+               <td class="DataTD"><?=$row['type']?></td>
+               <?
+               if (1 == $support) {
+                       ?>
+                       <td class="DataTD"><?=$row['information']?></td>
+                       <td class="DataTD"><?=$row['fname'].' '.$row['lname']?></td>
+                       <?
+               }
+               ?>
+       </tr>
+       <?
+}
+
+/**
+ * Shows the table header to the client cert table
+ * @param int  $support - if support = 1 some columns ar not visible
+ * @param bool $readonly - whether elements to modify data should be hidden, default is `true`
+ */
+function output_client_cert_header($support=0, $readonly=true){
+       //should be added to account/5.php
+       ?>
+       <tr>
+               <?
+               if (!$readonly) {
+                       ?>
+                       <td class="DataTD"><?=_("Renew/Revoke/Delete")?></td>
+                       <?
+               }
+               ?>
+               <td class="DataTD"><?=_("Status")?></td>
+               <td class="DataTD"><?=_("Email Address")?></td>
+               <td class="DataTD"><?=_("SerialNumber")?></td>
+               <td class="DataTD"><?=_("Revoked")?></td>
+               <td class="DataTD"><?=_("Expires")?></td>
+               <td class="DataTD"><?=_("Login")?></td>
+               <?
+               if (1 != $support) {
+                       ?>
+                       <td colspan="2" class="DataTD"><?=_("Comment *")?></td>
+                       <?
+               }
+               ?>
+       </tr>
+       <?
+}
+
+/**
+ * Show the client cert data
+ * @param array $row - associative array containing the column data
+ * @param int   $support - if support = 1 some columns are not visible
+ * @param bool  $readonly - whether elements to modify data should be hidden, default is `true`
+ */
+function output_client_cert($row, $support=0, $readonly=true){
+       //should be entered in account/5.php
+       $verified="";
+       if ($row['timeleft'] > 0) {
+               $verified = _("Valid");
+       } else {
+               $verified = _("Expired");
+       }
+
+       if ($row['expired'] == 0) {
+               $verified = _("Pending");
+       }
+
+       if ($row['revoked'] == 0) {
+               $row['revoke'] = _("Not Revoked");
+       } else {
+               $verified = _("Revoked");
+       }
+
+       ?>
+       <tr>
+       <?
+       if (!$readonly) {
+               if ($verified === _("Pending")) {
+                       ?>
+                       <td class="DataTD">
+                               <input type="checkbox" name="delid[]" value="<?=intval($row['id'])?>">
+                       </td>
+                       <?
+
+               } elseif ($verified === _("Revoked")) {
+                       ?>
+                       <td class="DataTD">&nbsp;</td>
+                       <?
+
+               } else {
+                       ?>
+                       <td class="DataTD">
+                               <input type="checkbox" name="revokeid[]" value="<?=intval($row['id'])?>">
+                       </td>
+                       <?
+               }
+       }
+
+       ?>
+       <td class="DataTD"><?=$verified?></td>
+       <?
+
+       if ($verified === _("Pending")) {
+               ?>
+               <td class="DataTD"><?=(trim($row['CN'])=="" ? _("empty") : htmlspecialchars($row['CN']))?></td>
+               <?
+       } else {
+               ?>
+               <td class="DataTD">
+                       <a href="account.php?id=6&amp;cert=<?=intval($row['id'])?>">
+                               <?=(trim($row['CN'])=="" ? _("empty") : htmlspecialchars($row['CN']))?>
+                       </a>
+               </td>
+               <?
+       }
+
+       ?>
+       <td class="DataTD"><?=$row['serial']?></td>
+       <td class="DataTD"><?=$row['revoke']?></td>
+       <td class="DataTD"><?=$row['expire']?></td>
+       <td class="DataTD">
+               <input type="checkbox" name="disablelogin_<?=intval($row['id'])?>" value="1" <?=$row['disablelogin']?"":"checked='checked'"?> <?=$readonly?'disabled="disabled"':''?>/>
+               <input type="hidden" name="cert_<?=intval($row['id'])?>" value="1" />
+       </td>
+       <?
+
+       if (1 != $support) {
+               ?>
+               <td class="DataTD">
+                       <input name="comment_<?=intval($row['id'])?>" type="text" value="<?=htmlspecialchars($row['description'])?>" />
+               </td>
+               <?
+               if (!$readonly) {
+                       ?>
+                       <td class="DataTD">
+                               <input type="checkbox" name="check_comment_<?=intval($row['id'])?>" />
+                       </td>
+                       <?
+               }
+       }
+
+       ?>
+       </tr>
+       <?
+}
+
+/**
+ * Show the table header to the server cert table
+ * @param int  $support - if support = 1 some columns ar not visible
+ * @param bool $readonly - whether elements to modify data should be hidden, default is `true`
+ */
+function output_server_certs_header($support=0, $readonly=true){
+       //should be entered in account/12.php
+       ?>
+       <tr>
+       <?
+               if (!$readonly) {
+                       ?>
+                       <td class="DataTD"><?=_("Renew/Revoke/Delete")?></td>
+                       <?
+               }
+               ?>
+               <td class="DataTD"><?=_("Status")?></td>
+               <td class="DataTD"><?=_("CommonName")?></td>
+               <td class="DataTD"><?=_("SerialNumber")?></td>
+               <td class="DataTD"><?=_("Revoked")?></td>
+               <td class="DataTD"><?=_("Expires")?></td>
+               <?
+               if (1 != $support) {
+                       ?>
+                       <td colspan="2" class="DataTD"><?=_("Comment *")?></td>
+                       <?
+               }
+       ?>
+       </tr>
+       <?
+}
+
+/**
+ * Show the server cert data
+ * @param array $row - associative array containing the column data
+ * @param int   $support - if support = 1 some columns are not visible
+ * @param bool  $readonly - whether elements to modify data should be hidden, default is `true`
+ */
+function output_server_certs($row, $support=0, $readonly=true){
+       //should be entered in account/12.php
+       $verified="";
+       if ($row['timeleft'] > 0) {
+               $verified = _("Valid");
+       } else {
+               $verified = _("Expired");
+       }
+
+       if ($row['expired'] == 0) {
+               $verified = _("Pending");
+       }
+
+       if ($row['revoked'] == 0) {
+               $row['revoke'] = _("Not Revoked");
+       } else {
+               $verified = _("Revoked");
+       }
+
+       ?>
+       <tr>
+       <?
+       if (!$readonly) {
+               if ($verified === _("Pending")) {
+                       ?>
+                       <td class="DataTD">
+                               <input type="checkbox" name="delid[]" value="<?=intval($row['id'])?>"/>
+                       </td>
+                       <?
+               } elseif($verified === _("Revoked")) {
+                       ?>
+                       <td class="DataTD">&nbsp;</td>
+                       <?
+               } else {
+                       ?>
+                       <td class="DataTD">
+                               <input type="checkbox" name="revokeid[]" value="<?=intval($row['id'])?>"/>
+                       </td>
+                       <?
+               }
+       }
+
+       ?>
+       <td class="DataTD"><?=$verified?></td>
+       <?
+
+       if ($verified === _("Pending")) {
+               ?>
+               <td class="DataTD"><?=htmlspecialchars($row['CN'])?></td>
+               <?
+       } else {
+               ?>
+               <td class="DataTD">
+                       <a href="account.php?id=15&amp;cert=<?=intval($row['id'])?>">
+                               <?=htmlspecialchars($row['CN'])?>
+                       </a>
+               </td>
+               <?
+       }
+
+       ?>
+       <td class="DataTD"><?=$row['serial']?></td>
+       <td class="DataTD"><?=$row['revoke']?></td>
+       <td class="DataTD"><?=$row['expire']?></td>
+       <?
+
+       if (1 != $support) {
+               ?>
+               <td class="DataTD">
+                       <input name="comment_<?=intval($row['id'])?>" type="text" value="<?=htmlspecialchars($row['description'])?>" />
+               </td>
+               <?
+               if (!$readonly) {
+                       ?>
+                       <td class="DataTD">
+                               <input type="checkbox" name="check_comment_<?=intval($row['id'])?>" />
+                       </td>
+                       <?
+               }
+       }
+
+       ?>
+       </tr>
+       <?
+}
+
+/**
+ * Show the table header to the gpg cert table
+ * @param int  $support - if support = 1 some columns ar not visible
+ * @param bool $readonly - whether elements to modify data should be hidden, default is `true`
+ */
+function output_gpg_certs_header($support=0, $readonly=true){
+       // $readonly is currently ignored but kept for consistency
+       ?>
+       <tr>
+               <td class="DataTD"><?=_("Status")?></td>
+               <td class="DataTD"><?=_("Email Address")?></td>
+               <td class="DataTD"><?=_("Expires")?></td>
+               <td class="DataTD"><?=_("Key ID")?></td>
+               <?
+               if (1 != $support) {
+                       ?>
+                       <td colspan="2" class="DataTD"><?=_("Comment *")?></td>
+                       <?
+               }
+       ?>
+       </tr>
+       <?
+}
+
+/**
+ * Show the gpg cert data
+ * @param array $row - associative array containing the column data
+ * @param int   $support - if support = 1 some columns are not visible
+ * @param bool  $readonly - whether elements to modify data should be hidden, default is `true`
+ */
+function output_gpg_certs($row, $support=0, $readonly=true){
+       //should be entered in account/55.php
+       $verified="";
+       if ($row['timeleft'] > 0) {
+               $verified = _("Valid");
+       } else {
+               $verified = _("Expired");
+       }
+
+       if ($row['expired'] == 0) {
+               $verified = _("Pending");
+       }
+
+       ?>
+       <tr>
+               <td class="DataTD"><?=$verified?></td>
+       <?
+
+       if($verified == _("Pending")) {
+               ?>
+               <td class="DataTD"><?=htmlspecialchars($row['email'])?></td>
+               <?
+       } else {
+               ?>
+               <td class="DataTD">
+                       <a href="gpg.php?id=3&amp;cert=<?=intval($row['id'])?>">
+                               <?=htmlspecialchars($row['email'])?>
+                       </a>
+               </td>
+               <?
+       }
+
+       ?>
+       <td class="DataTD"><?=$row['expire']?></td>
+       <?
+
+       if($verified == _("Pending")) {
+               ?>
+               <td class="DataTD"><?=htmlspecialchars($row['keyid'])?></td>
+               <?
+       } else {
+               ?>
+               <td class="DataTD">
+                       <a href="gpg.php?id=3&amp;cert=<?=intval($row['id'])?>">
+                               <?=htmlspecialchars($row['keyid'])?>
+                       </a>
+               </td>
+               <?
+       }
+
+       if (1 != $support) {
+               ?>
+               <td class="DataTD">
+                       <input name="comment_<?=intval($row['id'])?>" type="text" value="<?=htmlspecialchars($row['description'])?>" />
+               </td>
+               <?
+               if (!$readonly) {
+                       ?>
+                       <td class="DataTD">
+                               <input type="checkbox" name="check_comment_<?=intval($row['id'])?>" />
+                       </td>
+                       <?
+               }
+       }
+
+       ?>
+       </tr>
+       <?
+}
index 8908400..17999a7 100644 (file)
 <p><?=_("If you are a valid organisation and would like the organisation name in the certificates you can apply for an organisation assurance. Contact us via support@cacert.org for more information.")?></p>
 
 <form method="post" action="account.php">
+<p><label for="description"><?=_("Optional comment, only used in the certificate overview")?></label><br />
+       <input type="text" id="description" name="description" maxlength="80" size="80" />
+</p>
+<p><label for="CSR"><?=_("Paste your CSR (Certificate Signing Request) below...")?></label><br />
+       <textarea id="CSR" name="CSR" cols="80" rows="15"></textarea>
+</p>
+
+<fieldset>
+<legend>
+       <input type="checkbox" id="expertbox" onchange="showExpert(this.checked)" style="display:none" />
+       <label for="expertbox"><?=_("Advanced Options")?></label>
+</legend>
+<div id="advanced_options">
+
 <? if($_SESSION['profile']['points'] >= 50) { ?>
-<input type="radio" name="rootcert" value="1"/> <?=_("Sign by class 1 root certificate")?><br />
-<input type="radio" name="rootcert" value="2" checked/> <?=_("Sign by class 3 root certificate")?><br />
+<ul class="no_indent">
+       <li>
+               <input type="radio" id="root1" name="rootcert" value="1" />
+               <label for="root1"><?=_("Sign by class 1 root certificate")?></label>
+       </li>
+       <li>
+               <input type="radio" id="root2" name="rootcert" value="2" checked="checked" />
+               <label for="root2"><?=_("Sign by class 3 root certificate")?></label>
+       </li>
+</ul>
 <p><?=_("Please note: The class 3 root certificate needs to be setup in your webserver as a chained certificate, while slightly more complicated to setup, this root certificate is more likely to be trusted by more people.")?></p>
 <? } ?>
-<p><?=_("Optional comment, only used in the certificate overview")?><br>
-       <input type="text" name="description" maxlength="80" size=80/></p>
-<p><?=_("Paste your CSR(Certificate Signing Request) below...")?></p>
-<textarea name="CSR" cols="80" rows="15"></textarea><br />
-<p><input type="checkbox" name="CCA" /> <strong><?=sprintf(_("I accept the CAcert Community Agreement (%s)."),"<a href='/policy/CAcertCommunityAgreement.html'>CCA</a>")?></strong><br />
-  <?=_("Please Note: You need to accept the CCA to proceed.")?></p>
+
+<p class="attach_ul"><?=_("Hash algorithm used when signing the certificate:")?></p>
+<ul class="no_indent">
+<?
+foreach (HashAlgorithms::getInfo() as $algorithm => $display_info) {
+?>
+       <li>
+               <input type="radio" id="hash_alg_<?=$algorithm?>" name="hash_alg" value="<?=$algorithm?>" <?=(HashAlgorithms::$default === $algorithm)?'checked="checked"':''?> />
+               <label for="hash_alg_<?=$algorithm?>"><?=$display_info['name']?><?=$display_info['info']?' - '.$display_info['info']:''?></label>
+       </li>
+<?
+}
+?>
+</ul>
+
+</div>
+</fieldset>
+
+<p><input type="checkbox" id="CCA" name="CCA" /> <label for="CCA"><strong><?=sprintf(_("I accept the CAcert Community Agreement (%s)."),"<a href='/policy/CAcertCommunityAgreement.html'>CCA</a>")?></strong><br />
+  <?=_("Please note: You need to accept the CCA to proceed.")?></label></p>
 <input type="submit" name="process" value="<?=_("Submit")?>" />
 <input type="hidden" name="oldid" value="<?=$id?>" />
 </form>
+
+
+<script language="javascript">
+function showExpert(a)
+{
+       var options=document.getElementById("advanced_options");
+       options.style.display = (a) ? "" : "none";
+
+       var checkbox=document.getElementById("expertbox");
+       checkbox.style.display = "";
+}
+showExpert(false);
+</script>
index 9058a07..f4428aa 100644 (file)
@@ -19,7 +19,7 @@
 <form method="post" action="account.php">
 <table align="center" valign="middle" border="0" cellspacing="0" cellpadding="0" class="wrapper">
   <tr>
-    <td colspan="8" class="title"><?=_("Domain Certificates")?> - <a href="account.php?id=12&amp;viewall=<?=!$viewall?>"><?=$viewall?_("Hide old certificates"):_("View all certificates")?></a></td>
+    <td colspan="8" class="title"><?=_("Domain Certificates")?> - <a href="account.php?id=12&amp;viewall=<?=intval(!$viewall)?>"><?=$viewall?_("Hide old certificates"):_("View all certificates")?></a></td>
   </tr>
   <tr>
     <td class="DataTD"><?=_("Renew/Revoke/Delete")?></td>
        $query = "select UNIX_TIMESTAMP(`domaincerts`.`created`) as `created`,
                        UNIX_TIMESTAMP(`domaincerts`.`expire`) - UNIX_TIMESTAMP() as `timeleft`,
                        UNIX_TIMESTAMP(`domaincerts`.`expire`) as `expired`,
-                       `domaincerts`.`expire` as `expires`, `revoked` as `revoke`,
-                       UNIX_TIMESTAMP(`revoked`) as `revoked`, `CN`, `domaincerts`.`serial`, `domaincerts`.`id` as `id`,
+                       `domaincerts`.`expire`,
+                       `domaincerts`.`revoked` as `revoke`,
+                       UNIX_TIMESTAMP(`revoked`) as `revoked`,
+                       if (`domaincerts`.`expire`=0,CURRENT_TIMESTAMP(),`domaincerts`.`modified`) as `modified`,
+                       `CN`, `domaincerts`.`serial`, `domaincerts`.`id` as `id`,
                        `domaincerts`.`description`
                        from `domaincerts`,`domains`
                        where `memid`='".intval($_SESSION['profile']['id'])."' and `domaincerts`.`domid`=`domains`.`id` ";
        if($viewall != 1)
        {
                $query .= "AND `revoked`=0 AND `renewed`=0 ";
-               $query .= "HAVING `timeleft` > 0 ";
+               $query .= "HAVING `timeleft` > 0 or `expire` = 0 ";
        }
-       $query .= "ORDER BY `domaincerts`.`modified` desc";
+       $query .= "ORDER BY `modified` desc";
 //echo $query."<br>\n";
        $res = mysql_query($query);
        if(mysql_num_rows($res) <= 0)
 ?>
   <tr>
 <? if($verified != _("Pending") && $verified != _("Revoked")) { ?>
-    <td class="DataTD"><input type="checkbox" name="revokeid[]" value="<?=$row['id']?>"/></td>
+    <td class="DataTD"><input type="checkbox" name="revokeid[]" value="<?=intval($row['id'])?>"/></td>
 <? } else if($verified != _("Revoked")) { ?>
-    <td class="DataTD"><input type="checkbox" name="delid[]" value="<?=$row['id']?>"/></td>
+    <td class="DataTD"><input type="checkbox" name="delid[]" value="<?=intval($row['id'])?>"/></td>
 <? } else { ?>
     <td class="DataTD">&nbsp;</td>
 <? } ?>
     <td class="DataTD"><?=$verified?></td>
-    <td class="DataTD"><a href="account.php?id=15&amp;cert=<?=$row['id']?>"><?=$row['CN']?></a></td>
+    <td class="DataTD"><a href="account.php?id=15&amp;cert=<?=intval($row['id'])?>"><?=htmlspecialchars($row['CN'])?></a></td>
     <td class="DataTD"><?=$row['serial']?></td>
     <td class="DataTD"><?=$row['revoke']?></td>
-    <td class="DataTD"><?=$row['expires']?></td>
-    <td class="DataTD"><input name="comment_<?=$row['id']?>" type="text" value="<?=htmlspecialchars($row['description'])?>" /></td>
-    <td class="DataTD"><input type="checkbox" name="check_comment_<?=$row['id']?>" /></td>
+    <td class="DataTD"><?=$row['expire']?></td>
+    <td class="DataTD"><input name="comment_<?=intval($row['id'])?>" type="text" value="<?=htmlspecialchars($row['description'])?>" /></td>
+    <td class="DataTD"><input type="checkbox" name="check_comment_<?=intval($row['id'])?>" /></td>
   </tr>
 <? } ?>
   <tr>
     <td class="DataTD" colspan="8">
-      <a href="account.php?id=12&amp;viewall=<?=!$viewall?>"><b><?=$viewall?_("Hide old certificates"):_("View all certificates")?></b></a>
+      <a href="account.php?id=12&amp;viewall=<?=intval(!$viewall)?>"><b><?=$viewall?_("Hide old certificates"):_("View all certificates")?></b></a>
     </td>
   </tr>
   <tr>
     <td class="DataTD" colspan="8"><?=_("From here you can delete pending requests, or revoke valid certificates.")?></td>
   </tr>
 </table>
-<input type="hidden" name="oldid" value="<?=$id?>"/>
+<input type="hidden" name="oldid" value="<?=intval($id)?>"/>
 <input type="hidden" name="csrf" value="<?=make_csrf('srvcerchange')?>"/>
 </form>
index 08f325d..080e277 100644 (file)
 <? if($_SESSION['profile']['points'] == 0) { ?>
   <tr>
     <td class="DataTD" width="125"><?=_("First Name")?>: </td>
-    <td class="DataTD" width="125"><input type="text" name="fname" value="<?=$user['fname']?>"></td>
+    <td class="DataTD" width="125"><input type="text" name="fname" value="<?=sanitizeHTML($user['fname'])?>"></td>
   </tr>
   <tr>
     <td class="DataTD" valign="top"><?=_("Middle Name(s)")?><br>
       (<?=_("optional")?>)
     </td>
-    <td class="DataTD"><input type="text" name="mname" value="<?=$user['mname']?>"></td>
+    <td class="DataTD"><input type="text" name="mname" value="<?=sanitizeHTML($user['mname'])?>"></td>
   </tr>
   <tr>
     <td class="DataTD"><?=_("Last Name")?>: </td>
-    <td class="DataTD"><input type="text" name="lname" value="<?=$user['lname']?>"></td>
+    <td class="DataTD"><input type="text" name="lname" value="<?=sanitizeHTML($user['lname'])?>"></td>
   </tr>
   <tr>
     <td class="DataTD"><?=_("Suffix")?><br>
       (<?=_("optional")?>)</td>
-    <td class="DataTD"><input type="text" name="suffix" value="<?=$user['suffix']?>"></td>
+    <td class="DataTD"><input type="text" name="suffix" value="<?=sanitizeHTML($user['suffix'])?>"></td>
   </tr>
   <tr>
     <td class="DataTD"><?=_("Date of Birth")?><br>
 <? } else { ?>
   <tr>
     <td class="DataTD" width="125"><?=_("First Name")?>: </td>
-    <td class="DataTD" width="125"><?=$user['fname']?></td>
+    <td class="DataTD" width="125"><?=sanitizeHTML($user['fname'])?></td>
   </tr>
   <tr>
     <td class="DataTD" valign="top"><?=_("Middle Name(s)")?><br>
       (<?=_("optional")?>)
     </td>
-    <td class="DataTD"><?=$user['mname']?></td>
+    <td class="DataTD"><?=sanitizeHTML($user['mname'])?></td>
   </tr>
   <tr>
     <td class="DataTD"><?=_("Last Name")?>: </td>
-    <td class="DataTD"><?=$user['lname']?></td>
+    <td class="DataTD"><?=sanitizeHTML($user['lname'])?></td>
   </tr>
   <tr>
     <td class="DataTD"><?=_("Suffix")?><br>
       (<?=_("optional")?>)</td>
-    <td class="DataTD"><?=$user['suffix']?></td>
+    <td class="DataTD"><?=sanitizeHTML($user['suffix'])?></td>
   </tr>
   <tr>
     <td class="DataTD"><?=_("Date of Birth")?><br>
   </tr>
 <? } ?>
   <tr>
-    <td colspan="2" class="title"><a href="account.php?id=13&amp;showdetails=<?=!$showdetails?>"><?=_("View secret question & answers and OTP phrases")?></a></td>
+    <td colspan="2" class="title"><a href="account.php?id=59&amp;oldid=13&amp;userid=<?=intval($_SESSION['profile']['id'])?>"><?=_('Show account history')?></a></td>
+  </tr>
+  <tr>
+    <td colspan="2" class="title"><a href="account.php?id=13&amp;showdetails=<?=intval(!$showdetails)?>"><?=_("View secret question & answers and OTP phrases")?></a></td>
   </tr>
   <? if($showdetails){ ?>
   <tr>
   </tr>
 </table>
 <input type="hidden" name="csrf" value="<?=make_csrf('perschange')?>" />
-<input type="hidden" name="oldid" value="<?=$id?>">
+<input type="hidden" name="oldid" value="<?=intval($id)?>">
 </form>
index 564463e..8783bc5 100644 (file)
   <tr>
     <td class="DataTD"><?=_("Add")?></td>
     <td class="DataTD"><?=_("Address")?></td>
-<? if(array_key_exists('emails',$_SESSION['_config']) && is_array($_SESSION['_config']['emails']))
-       foreach($_SESSION['_config']['emails'] as $val) { ?>
+<?
+if (array_key_exists('emails',$_SESSION['_config']) && is_array($_SESSION['_config']['emails'])) {
+       $i = 1;
+       foreach($_SESSION['_config']['emails'] as $val) {
+?>
   <tr>
-    <td class="DataTD"><?=_("Email")?>:</td>
-    <td class="DataTD"><input type="text" name="emails[]" value="<?=$val?>"/></td>
+    <td class="DataTD"><label for="email<?=$i?>"><?=_("Email")?></label></td>
+    <td class="DataTD"><input type="text" id="email<?=$i?>" name="emails[]" value="<?=$val?>"/></td>
   </tr>
-<? } ?>
+<?
+               $i++;
+       }
+} ?>
   <tr>
-    <td class="DataTD"><?=_("Email")?>:</td>
-    <td class="DataTD"><input type="text" name="emails[]"/></td>
+    <td class="DataTD"><label for="email0"><?=_("Email")?></td>
+    <td class="DataTD"><input type="text" id="email0" name="emails[]"/></td>
   </tr>
   <tr>
-    <td class="DataTD"><?=_("Name")?>:</td>
-    <td class="DataTD"><input type="text" name="name" value="<?=array_key_exists('name',$_SESSION['_config'])?($_SESSION['_config']['name']):''?>"/></td>
+    <td class="DataTD"><label for="name"><?=_("Name")?></label></td>
+    <td class="DataTD"><input type="text" id="name" name="name" value="<?=array_key_exists('name',$_SESSION['_config'])?($_SESSION['_config']['name']):''?>"/></td>
   </tr>
   <tr>
-    <td class="DataTD"><?=_("Department")?>:</td>
-    <td class="DataTD"><input type="text" name="OU" value="<?=array_key_exists('OU',$_SESSION['_config'])?($_SESSION['_config']['OU']):''?>"/></td>
+    <td class="DataTD"><label for="OU"><?=_("Department")?></label></td>
+    <td class="DataTD"><input type="text" id="OU" name="OU" value="<?=array_key_exists('OU',$_SESSION['_config'])?(sanitizeHTML($_SESSION['_config']['OU'])):''?>"/></td>
   </tr>
-  <tr>
+
+  <tr name="expertoff" style="display:none">
+    <td class="DataTD">
+      <input type="checkbox" id="expertbox" name="expertbox" onchange="showExpert(this.checked)" />
+    </td>
+    <td class="DataTD">
+      <label for="expertbox"><?=_("Show advanced options")?></label>
+    </td>
+  </tr>
+  <tr name="expert">
+    <td class="DataTD" colspan="2" align="left">
+        <input type="radio" id="root1" name="rootcert" value="1" /> <label for="root1"><?=_("Sign by class 1 root certificate")?></label><br />
+        <input type="radio" id="root2" name="rootcert" value="2" checked="checked" /> <label for="root2"><?=_("Sign by class 3 root certificate")?></label><br />
+        <?=str_replace("\n", "<br>\n", wordwrap(_("Please note: If you use a certificate signed by the class 3 root, the class 3 root certificate needs to be imported into your email program as well as the class 1 root certificate so your email program can build a full trust path chain."), 60))?>
+    </td>
+  </tr>
+
+  <tr name="expert">
     <td class="DataTD" colspan="2" align="left">
-        <input type="radio" name="rootcert" value="1" checked /> <?=_("Sign by class 1 root certificate")?><br />
-        <input type="radio" name="rootcert" value="2" /> <?=_("Sign by class 3 root certificate")?><br />
-        <?=str_replace("\n", "<br>\n", wordwrap(_("Please note: The class 3 root certificate needs to be imported into your email program as well as the class 1 root certificate so your email program can build a full trust path chain. Until we are included in browsers this might not be a desirable option for most people"), 60))?>
+      <?=_("Hash algorithm used when signing the certificate:")?><br />
+      <?
+      foreach (HashAlgorithms::getInfo() as $algorithm => $display_info) {
+      ?>
+        <input type="radio" id="hash_alg_<?=$algorithm?>" name="hash_alg" value="<?=$algorithm?>" <?=(HashAlgorithms::$default === $algorithm)?'checked="checked"':''?> />
+        <label for="hash_alg_<?=$algorithm?>"><?=$display_info['name']?><?=$display_info['info']?' - '.$display_info['info']:''?></label><br />
+      <?
+      }
+      ?>
     </td>
   </tr>
+
 <? if($_SESSION['profile']['codesign'] && $_SESSION['profile']['points'] >= 100) { ?>
-  <tr>
-    <td class="DataTD" colspan="2" align="left"><input type="checkbox" name="codesign" value="1" /><?=_("Code Signing")?></td>
+  <tr name="expert">
+    <td class="DataTD" colspan="2" align="left">
+      <input type="checkbox" id="codesign" name="codesign" value="1" />
+      <label for="codesign"><?=_("Code Signing")?></label>
+    </td>
   </tr>
 <? } ?>
-   <tr>
-   <td class="DataTD" colspan="2" align="left">
-      <?=_("Optional comment, only used in the certificate overview")?><br />
-       <input type="text" name="description" maxlength="80" size=80 />
-   </td>
+  <tr>
+    <td class="DataTD" colspan="2" align="left">
+      <label for="description"><?=_("Optional comment, only used in the certificate overview")?></label><br />
+      <input type="text" id="description" name="description" maxlength="80" size="80" />
+    </td>
   </tr>
   <tr>
-    <td class="DataTD" colspan="2"><input type="submit" name="add_email" value="<?=_("Another Email")?>">
-                       <input type="submit" name="process" value="<?=_("Next")?>" /></td>
+    <td class="DataTD" colspan="2">
+      <input type="submit" name="add_email" value="<?=_("Add Another Email Address")?>">
+      <input type="submit" name="process" value="<?=_("Next")?>" />
+    </td>
   </tr>
 </table>
 <input type="hidden" name="oldid" value="<?=$id?>">
 </form>
+
+<script language="javascript">
+function showExpert(a)
+{
+  b=document.getElementsByName("expert");
+  for(i=0;b.length>i;i++)
+  {
+    if(!a) {b[i].setAttribute("style","display:none"); }
+    else {b[i].removeAttribute("style");}
+  }
+  b=document.getElementsByName("expertoff");
+  for(i=0;b.length>i;i++)
+  {
+    b[i].removeAttribute("style");
+  }
+
+}
+showExpert(false);
+</script>
index 9ab13b2..ca0a3c8 100644 (file)
@@ -79,6 +79,7 @@ $status = array_key_exists('status',$_SESSION['_config']) ? intval($_SESSION['_c
       UNIX_TIMESTAMP(`oemail`.`expire`) as `expired`,
       `oemail`.`expire` as `expires`, `oemail`.`revoked` as `revoke`,
       UNIX_TIMESTAMP(`oemail`.`revoked`) as `revoked`,
+      if (`oemail`.`expire`=0,CURRENT_TIMESTAMP(),`oemail`.`modified`) as `modified`,
       `oemail`.`CN`, `oemail`.`serial`, `oemail`.`id`,
       `oemail`.`description`, `oemail`.`ou`, `orginfo`.`O`
       from `orgemailcerts` as `oemail`, `org`, `orginfo`
@@ -92,17 +93,17 @@ $status = array_key_exists('status',$_SESSION['_config']) ? intval($_SESSION['_c
   if(0==$status)
   {
     $query .= "AND `oemail`.`revoked`=0 AND `oemail`.`renewed`=0 ";
-    $query .= "HAVING `timeleft` > 0 AND `revoked`=0 ";
+    $query .= "HAVING `timeleft` > 0 AND `revoked`=0 or `expires` = 0 ";
   }
   switch ($sorting){
     case 0:
-      $query .= "ORDER BY `orginfo`.`O`, `oemail`.`expire` desc";
+      $query .= "ORDER BY `orginfo`.`O`, `modified` desc";
       break;
     case 1:
-      $query .= "ORDER BY `orginfo`.`O`, `oemail`.`ou`, `oemail`.`expire` desc";
+      $query .= "ORDER BY `orginfo`.`O`, `oemail`.`ou`, `modified` desc";
       break;
     case 2:
-      $query .= "ORDER BY `orginfo`.`O`, `oemail`.`CN`, `oemail`.`expire` desc";
+      $query .= "ORDER BY `orginfo`.`O`, `oemail`.`CN`, `modified` desc";
       break;
   }
   $res = mysql_query($query);
index ee16dd4..89bbc30 100644 (file)
 <p><?=_("If the Subscriber's name and/or domain name registration change the subscriber will immediately inform CAcert Inc. who shall revoke the digital certificate. When the Digital Certificate expires or is revoked the company will permanently remove the certificate from the server on which it is installed and will not use it for any purpose thereafter. The person responsible for key management and security is fully authorized to install and utilize the certificate to represent this organization's electronic presence.")?></p>
 
 <form method="post" action="account.php">
-<input type="radio" name="rootcert" value="1" /> <?=_("Sign by class 1 root certificate")?><br />
-<input type="radio" name="rootcert" value="2" checked /> <?=_("Sign by class 3 root certificate")?><br />
-<p> <?=_("Optional comment, only used in the certificate overview")?><br />
-       <input type="text" name="description" maxlength="80" size=80 /></p>
+<p><label for="description"><?=_("Optional comment, only used in the certificate overview")?></label><br />
+       <input type="text" id="description" name="description" maxlength="80" size="80" />
+</p>
+<p><label for="CSR"><?=_("Paste your CSR (Certificate Signing Request) below...")?></label><br />
+       <textarea id="CSR" name="CSR" cols="80" rows="15"></textarea>
+</p>
+
+<fieldset>
+<legend>
+       <input type="checkbox" id="expertbox" onchange="showExpert(this.checked)" style="display:none" />
+       <label for="expertbox"><?=_("Advanced Options")?></label>
+</legend>
+<div id="advanced_options">
+<ul class="no_indent">
+       <li>
+               <input type="radio" id="root1" name="rootcert" value="1" />
+               <label for="root1"><?=_("Sign by class 1 root certificate")?></label>
+       </li>
+       <li>
+               <input type="radio" id="root2" name="rootcert" value="2" checked="checked" />
+               <label for="root2"><?=_("Sign by class 3 root certificate")?></label>
+       </li>
+</ul>
 <p><?=_("Please note: The class 3 root certificate needs to be setup in your webserver as a chained certificate, while slightly more complicated to setup, this root certificate is more likely to be trusted by more people.")?></p>
-<p><?=_("Paste your CSR below...")?></p>
-<textarea name="CSR" cols="80" rows="15"></textarea><br />
+
+<p class="attach_ul"><?=_("Hash algorithm used when signing the certificate:")?></p>
+<ul class="no_indent">
+<?
+foreach (HashAlgorithms::getInfo() as $algorithm => $display_info) {
+?>
+       <li>
+               <input type="radio" id="hash_alg_<?=$algorithm?>" name="hash_alg" value="<?=$algorithm?>" <?=(HashAlgorithms::$default === $algorithm)?'checked="checked"':''?> />
+               <label for="hash_alg_<?=$algorithm?>"><?=$display_info['name']?><?=$display_info['info']?' - '.$display_info['info']:''?></label>
+       </li>
+<?
+}
+?>
+</ul>
+
+</div>
+</fieldset>
+
 <input type="submit" name="process" value="<?=_("Submit")?>" />
 <input type="hidden" name="oldid" value="<?=$id?>" />
-</form>
\ No newline at end of file
+</form>
+
+<script language="javascript">
+function showExpert(a)
+{
+       var options=document.getElementById("advanced_options");
+       options.style.display = (a) ? "" : "none";
+
+       var checkbox=document.getElementById("expertbox");
+       checkbox.style.display = "";
+}
+showExpert(false);
+</script>
index 75827fb..c5832b9 100644 (file)
@@ -41,7 +41,7 @@ if (is_array($_SESSION['_config']['altrows'])) {
 }
 
 echo _("Organisation"), ": {$org['O']}<br>\n";
-echo _("Org. Unit"), ": {$_SESSION['_config']['OU']}<br>\n";
+echo _("Org. Unit"), ": ", sanitizeHTML($_SESSION['_config']['OU']), "<br>\n";
 echo _("Location"), ": {$org['L']}<br>\n";
 echo _("State/Province"), ": {$org['ST']}<br>\n";
 echo _("Country"), ": {$org['C']}<br>\n";
@@ -52,7 +52,7 @@ echo _("Country"), ": {$org['C']}<br>\n";
                <input type="submit" name="process" value="<?=_("Submit")?>">
                <input type="hidden" name="oldid" value="<?=$id?>">
        </p>
-       
+
        <?
        if ($_SESSION['profile']['admin'] == 1) {
                ?>
index 0413da0..7b7db2d 100644 (file)
@@ -78,7 +78,9 @@ $status = array_key_exists('dstatus',$_SESSION['_config']) ? intval($_SESSION['_
       UNIX_TIMESTAMP(`orgdomaincerts`.`expire`) - UNIX_TIMESTAMP() as `timeleft`,
       UNIX_TIMESTAMP(`orgdomaincerts`.`expire`) as `expired`,
       `orgdomaincerts`.`expire` as `expires`, `revoked` as `revoke`,
-      UNIX_TIMESTAMP(`revoked`) as `revoked`, `CN`,
+      UNIX_TIMESTAMP(`orgdomaincerts`.`revoked`) as `revoked`,
+      if (`orgdomaincerts`.`expire`=0,CURRENT_TIMESTAMP(),`orgdomaincerts`.`modified`) as `modified`,
+       `CN`,
       `orgdomaincerts`.`serial`,
       `orgdomaincerts`.`id` as `id`,
       `orgdomaincerts`.`description`, `orginfo`.`O`
@@ -94,14 +96,14 @@ $status = array_key_exists('dstatus',$_SESSION['_config']) ? intval($_SESSION['_
     if(0==$status)
     {
       $query .= "AND `revoked`=0 AND `renewed`=0 ";
-      $query .= "HAVING `timeleft` > 0 ";
+      $query .= "HAVING `timeleft` > 0 or `expires` = 0 ";
     }
     switch ($sorting){
       case 0:
-        $query .= "ORDER BY `orginfo`.`O`, `orgdomaincerts`.`expire` desc";
+        $query .= "ORDER BY `orginfo`.`O`, `modified` desc";
         break;
       case 1:
-        $query .= "ORDER BY `orginfo`.`O`, `orgdomaincerts`.`CN`, `orgdomaincerts`.`expire` desc";
+        $query .= "ORDER BY `orginfo`.`O`, `orgdomaincerts`.`CN`, `modified` desc";
         break;
     }
 
index 7e34300..cd62ce0 100644 (file)
@@ -34,6 +34,7 @@
   <tr>
     <td class="DataTD"><?=_("Add")?></td>
     <td class="DataTD"><?=_("Address")?></td>
+  </tr>
 
 <?
        $query = "select * from `email` where `memid`='".intval($_SESSION['profile']['id'])."' and `deleted`=0 and `hash`=''";
@@ -41,8 +42,8 @@
        while($row = mysql_fetch_assoc($res))
        { ?>
   <tr>
-    <td class="DataTD"><input type="checkbox" name="addid[]" value="<?=intval($row['id'])?>"></td>
-    <td class="DataTD"><?=sanitizeHTML($row['email'])?></td>
+    <td class="DataTD"><input type="checkbox" id="addid<?=intval($row['id'])?>" name="addid[]" value="<?=intval($row['id'])?>"></td>
+    <td class="DataTD" align="left"><label for="addid<?=intval($row['id'])?>"><?=sanitizeHTML($row['email'])?></label></td>
   </tr>
 <? }
 if($_SESSION['profile']['points'] >= 50)
@@ -52,81 +53,120 @@ if($_SESSION['profile']['points'] >= 50)
        $lname = $_SESSION['profile']['lname'];
        $suffix = $_SESSION['profile']['suffix'];
 ?>
-    <td class="DataTD" colspan="2" align="left">
-      <input type="radio" name="rootcert" value="1" checked /> <?=_("Sign by class 1 root certificate")?><br />
-      <input type="radio" name="rootcert" value="2" /> <?=_("Sign by class 3 root certificate")?><br />
-      <?=str_replace("\n", "<br />\n", wordwrap(_("Please note: The class 3 root certificate needs to be imported into your email program as well as the class 1 root certificate so your email program can build a full trust path chain. Until we are included in browsers this might not be a desirable option for most people"), 125))?>
-    </td>
-  </tr>
   <tr>
     <td class="DataTD" colspan="2" align="left">
-      <input type="radio" name="incname" value="0" checked /> <?=_("No Name")?><br />
-      <? if($fname && $lname) { ?><input type="radio" name="incname" value="1" /> <?=_("Include")?> '<?=$fname." ".$lname?>'<br /><? } ?>
-      <? if($fname && $mname && $lname) { ?><input type="radio" name="incname" value="2" /> <?=_("Include")?> '<?=$fname." ".$mname." ".$lname?>'<br /><? } ?>
-      <? if($fname && $lname && $suffix) { ?><input type="radio" name="incname" value="3" /> <?=_("Include")?> '<?=$fname." ".$lname." ".$suffix?>'<br /><? } ?>
-      <? if($fname && $mname && $lname && $suffix) { ?><input type="radio" name="incname" value="4" /> <?=_("Include")?> '<?=$fname." ".$mname." ".$lname." ".$suffix?>'<br /><? } ?>
+      <input type="radio" id="incname0" name="incname" value="0" checked="checked" />
+        <label for="incname0"><?=_("No Name")?></label><br />
+      <? if($fname && $lname) { ?>
+        <input type="radio" id="incname1" name="incname" value="1" />
+        <label for="incname1"><?=_("Include")?> '<?=$fname." ".$lname?>'</label><br />
+      <? } ?>
+      <? if($fname && $mname && $lname) { ?>
+        <input type="radio" id="incname2" name="incname" value="2" />
+        <label for="incname2"><?=_("Include")?> '<?=$fname." ".$mname." ".$lname?>'</label><br />
+      <? } ?>
+      <? if($fname && $lname && $suffix) { ?>
+        <input type="radio" id="incname3" name="incname" value="3" />
+        <label for="incname3"><?=_("Include")?> '<?=$fname." ".$lname." ".$suffix?>'</label><br />
+      <? } ?>
+      <? if($fname && $mname && $lname && $suffix) { ?>
+        <input type="radio" id="incname4" name="incname" value="4" />
+        <label for="incname4"><?=_("Include")?> '<?=$fname." ".$mname." ".$lname." ".$suffix?>'</label><br />
+      <? } ?>
     </td>
   </tr>
 <? } ?>
-<? if($_SESSION['profile']['points'] >= 100 && $_SESSION['profile']['codesign'] > 0) { ?>
+
   <tr>
     <td class="DataTD">
-      <input type="checkbox" name="codesign" value="1" />
+      <input type="checkbox" id="login" name="login" value="1" checked="checked" />
     </td>
     <td class="DataTD" align="left">
-      <?=_("Code Signing")?><br />
-      <?=_("Please Note: By ticking this box you will automatically have your name included in any certificates.")?>
+      <label for="login"><?=_("Enable certificate login with this certificate")?><br />
+      <?=_("By allowing certificate login, this certificate can be used to login into this account at https://secure.cacert.org/ .")?></label>
     </td>
   </tr>
-<? } ?>
-
   <tr>
+    <td class="DataTD" colspan="2" align="left">
+      <label for="description"><?=_("Optional comment, only used in the certificate overview")?></label><br />
+      <input type="text" id="description" name="description" maxlength="100" size="100" />
+    </td>
+  </tr>
+
+  <tr name="expertoff" style="display:none">
     <td class="DataTD">
-      <input type="checkbox" name="login" value="1" checked="checked" />
+      <input type="checkbox" id="expertbox" name="expertbox" onchange="showExpert(this.checked)" />
     </td>
-    <td class="DataTD"> <?=_("Enable certificate login with this certificate")?><br />
-      <?=_("By allowing certificate login, this certificate can be used to login into this account at https://secure.cacert.org/ .")?><br/>
+    <td class="DataTD" align="left">
+      <label for="expertbox"><?=_("Show advanced options")?></label>
     </td>
   </tr>
-  <tr>
-   <td class="DataTD" colspan="2" align="left">
-      <?=_("Optional comment, only used in the certificate overview")?><br />
-       <input type="text" name="description" maxlength="100" size="100" />
-   </td>
+
+<?
+if($_SESSION['profile']['points'] >= 50)
+{
+?>
+  <tr name="expert">
+    <td class="DataTD" colspan="2" align="left">
+      <input type="radio" id="root1" name="rootcert" value="1" /> <label for="root1"><?=_("Sign by class 1 root certificate")?></label><br />
+      <input type="radio" id="root2" name="rootcert" value="2" checked="checked" /> <label for="root2"><?=_("Sign by class 3 root certificate")?></label><br />
+      <?=str_replace("\n", "<br />\n", wordwrap(_("Please note: If you use a certificate signed by the class 3 root, the class 3 root certificate needs to be imported into your email program as well as the class 1 root certificate so your email program can build a full trust path chain."), 125))?>
+    </td>
   </tr>
+<? } ?>
 
-  <tr name="expertoff" style="display:none">
+  <tr name="expert">
+    <td class="DataTD" colspan="2" align="left">
+      <?=_("Hash algorithm used when signing the certificate:")?><br />
+      <?
+      foreach (HashAlgorithms::getInfo() as $algorithm => $display_info) {
+      ?>
+        <input type="radio" id="hash_alg_<?=$algorithm?>" name="hash_alg" value="<?=$algorithm?>" <?=(HashAlgorithms::$default === $algorithm)?'checked="checked"':''?> />
+        <label for="hash_alg_<?=$algorithm?>"><?=$display_info['name']?><?=$display_info['info']?' - '.$display_info['info']:''?></label><br />
+      <?
+      }
+      ?>
+    </td>
+  </tr>
+
+<? if($_SESSION['profile']['points'] >= 100 && $_SESSION['profile']['codesign'] > 0) { ?>
+  <tr name="expert">
     <td class="DataTD">
-      <input type="checkbox" name="expertbox" onchange="showExpert(this.checked)" />
+      <input type="checkbox" id="codesign" name="codesign" value="1" />
     </td>
+    <td class="DataTD" align="left">
+      <label for="codesign"><?=_("Code Signing")?><br />
+      <?=_("Please note: By ticking this box you will automatically have your name included in the certificate.")?></label>
+    </td>
+  </tr>
+<? } ?>
+
+  <tr name="expert">
     <td class="DataTD">
-      <?=_("Show advanced options")?>
+      <input type="checkbox" id="SSO" name="SSO" value="1" />
+    </td>
+    <td class="DataTD" align="left">
+      <label for="SSO"><?=_("Add Single Sign On ID Information")?><br />
+      <?=str_replace("\n", "<br>\n", wordwrap(_("By adding Single Sign On (SSO) ID information to your certificates this could be used to track you, you can also issue certificates with no email addresses that are useful only for Authentication. Please see a more detailed description on our WIKI about it."), 125))?>
+      <a href="http://wiki.cacert.org/wiki/SSO"><?=_("SSO WIKI Entry")?></a></label>
     </td>
   </tr>
 
   <tr name="expert">
-    <td class="DataTD" colspan="2" align="left">
-       <input type="radio" name="SSO" value="0" checked /> <?=_("No Single Sign On ID")?><br />
-       <input type="radio" name="SSO" value="1" /> <?=_("Add Single Sign On ID Information")?><br />
-       <?=str_replace("\n", "<br>\n", wordwrap(_("By adding Single Sign On (SSO) ID information to your certificates this could be used to track you, you can also issue certificates with no email addresses that are useful only for Authentication. Please see a more detailed description on our WIKI about it."), 125))?>
-       <a href="http://wiki.cacert.org/wiki/SSO"><?=_("SSO WIKI Entry")?></a>
+    <td class="DataTD" colspan="2">
+      <label for="optionalCSR"><?=_("Optional Client CSR, no information on the certificate will be used")?></label><br />
+      <textarea id="optionalCSR" name="optionalCSR" cols="80" rows="5"></textarea>
     </td>
   </tr>
 
 
- <tr name="expert">
-    <td class="DataTD" colspan="2"><?=_("Optional Client CSR, no information on the certificate will be used")?></td>
- </tr>
- <tr name="expert">
-    <td class="DataTD" colspan="2"><textarea name="optionalCSR" cols="80" rows="5"></textarea></td>
- </tr>
- <tr>
+  <tr>
     <td class="DataTD">
-      <input type="checkbox" name="CCA" />
+      <input type="checkbox" id="CCA" name="CCA" />
     </td>
     <td class="DataTD" align="left">
-      <strong><?=sprintf(_("I accept the CAcert Community Agreement (%s)."),"<a href='/policy/CAcertCommunityAgreement.html'>CCA</a>")?></strong><br />
-        <?=_("Please Note: You need to accept the CCA to proceed.")?>
+      <label for="CCA"><strong><?=sprintf(_("I accept the CAcert Community Agreement (%s)."),"<a href='/policy/CAcertCommunityAgreement.html'>CCA</a>")?></strong><br />
+      <?=_("Please note: You need to accept the CCA to proceed.")?></label>
     </td>
   </tr>
   <tr>
@@ -154,4 +194,3 @@ function showExpert(a)
 }
 showExpert(false);
 </script>
-
index 53b24d3..c889ce3 100644 (file)
     You should have received a copy of the GNU General Public License
     along with this program; if not, write to the Free Software
     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
-*/ ?>
-<?
+*/
+
 include_once($_SESSION['_config']['filepath']."/includes/notary.inc.php");
 
+$ticketno='';
+$ticketvalidation=FALSE;
 
-  if(array_key_exists('assurance',$_REQUEST) && $_REQUEST['assurance'] > 0)
-  {
-    $assurance = mysql_escape_string(intval($_REQUEST['assurance']));
-    $row = 0;
-    $res = mysql_query("select `to` from `notary` where `id`='$assurance'");
-    if ($res) {
-      $row = mysql_fetch_assoc($res);
-    }
-    mysql_query("delete from `notary` where `id`='$assurance'");
-    if ($row) {
-      fix_assurer_flag($row['to']);
-    }
-  }
+if (isset($_SESSION['ticketno'])) {
+    $ticketno = $_SESSION['ticketno'];
+    $ticketvalidation = valid_ticket_number($ticketno);
+}
+if (isset($_SESSION['ticketmsg'])) {
+    $ticketmsg = $_SESSION['ticketmsg'];
+} else {
+    $ticketmsg = '';
+}
 
-  if(intval(array_key_exists('userid',$_REQUEST)?$_REQUEST['userid']:0) <= 0)
-  {
+
+// search for an account by email search, if more than one is found display list to choose
+if(intval(array_key_exists('userid',$_REQUEST)?$_REQUEST['userid']:0) <= 0)
+{
     $_REQUEST['userid'] = 0;
 
-    $emailsearch = $email = mysql_escape_string(stripslashes($_REQUEST['email']));
+    $emailsearch = $email = mysql_real_escape_string(stripslashes($_REQUEST['email']));
 
     //Disabled to speed up the queries
     //if(!strstr($email, "%"))
@@ -45,877 +45,1036 @@ include_once($_SESSION['_config']['filepath']."/includes/notary.inc.php");
 
     // bug-975 ted+uli changes --- begin
     if(preg_match("/^[0-9]+$/", $email)) {
-      // $email consists of digits only ==> search for IDs
-      // Be defensive here (outer join) if primary mail is not listed in email table
-      $query = "select `users`.`id` as `id`, `email`.`email` as `email`
-          from `users` left outer join `email` on (`users`.`id`=`email`.`memid`)
-          where (`email`.`id`='$email' or `users`.`id`='$email')
-            and `users`.`deleted`=0
-          group by `users`.`id` limit 100";
+        // $email consists of digits only ==> search for IDs
+        // Be defensive here (outer join) if primary mail is not listed in email table
+        $query = "select `users`.`id` as `id`, `email`.`email` as `email`
+            from `users` left outer join `email` on (`users`.`id`=`email`.`memid`)
+            where (`email`.`id`='$email' or `users`.`id`='$email')
+                and `users`.`deleted`=0
+            group by `users`.`id` limit 100";
     } else {
-      // $email contains non-digits ==> search for mail addresses
-      // Be defensive here (outer join) if primary mail is not listed in email table
-      $query = "select `users`.`id` as `id`, `email`.`email` as `email`
-          from `users` left outer join `email` on (`users`.`id`=`email`.`memid`)
-          where (`email`.`email` like '$emailsearch'
-                 or `users`.`email` like '$emailsearch')
-            and `users`.`deleted`=0
-          group by `users`.`id` limit 100";
+        // $email contains non-digits ==> search for mail addresses
+        // Be defensive here (outer join) if primary mail is not listed in email table
+        $query = "select `users`.`id` as `id`, `email`.`email` as `email`
+            from `users` left outer join `email` on (`users`.`id`=`email`.`memid`)
+            where (`email`.`email` like '$emailsearch'
+                    or `users`.`email` like '$emailsearch')
+                and `users`.`deleted`=0
+            group by `users`.`id` limit 100";
     }
     // bug-975 ted+uli changes --- end
     $res = mysql_query($query);
-    if(mysql_num_rows($res) > 1) { ?>
-<table align="center" valign="middle" border="0" cellspacing="0" cellpadding="0" class="wrapper">
-  <tr>
-    <td colspan="5" class="title"><?=_("Select Specific Account Details")?></td>
-  </tr>
-  <tr>
-    <td class="DataTD"><?=_("User ID")?></td>
-    <td class="DataTD"><?=_("Email")?></td>
-  </tr>
-<?
-  while($row = mysql_fetch_assoc($res))
-  { ?>
-  <tr>
-    <td class="DataTD"><a href="account.php?id=43&amp;userid=<?=intval($row['id'])?>"><?=intval($row['id'])?></a></td>
-    <td class="DataTD"><a href="account.php?id=43&amp;userid=<?=intval($row['id'])?>"><?=sanitizeHTML($row['email'])?></a></td>
-  </tr>
-<? } if(mysql_num_rows($res) >= 100) { ?>
-  <tr>
-    <td class="DataTD" colspan="2"><?=_("Only the first 100 rows are displayed.")?></td>
-  </tr>
-<? } else { ?>
-  <tr>
-    <td class="DataTD" colspan="2"><? printf(_("%s rows displayed."), mysql_num_rows($res)); ?></td>
-  </tr>
-<? } ?>
-</table><br><br>
-<?    } elseif(mysql_num_rows($res) == 1) {
-      $row = mysql_fetch_assoc($res);
-      $_REQUEST['userid'] = $row['id'];
-    } else {
-      printf(_("No users found matching %s"), sanitizeHTML($email));
-    }
-  }
-
-  if(intval($_REQUEST['userid']) > 0)
-  {
-    $userid = intval($_REQUEST['userid']);
-    $query = "select * from `users` where `users`.`id`='$userid' and `users`.`deleted`=0";
-    $res = mysql_query($query);
-    if(mysql_num_rows($res) <= 0)
-    {
-      echo _("I'm sorry, the user you were looking for seems to have disappeared! Bad things are a foot!");
-    } else {
-      $row = mysql_fetch_assoc($res);
-      $query = "select sum(`points`) as `points` from `notary` where `to`='".intval($row['id'])."'";
-      $dres = mysql_query($query);
-      $drow = mysql_fetch_assoc($dres);
-      $alerts = mysql_fetch_assoc(mysql_query("select * from `alerts` where `memid`='".intval($row['id'])."'"));
+    if(mysql_num_rows($res) > 1) {
 ?>
-<table align="center" valign="middle" border="0" cellspacing="0" cellpadding="0" class="wrapper">
-  <tr>
-    <td colspan="5" class="title"><? printf(_("%s's Account Details"), sanitizeHTML($row['email'])); ?></td>
-  </tr>
-  <tr>
-    <td class="DataTD"><?=_("Email")?>:</td>
-    <td class="DataTD"><?=sanitizeHTML($row['email'])?></td>
-  </tr>
-  <tr>
-    <td class="DataTD"><?=_("First Name")?>:</td>
-    <td class="DataTD"><form method="post" action="account.php" onSubmit="if(!confirm('<?=_("Are you sure you want to modify this DOB and/or last name?")?>')) return false;">
-  <input type="hidden" name="csrf" value="<?=make_csrf('admchangepers')?>" />
-  <input type="text" name="fname" value="<?=sanitizeHTML($row['fname'])?>"></td>
-  </tr>
-  <tr>
-    <td class="DataTD"><?=_("Middle Name")?>:</td>
-    <td class="DataTD"><input type="text" name="mname" value="<?=sanitizeHTML($row['mname'])?>"></td>
-  </tr>
-  <tr>
-    <td class="DataTD"><?=_("Last Name")?>:</td>
-    <td class="DataTD">  <input type="hidden" name="oldid" value="43">
-  <input type="hidden" name="action" value="updatedob">
-  <input type="hidden" name="userid" value="<?=intval($userid)?>">
-  <input type="text" name="lname" value="<?=sanitizeHTML($row['lname'])?>"></td>
-  </tr>
-  <tr>
-    <td class="DataTD"><?=_("Suffix")?>:</td>
-    <td class="DataTD"><input type="text" name="suffix" value="<?=sanitizeHTML($row['suffix'])?>"></td>
-  </tr>
-  <tr>
-    <td class="DataTD"><?=_("Date of Birth")?>:</td>
-    <td class="DataTD">
-<?
-  $year = intval(substr($row['dob'], 0, 4));
-  $month = intval(substr($row['dob'], 5, 2));
-  $day = intval(substr($row['dob'], 8, 2));
-  ?><nobr><select name="day">
+        <table align="center" valign="middle" border="0" cellspacing="0" cellpadding="0" class="wrapper">
+            <tr>
+                <td colspan="5" class="title"><?=_("Select Specific Account Details")?></td>
+            </tr>
+            <tr>
+                <td class="DataTD"><?=_("User ID")?></td>
+                <td class="DataTD"><?=_("Email")?></td>
+            </tr>
 <?
-        for($i = 1; $i <= 31; $i++)
+        while($row = mysql_fetch_assoc($res))
         {
-                echo "<option";
-                if($day == $i)
-                    echo " selected='selected'";
-                echo ">$i</option>";
-        }
 ?>
-    </select>
-    <select name="month">
+            <tr>
+                <td class="DataTD"><a href="account.php?id=43&amp;userid=<?=intval($row['id'])?>"><?=intval($row['id'])?></a></td>
+                <td class="DataTD"><a href="account.php?id=43&amp;userid=<?=intval($row['id'])?>"><?=sanitizeHTML($row['email'])?></a></td>
+            </tr>
 <?
-        for($i = 1; $i <= 12; $i++)
-        {
-                echo "<option value='$i'";
-                if($month == $i)
-                        echo " selected='selected'";
-                echo ">".ucwords(strftime("%B", mktime(0,0,0,$i,1,date("Y"))))."</option>";
         }
+
+        if(mysql_num_rows($res) >= 100) {
 ?>
-    </select>
-    <input type="text" name="year" value="<?=$year?>" size="4">
-    <input type="submit" value="Go"></form></nobr></td>
-  </tr>
-  <tr>
-    <td class="DataTD"><?=_("CCA accepted")?>:</td>
-    <td class="DataTD"><a href="account.php?id=57&amp;userid=<?=intval($row['id'])?>"><?=intval(get_user_agreement_status($row['id'])) ? _("Yes") : _("No") ?></a></td>
-  </tr>
-  <tr>
-    <td class="DataTD"><?=_("Trainings")?>:</td>
-    <td class="DataTD"><a href="account.php?id=55&amp;userid=<?=intval($row['id'])?>">show</a></td>
-  </tr>
-  <tr>
-    <td class="DataTD"><?=_("Is Assurer")?>:</td>
-    <td class="DataTD"><a href="account.php?id=43&amp;assurer=<?=intval($row['id'])?>&amp;csrf=<?=make_csrf('admsetassuret')?>"><?=$row['assurer']?></a></td>
-  </tr>
-  <tr>
-    <td class="DataTD"><?=_("Blocked Assurer")?>:</td>
-    <td class="DataTD"><a href="account.php?id=43&amp;assurer_blocked=<?=intval($row['id'])?>"><?=$row['assurer_blocked']?></a></td>
-  </tr>
-  <tr>
-    <td class="DataTD"><?=_("Account Locking")?>:</td>
-    <td class="DataTD"><a href="account.php?id=43&amp;locked=<?=$row['id']?>&amp;csrf=<?=make_csrf('admactlock')?>"><?=$row['locked']?></a></td>
-  </tr>
-  <tr>
-    <td class="DataTD"><?=_("Code Signing")?>:</td>
-    <td class="DataTD"><a href="account.php?id=43&amp;codesign=<?=$row['id']?>&amp;csrf=<?=make_csrf('admcodesign')?>"><?=$row['codesign']?></a></td>
-  </tr>
-  <tr>
-    <td class="DataTD"><?=_("Org Assurer")?>:</td>
-    <td class="DataTD"><a href="account.php?id=43&amp;orgadmin=<?=$row['id']?>&amp;csrf=<?=make_csrf('admorgadmin')?>"><?=$row['orgadmin']?></a></td>
-  </tr>
-  <tr>
-    <td class="DataTD"><?=_("TTP Admin")?>:</td>
-    <td class="DataTD"><a href="account.php?id=43&amp;ttpadmin=<?=$row['id']?>&amp;csrf=<?=make_csrf('admttpadmin')?>"><?=$row['ttpadmin']?></a></td>
-  </tr>
-  <tr>
-    <td class="DataTD"><?=_("Location Admin")?>:</td>
-    <td class="DataTD"><a href="account.php?id=43&amp;locadmin=<?=$row['id']?>"><?=$row['locadmin']?></a></td>
-  </tr>
-  <tr>
-    <td class="DataTD"><?=_("Admin")?>:</td>
-    <td class="DataTD"><a href="account.php?id=43&amp;admin=<?=$row['id']?>&amp;csrf=<?=make_csrf('admsetadmin')?>"><?=$row['admin']?></a></td>
-  </tr>
-  <tr>
-    <td class="DataTD"><?=_("Ad Admin")?>:</td>
-    <td class="DataTD"><a href="account.php?id=43&amp;adadmin=<?=$row['id']?>"><?=$row['adadmin']?></a> (0 = none, 1 = submit, 2 = approve)</td>
-  </tr>
-  <tr>
-    <td class="DataTD"><?=_("Tverify Account")?>:</td>
-    <td class="DataTD"><a href="account.php?id=43&amp;tverify=<?=$row['id']?>"><?=$row['tverify']?></a></td>
-  </tr>
-  <tr>
-    <td class="DataTD"><?=_("General Announcements")?>:</td>
-    <td class="DataTD"><a href="account.php?id=43&amp;general=<?=$row['id']?>"><?=$alerts['general']?></a></td>
-  </tr>
-  <tr>
-    <td class="DataTD"><?=_("Country Announcements")?>:</td>
-    <td class="DataTD"><a href="account.php?id=43&amp;country=<?=$row['id']?>"><?=$alerts['country']?></a></td>
-  </tr>
-  <tr>
-    <td class="DataTD"><?=_("Regional Announcements")?>:</td>
-    <td class="DataTD"><a href="account.php?id=43&amp;regional=<?=$row['id']?>"><?=$alerts['regional']?></a></td>
-  </tr>
-  <tr>
-    <td class="DataTD"><?=_("Within 200km Announcements")?>:</td>
-    <td class="DataTD"><a href="account.php?id=43&amp;radius=<?=$row['id']?>"><?=$alerts['radius']?></a></td>
-  </tr>
-  <tr>
-    <td class="DataTD"><?=_("Change Password")?>:</td>
-    <td class="DataTD"><a href="account.php?id=44&amp;userid=<?=$row['id']?>"><?=_("Change Password")?></a></td>
-  </tr>
-  <tr>
-    <td class="DataTD"><?=_("Delete Account")?>:</td>
-    <td class="DataTD"><a href="account.php?id=50&amp;userid=<?=$row['id']?>&amp;csrf=<?=make_csrf('admdelaccount')?>"><?=_("Delete Account")?></a></td>
-  </tr>
+            <tr>
+                <td class="DataTD" colspan="2"><?=_("Only the first 100 rows are displayed.")?></td>
+            </tr>
 <?
-  // This is intensionally a $_GET for audit purposes. DO NOT CHANGE!!!
-  if(array_key_exists('showlostpw',$_GET) && $_GET['showlostpw'] == "yes") {
+        } else {
 ?>
-  <tr>
-    <td class="DataTD"><?=_("Lost Password")?> - Q1:</td>
-    <td class="DataTD"><?=sanitizeHTML($row['Q1'])?></td>
-  </tr>
-  <tr>
-    <td class="DataTD"><?=_("Lost Password")?> - A1:</td>
-    <td class="DataTD"><?=sanitizeHTML($row['A1'])?></td>
-  </tr>
-  <tr>
-    <td class="DataTD"><?=_("Lost Password")?> - Q2:</td>
-    <td class="DataTD"><?=sanitizeHTML($row['Q2'])?></td>
-  </tr>
-  <tr>
-    <td class="DataTD"><?=_("Lost Password")?> - A2:</td>
-    <td class="DataTD"><?=sanitizeHTML($row['A2'])?></td>
-  </tr>
-  <tr>
-    <td class="DataTD"><?=_("Lost Password")?> - Q3:</td>
-    <td class="DataTD"><?=sanitizeHTML($row['Q3'])?></td>
-  </tr>
-  <tr>
-    <td class="DataTD"><?=_("Lost Password")?> - A3:</td>
-    <td class="DataTD"><?=sanitizeHTML($row['A3'])?></td>
-  </tr>
-  <tr>
-    <td class="DataTD"><?=_("Lost Password")?> - Q4:</td>
-    <td class="DataTD"><?=sanitizeHTML($row['Q4'])?></td>
-  </tr>
-  <tr>
-    <td class="DataTD"><?=_("Lost Password")?> - A4:</td>
-    <td class="DataTD"><?=sanitizeHTML($row['A4'])?></td>
-  </tr>
-  <tr>
-    <td class="DataTD"><?=_("Lost Password")?> - Q5:</td>
-    <td class="DataTD"><?=sanitizeHTML($row['Q5'])?></td>
-  </tr>
-  <tr>
-    <td class="DataTD"><?=_("Lost Password")?> - A5:</td>
-    <td class="DataTD"><?=sanitizeHTML($row['A5'])?></td>
-  </tr>
-<? } else { ?>
-  <tr>
-    <td class="DataTD" colspan="2"><a href="account.php?id=43&amp;userid=<?=$row['id']?>&amp;showlostpw=yes"><?=_("Show Lost Password Details")?></a></td>
-  </tr>
-<? } ?>
-  <tr>
-    <td class="DataTD"><?=_("Assurance Points")?>:</td>
-    <td class="DataTD"><?=intval($drow['points'])?></td>
-  </tr>
-</table>
-<br><?
-  $query = "select * from `email` where `memid`='".intval($row['id'])."' and `deleted`=0 and `hash`=''
-      and `email`!='".mysql_escape_string($row['email'])."'";
-  $dres = mysql_query($query);
-  if(mysql_num_rows($dres) > 0) { ?>
-<table align="center" valign="middle" border="0" cellspacing="0" cellpadding="0" class="wrapper">
-  <tr>
-    <td colspan="5" class="title"><?=_("Alternate Verified Email Addresses")?></td>
-  </tr><?
-  $rc = mysql_num_rows($dres);
-  while($drow = mysql_fetch_assoc($dres))
-  { ?>
-  <tr>
-    <td class="DataTD"><?=_("Secondary Emails")?>:</td>
-    <td class="DataTD"><?=sanitizeHTML($drow['email'])?></td>
-  </tr>
-<? } ?>
-</table>
-<br><? } ?>
+            <tr>
+                <td class="DataTD" colspan="2"><? printf(_("%s rows displayed."), mysql_num_rows($res)); ?></td>
+            </tr>
 <?
-  $query = "select * from `domains` where `memid`='".intval($row['id'])."' and `deleted`=0 and `hash`=''";
-  $dres = mysql_query($query);
-  if(mysql_num_rows($dres) > 0) { ?>
-<table align="center" valign="middle" border="0" cellspacing="0" cellpadding="0" class="wrapper">
-  <tr>
-    <td colspan="5" class="title"><?=_("Verified Domains")?></td>
-  </tr><?
-  $rc = mysql_num_rows($dres);
-  while($drow = mysql_fetch_assoc($dres))
-  { ?>
-  <tr>
-    <td class="DataTD"><?=_("Domain")?>:</td>
-    <td class="DataTD"><?=sanitizeHTML($drow['domain'])?></td>
-  </tr>
-<? } ?>
-</table>
-<br>
-<? } ?>
-<? //  Begin - Debug infos ?>
-<table align="center" valign="middle" border="0" cellspacing="0" cellpadding="0" class="wrapper">
-  <tr>
-    <td colspan="2" class="title"><?=_("Account State")?></td>
-  </tr>
-
-<?
-  // ---  bug-975 begin ---
-  //  potential db inconsistency like in a20110804.1
-  //    Admin console -> don't list user account
-  //    User login -> impossible
-  //    Assurer, assure someone -> user displayed
-  /*  regular user account search with regular settings
-
-    --- Admin Console find user query
-    $query = "select `users`.`id` as `id`, `email`.`email` as `email` from `users`,`email`
-        where `users`.`id`=`email`.`memid` and
-        (`email`.`email` like '$emailsearch' or `email`.`id`='$email' or `users`.`id`='$email') and
-        `email`.`hash`='' and `email`.`deleted`=0 and `users`.`deleted`=0
-        group by `users`.`id` limit 100";
-     => requirements
-       1.  email.hash = ''
-       2.  email.deleted = 0
-       3.  users.deleted = 0
-       4.  email.email = primary-email       (???) or'd
-      not covered by admin console find user routine, but may block users login
-       5.  users.verified = 0|1
-      further "special settings"
-       6.  users.locked  (setting displayed in display form)
-       7.  users.assurer_blocked   (setting displayed in display form)
-
-    --- User login user query
-    select * from `users` where `email`='$email' and (`password`=old_password('$pword') or `password`=sha1('$pword') or
-                                               `password`=password('$pword')) and `verified`=1 and `deleted`=0 and `locked`=0
-               => requirements
-       1. users.verified = 1
-       2. users.deleted = 0
-       3. users.locked = 0
-       4. users.email = primary-email
-
-    --- Assurer, assure someone find user query
-    select * from `users` where `email`='".mysql_escape_string(stripslashes($_POST['email']))."'
-           and `deleted`=0
-               => requirements
-       1. users.deleted = 0
-       2. users.email = primary-email
-                                     Admin      User        Assurer
-      bit                            Console    Login       assure someone
-
-       1.  email.hash = ''            Yes        No           No
-       2.  email.deleted = 0          Yes        No           No
-       3.  users.deleted = 0          Yes        Yes          Yes
-       4.  users.verified = 1         No         Yes          No
-       5.  users.locked = 0           No         Yes          No
-       6.  users.email = prim-email   No         Yes          Yes
-       7.  email.email = prim-email   Yes        No           No
-
-    full usable account needs all 7 requirements fulfilled
-    so if one setting isn't set/cleared there is an inconsistency either way
-    if eg email.email is not avail, admin console cannot open user info
-    but user can login and assurer can display user info
-    if user verified is not set to 1, admin console displays user record
-    but user cannot login, but assurer can search for the user and the data displays
-
-    consistency check:
-    1. search primary-email in users.email
-    2. search primary-email in email.email
-    3. userid = email.memid
-    4. check settings from table 1. - 5.
-
-   */
-
-  $inconsistency = 0;
-  $inconsistencydisp = "";
-  $inccause = "";
-   // current userid  intval($row['id'])
-  $query = "select `email` as `uemail`, `deleted` as `udeleted`, `verified`, `locked`
-      from `users` where `id`='".intval($row['id'])."' ";
-  $dres = mysql_query($query);
-  $drow = mysql_fetch_assoc($dres);
-  $uemail    = $drow['uemail'];
-  $udeleted  = $drow['udeleted'];
-  $uverified = $drow['verified'];
-  $ulocked   = $drow['locked'];
-
-  $query = "select `hash`, `email` as `eemail` from `email`
-      where `memid`='".intval($row['id'])."' and
-      `email` ='".$uemail."' and
-      `deleted` = 0";
-  $dres = mysql_query($query);
-  if ($drow = mysql_fetch_assoc($dres)) {
-    $drow['edeleted'] = 0;
-  } else {
-       // try if there are deleted entries
-    $query = "select `hash`, `deleted` as `edeleted`, `email` as `eemail` from `email`
-        where `memid`='".intval($row['id'])."' and
-        `email` ='".$uemail."'";
-    $dres = mysql_query($query);
-    $drow = mysql_fetch_assoc($dres);
-  }
-
-  if ($drow) {
-    $eemail    = $drow['eemail'];
-    $edeleted  = $drow['edeleted'];
-    $ehash     = $drow['hash'];
-    if ($udeleted!=0) {
-      $inconsistency += 1;
-      $inccause .= (empty($inccause)?"":"<br>")._("Users record set to deleted");
-    }
-    if ($uverified!=1) {
-      $inconsistency += 2;
-      $inccause .= (empty($inccause)?"":"<br>")._("Users record verified not set");
-    }
-    if ($ulocked!=0) {
-      $inconsistency += 4;
-      $inccause .= (empty($inccause)?"":"<br>")._("Users record locked set");
-    }
-    if ($edeleted!=0) {
-      $inconsistency += 8;
-      $inccause .= (empty($inccause)?"":"<br>")._("Email record set deleted");
-    }
-    if ($ehash!='') {
-      $inconsistency += 16;
-      $inccause .= (empty($inccause)?"":"<br>")._("Email record hash not unset");
-    }
-  } else {
-    $inconsistency = 32;
-    $inccause = _("Prim. email, Email record doesn't exist");
-  }
-  if ($inconsistency>0) {
-     // $inconsistencydisp = _("Yes");
-?>
-  <tr>
-    <td class="DataTD"><?=_("Account inconsistency")?>:</td>
-    <td class="DataTD"><?=$inccause?><br>code: <?=$inconsistency?></td>
-  </tr>
-  <tr>
-    <td colspan="2" class="DataTD" style="max-width: 75ex">
-      <?=_("Account inconsistency can cause problems in daily account ".
-      "operations and needs to be fixed manually through arbitration/critical ".
-      "team.")?>
-     </td>
-  </tr>
-<? }
-
-  // ---  bug-975 end ---
+        }
 ?>
-</table>
-<br>
+        </table><br><br>
 <?
- //  End - Debug infos
-?>
+    } elseif(mysql_num_rows($res) == 1) {
+        $row = mysql_fetch_assoc($res);
+        $_REQUEST['userid'] = $row['id'];
+    } else {
+        printf(_("No users found matching %s"), sanitizeHTML($email));
+    }
+}
+
+// display user information for given user id
+if(intval($_REQUEST['userid']) > 0) {
+    $userid = intval($_REQUEST['userid']);
+    $res =get_user_data($userid);
+    if(mysql_num_rows($res) <= 0) {
+        echo _("I'm sorry, the user you were looking for seems to have disappeared! Bad things are afoot!");
+    } else {
+        $row = mysql_fetch_assoc($res);
+        $query = "select sum(`points`) as `points` from `notary` where `to`='".intval($row['id'])."' and `deleted` = 0";
+        $dres = mysql_query($query);
+        $drow = mysql_fetch_assoc($dres);
+        $alerts =get_alerts(intval($row['id']));
 
-<table align="center" valign="middle" border="0" cellspacing="0" cellpadding="0" class="wrapper">
-       <tr>
-               <td colspan="6" class="title"><?=_("Certificates")?></td>
-       </tr>
-
-       <tr>
-               <td class="DataTD"><?=_("Cert Type")?>:</td>
-               <td class="DataTD"><?=_("Total")?></td>
-               <td class="DataTD"><?=_("Valid")?></td>
-               <td class="DataTD"><?=_("Expired")?></td>
-               <td class="DataTD"><?=_("Revoked")?></td>
-               <td class="DataTD"><?=_("Latest Expire")?></td>
-       </tr>
-<!-- server certificates -->
-       <tr>
-               <td class="DataTD"><?=_("Server")?>:</td>
-       <?
-       $query = "select COUNT(*) as `total`,
-                        MAX(`domaincerts`.`expire`) as `maxexpire`
-                 from `domains` inner join `domaincerts`
-                      on `domains`.`id` = `domaincerts`.`domid`
-                 where `domains`.`memid` = '".intval($row['id'])."' ";
-       $dres = mysql_query($query);
-       $drow = mysql_fetch_assoc($dres);
-       $total = $drow['total'];
-
-       $maxexpire = "0000-00-00 00:00:00";
-       if ($drow['maxexpire']) {
-               $maxexpire = $drow['maxexpire'];
-       }
-
-       if($total > 0) {
-               $query = "select COUNT(*) as `valid`
-                         from `domains` inner join `domaincerts`
-                              on `domains`.`id` = `domaincerts`.`domid`
-                         where `domains`.`memid` = '".intval($row['id'])."'
-                               and `revoked` = '0000-00-00 00:00:00'
-                               and `expire` > NOW()";
-               $dres = mysql_query($query);
-               $drow = mysql_fetch_assoc($dres);
-               $valid = $drow['valid'];
-
-               $query = "select COUNT(*) as `expired`
-                         from `domains` inner join `domaincerts`
-                              on `domains`.`id` = `domaincerts`.`domid`
-                         where `domains`.`memid` = '".intval($row['id'])."'
-                               and `expire` <= NOW()";
-               $dres = mysql_query($query);
-               $drow = mysql_fetch_assoc($dres);
-               $expired = $drow['expired'];
-
-               $query = "select COUNT(*) as `revoked`
-                         from `domains` inner join `domaincerts`
-                              on `domains`.`id` = `domaincerts`.`domid`
-                         where `domains`.`memid` = '".intval($row['id'])."'
-                               and `revoked` != '0000-00-00 00:00:00'";
-               $dres = mysql_query($query);
-               $drow = mysql_fetch_assoc($dres);
-               $revoked = $drow['revoked'];
-               ?>
-               <td class="DataTD"><?=intval($total)?></td>
-               <td class="DataTD"><?=intval($valid)?></td>
-               <td class="DataTD"><?=intval($expired)?></td>
-               <td class="DataTD"><?=intval($revoked)?></td>
-               <td class="DataTD"><?=($maxexpire != "0000-00-00 00:00:00")?
-                       substr($maxexpire, 0, 10) : _("Pending")?></td>
-               <?
-       } else { // $total > 0
-               ?>
-               <td colspan="5" class="DataTD"><?=_("None")?></td>
-               <?
-       } ?>
-       </tr>
-<!-- client certificates -->
-       <tr>
-               <td class="DataTD"><?=_("Client")?>:</td>
-       <?
-       $query = "select COUNT(*) as `total`, MAX(`expire`) as `maxexpire`
-                 from `emailcerts`
-                 where `memid` = '".intval($row['id'])."' ";
-       $dres = mysql_query($query);
-       $drow = mysql_fetch_assoc($dres);
-       $total = $drow['total'];
-
-       $maxexpire = "0000-00-00 00:00:00";
-       if ($drow['maxexpire']) {
-               $maxexpire = $drow['maxexpire'];
-       }
-
-       if($total > 0) {
-               $query = "select COUNT(*) as `valid`
-                         from `emailcerts`
-                         where `memid` = '".intval($row['id'])."'
-                               and `revoked` = '0000-00-00 00:00:00'
-                               and `expire` > NOW()";
-               $dres = mysql_query($query);
-               $drow = mysql_fetch_assoc($dres);
-               $valid = $drow['valid'];
-
-               $query = "select COUNT(*) as `expired`
-                         from `emailcerts`
-                         where `memid` = '".intval($row['id'])."'
-                               and `expire` <= NOW()";
-               $dres = mysql_query($query);
-               $drow = mysql_fetch_assoc($dres);
-               $expired = $drow['expired'];
-
-               $query = "select COUNT(*) as `revoked`
-                         from `emailcerts`
-                         where `memid` = '".intval($row['id'])."'
-                               and `revoked` != '0000-00-00 00:00:00'";
-               $dres = mysql_query($query);
-               $drow = mysql_fetch_assoc($dres);
-               $revoked = $drow['revoked'];
-               ?>
-               <td class="DataTD"><?=intval($total)?></td>
-               <td class="DataTD"><?=intval($valid)?></td>
-               <td class="DataTD"><?=intval($expired)?></td>
-               <td class="DataTD"><?=intval($revoked)?></td>
-               <td class="DataTD"><?=($maxexpire != "0000-00-00 00:00:00")?
-                       substr($maxexpire, 0, 10) : _("Pending")?></td>
-               <?
-       } else { // $total > 0
-               ?>
-               <td colspan="5" class="DataTD"><?=_("None")?></td>
-               <?
-       } ?>
-       </tr>
-<!-- gpg certificates -->
-       <tr>
-               <td class="DataTD"><?=_("GPG")?>:</td>
-       <?
-       $query = "select COUNT(*) as `total`, MAX(`expire`) as `maxexpire`
-                 from `gpg`
-                 where `memid` = '".intval($row['id'])."' ";
-       $dres = mysql_query($query);
-       $drow = mysql_fetch_assoc($dres);
-       $total = $drow['total'];
-
-       $maxexpire = "0000-00-00 00:00:00";
-       if ($drow['maxexpire']) {
-               $maxexpire = $drow['maxexpire'];
-       }
-
-       if($total > 0) {
-               $query = "select COUNT(*) as `valid`
-                         from `gpg`
-                         where `memid` = '".intval($row['id'])."'
-                               and `expire` > NOW()";
-               $dres = mysql_query($query);
-               $drow = mysql_fetch_assoc($dres);
-               $valid = $drow['valid'];
-
-               $query = "select COUNT(*) as `expired`
-                       from `gpg`
-                       where `memid` = '".intval($row['id'])."'
-                       and `expire` <= NOW()";
-               $dres = mysql_query($query);
-               $drow = mysql_fetch_assoc($dres);
-               $expired = $drow['expired'];
-
-               ?>
-               <td class="DataTD"><?=intval($total)?></td>
-               <td class="DataTD"><?=intval($valid)?></td>
-               <td class="DataTD"><?=intval($expired)?></td>
-               <td class="DataTD"></td>
-               <td class="DataTD"><?=($maxexpire != "0000-00-00 00:00:00")?
-                       substr($maxexpire, 0, 10) : _("Pending")?></td>
-               <?
-       } else { // $total > 0
-               ?>
-               <td colspan="5" class="DataTD"><?=_("None")?></td>
-               <?
-       } ?>
-       </tr>
-<!-- org server certificates -->
-       <tr>
-               <td class="DataTD"><a href="account.php?id=58&amp;userid=<?=intval($row['id'])?>"><?=_("Org Server")?></a>:</td>
-       <?
-       $query = "select COUNT(*) as `total`,
-                        MAX(`orgcerts`.`expire`) as `maxexpire`
-                 from `orgdomaincerts` as `orgcerts` inner join `org`
-                          on `orgcerts`.`orgid` = `org`.`orgid`
-                 where `org`.`memid` = '".intval($row['id'])."' ";
-       $dres = mysql_query($query);
-       $drow = mysql_fetch_assoc($dres);
-       $total = $drow['total'];
-
-       $maxexpire = "0000-00-00 00:00:00";
-       if ($drow['maxexpire']) {
-               $maxexpire = $drow['maxexpire'];
-       }
-
-       if($total > 0) {
-               $query = "select COUNT(*) as `valid`
-                         from `orgdomaincerts` as `orgcerts` inner join `org`
-                                  on `orgcerts`.`orgid` = `org`.`orgid`
-                         where `org`.`memid` = '".intval($row['id'])."'
-                               and `orgcerts`.`revoked` = '0000-00-00 00:00:00'
-                               and `orgcerts`.`expire` > NOW()";
-               $dres = mysql_query($query);
-               $drow = mysql_fetch_assoc($dres);
-               $valid = $drow['valid'];
-
-               $query = "select COUNT(*) as `expired`
-                         from `orgdomaincerts` as `orgcerts` inner join `org`
-                                  on `orgcerts`.`orgid` = `org`.`orgid`
-                         where `org`.`memid` = '".intval($row['id'])."'
-                               and `orgcerts`.`expire` <= NOW()";
-               $dres = mysql_query($query);
-               $drow = mysql_fetch_assoc($dres);
-               $expired = $drow['expired'];
-
-               $query = "select COUNT(*) as `revoked`
-                         from `orgdomaincerts` as `orgcerts` inner join `org`
-                                  on `orgcerts`.`orgid` = `org`.`orgid`
-                         where `org`.`memid` = '".intval($row['id'])."'
-                               and `orgcerts`.`revoked` != '0000-00-00 00:00:00'";
-               $dres = mysql_query($query);
-               $drow = mysql_fetch_assoc($dres);
-               $revoked = $drow['revoked'];
-               ?>
-               <td class="DataTD"><?=intval($total)?></td>
-               <td class="DataTD"><?=intval($valid)?></td>
-               <td class="DataTD"><?=intval($expired)?></td>
-               <td class="DataTD"><?=intval($revoked)?></td>
-               <td class="DataTD"><?=($maxexpire != "0000-00-00 00:00:00")?
-                       substr($maxexpire, 0, 10) : _("Pending")?></td>
-               <?
-       } else { // $total > 0
-               ?>
-               <td colspan="5" class="DataTD"><?=_("None")?></td>
-               <?
-       } ?>
-       </tr>
-<!-- org client certificates -->
-       <tr>
-               <td class="DataTD"><?=_("Org Client")?>:</td>
-       <?
-       $query = "select COUNT(*) as `total`,
-                        MAX(`orgcerts`.`expire`) as `maxexpire`
-                 from `orgemailcerts` as `orgcerts` inner join `org`
-                          on `orgcerts`.`orgid` = `org`.`orgid`
-                 where `org`.`memid` = '".intval($row['id'])."' ";
-       $dres = mysql_query($query);
-       $drow = mysql_fetch_assoc($dres);
-       $total = $drow['total'];
-
-       $maxexpire = "0000-00-00 00:00:00";
-       if ($drow['maxexpire']) {
-               $maxexpire = $drow['maxexpire'];
-       }
-
-       if($total > 0) {
-               $query = "select COUNT(*) as `valid`
-                         from `orgemailcerts` as `orgcerts` inner join `org`
-                                  on `orgcerts`.`orgid` = `org`.`orgid`
-                         where `org`.`memid` = '".intval($row['id'])."'
-                               and `orgcerts`.`revoked` = '0000-00-00 00:00:00'
-                               and `orgcerts`.`expire` > NOW()";
-               $dres = mysql_query($query);
-               $drow = mysql_fetch_assoc($dres);
-               $valid = $drow['valid'];
-
-               $query = "select COUNT(*) as `expired`
-                         from `orgemailcerts` as `orgcerts` inner join `org`
-                                  on `orgcerts`.`orgid` = `org`.`orgid`
-                         where `org`.`memid` = '".intval($row['id'])."'
-                               and `orgcerts`.`expire` <= NOW()";
-               $dres = mysql_query($query);
-               $drow = mysql_fetch_assoc($dres);
-               $expired = $drow['expired'];
-
-               $query = "select COUNT(*) as `revoked`
-                         from `orgemailcerts` as `orgcerts` inner join `org`
-                                  on `orgcerts`.`orgid` = `org`.`orgid`
-                         where `org`.`memid` = '".intval($row['id'])."'
-                               and `orgcerts`.`revoked` != '0000-00-00 00:00:00'";
-               $dres = mysql_query($query);
-               $drow = mysql_fetch_assoc($dres);
-               $revoked = $drow['revoked'];
-               ?>
-               <td class="DataTD"><?=intval($total)?></td>
-               <td class="DataTD"><?=intval($valid)?></td>
-               <td class="DataTD"><?=intval($expired)?></td>
-               <td class="DataTD"><?=intval($revoked)?></td>
-               <td class="DataTD"><?=($maxexpire != "0000-00-00 00:00:00")?
-                       substr($maxexpire, 0, 10) : _("Pending")?></td>
-               <?
-       } else { // $total > 0
-               ?>
-               <td colspan="5" class="DataTD"><?=_("None")?></td>
-               <?
-       } ?>
-       </tr>
-       <tr>
-               <td colspan="6" class="title">
-                       <form method="post" action="account.php" onSubmit="if(!confirm('<?=_("Are you sure you want to revoke all private certificates?")?>')) return false;">
-                               <input type="hidden" name="action" value="revokecert">
-                               <input type="hidden" name="oldid" value="43">
-                               <input type="hidden" name="userid" value="<?=intval($userid)?>">
-                               <input type="submit" value="<?=_('revoke certificates')?>">
-                       </form>
-               </td>
-       </tr>
-</table>
-<br>
-
-
-<a href="account.php?id=43&amp;userid=<?=$row['id']?>&amp;shownotary=assuredto"><?=_("Show Assurances the user got")?></a>
- (<a href="account.php?id=43&amp;userid=<?=$row['id']?>&amp;shownotary=assuredto15"><?=_("New calculation")?></a>)
-<br />
-<a href="account.php?id=43&amp;userid=<?=$row['id']?>&amp;shownotary=assuredby"><?=_("Show Assurances the user gave")?></a>
- (<a href="account.php?id=43&amp;userid=<?=$row['id']?>&amp;shownotary=assuredby15"><?=_("New calculation")?></a>)
-<br />
+//display account data
 
-<?
-//  if(array_key_exists('assuredto',$_GET) && $_GET['assuredto'] == "yes") {
+//deletes an assurance
+        if(array_key_exists('assurance',$_REQUEST) && $_REQUEST['assurance'] > 0 && $ticketvalidation == true)
+        {
+            if (!write_se_log($userid, $_SESSION['profile']['id'], 'SE assurance revoke', $ticketno)) {
+                $ticketmsg=_("Writing to the admin log failed. Can't continue.");
+            } else {
+                $assurance = intval($_REQUEST['assurance']);
+                $trow = 0;
+                $res = mysql_query("select `to` from `notary` where `id`='".intval($assurance)."' and `deleted` = 0");
+                if ($res) {
+                    $trow = mysql_fetch_assoc($res);
+                    if ($trow) {
+                        mysql_query("update `notary` set `deleted`=NOW() where `id`='".intval($assurance)."'");
+                        fix_assurer_flag($trow['to']);
+                    }
+                }
+            }
+        } elseif(array_key_exists('assurance',$_REQUEST) && $_REQUEST['assurance'] > 0 && $ticketvalidation == FALSE) {
+            $ticketmsg=_('No assurance revoked. Ticket number is missing!');
+        }
 
-function showassuredto()
-{
-?>
-<table align="center" valign="middle" border="0" cellspacing="0" cellpadding="0" class="wrapper">
-  <tr>
-    <td colspan="8" class="title"><?=_("Assurance Points")?></td>
-  </tr>
-  <tr>
-    <td class="DataTD"><b><?=_("ID")?></b></td>
-    <td class="DataTD"><b><?=_("Date")?></b></td>
-    <td class="DataTD"><b><?=_("Who")?></b></td>
-    <td class="DataTD"><b><?=_("Email")?></b></td>
-    <td class="DataTD"><b><?=_("Points")?></b></td>
-    <td class="DataTD"><b><?=_("Location")?></b></td>
-    <td class="DataTD"><b><?=_("Method")?></b></td>
-    <td class="DataTD"><b><?=_("Revoke")?></b></td>
-  </tr>
-<?
-  $query = "select * from `notary` where `to`='".intval($_GET['userid'])."'";
-  $dres = mysql_query($query);
-  $points = 0;
-  while($drow = mysql_fetch_assoc($dres))
-  {
-    $fromuser = mysql_fetch_assoc(mysql_query("select * from `users` where `id`='".intval($drow['from'])."'"));
-    $points += $drow['points'];
+//Ticket number
 ?>
-  <tr>
-    <td class="DataTD"><?=$drow['id']?></td>
-    <td class="DataTD"><?=sanitizeHTML($drow['date'])?></td>
-    <td class="Data