Alexander Nicolaysen Sørnes : voteInspector: Make it possible to delete user accounts

Alexander Nicolaysen Sørnes asornes at winehq.org
Wed Jul 22 14:42:43 CDT 2009


Module: appdb
Branch: master
Commit: 5062357ff96f6622a8335ec7ce658bee4cc65c80
URL:    http://source.winehq.org/git/appdb.git/?a=commit;h=5062357ff96f6622a8335ec7ce658bee4cc65c80

Author: Alexander Nicolaysen Sørnes <alex at thehandofagony.com>
Date:   Wed Jul 22 21:42:14 2009 +0200

voteInspector: Make it possible to delete user accounts

---

 include/vote.php |   73 +++++++++++++++++++++++++++++++++++++++++++++++++----
 1 files changed, 67 insertions(+), 6 deletions(-)

diff --git a/include/vote.php b/include/vote.php
index 4f486b6..bc293bb 100644
--- a/include/vote.php
+++ b/include/vote.php
@@ -233,11 +233,14 @@ class voteManager
 class voteInspector
 {
     private $iVersionId;
+    private $aDeleteVoters;
 
     function voteInspector($iVersionId = null)
     {
         if(is_numeric($iVersionId))
             $this->iVersionId = $iVersionId;
+
+        $this->aDeleteVoters = array();
     }
 
     public function objectGetId()
@@ -255,16 +258,37 @@ class voteInspector
         return $_SESSION['current']->hasPriv('admin');
     }
 
+    public function objectGetSubmitterId()
+    {
+        return -1;
+    }
+
+    public function getVotes()
+    {
+        return query_parameters("SELECT userId, COUNT(userId) as count FROM appVotes WHERE
+                                 versionId = '?'
+                                 GROUP BY userId", $this->iVersionId);
+    }
+
+    public function getVoteCount()
+    {
+        return vote_count_version_total($this->iVersionId);
+    }
+
+    public function getVoterCount()
+    {
+        return mysql_num_rows($this->getVotes());
+    }
+
     public function outputEditor()
     {
         $oVersion = new version($this->iVersionId);
 
-        echo 'Inspecting votes for ' . version::fullNameLink($this->iVersionId);
-        echo '<br /><br />';
+        echo 'Inspecting votes for ' . version::fullNameLink($this->iVersionId).'<br />';
+        echo 'Total votes: '.$this->getVoteCount().'<br />';
+        echo 'To delete bogus user accounts, select them and press the Delete button below.<br /><br />';
 
-        $hResult = query_parameters("SELECT userId, COUNT(userId) as count FROM appVotes WHERE
-                                     versionId = '?'
-                                     GROUP BY userId", $this->iVersionId);
+        $hResult = $this->getVotes();
 
         if(!$hResult)
         {
@@ -283,6 +307,7 @@ class voteInspector
 
         $oTableRow = new TableRow();
         $oTableRow->setClass('color4');
+        $oTableRow->AddTextCell('Delete account');
         $oTableRow->AddTextCell('User');
         $oTableRow->AddTextCell('ID');
         $oTableRow->AddTextCell('Created');
@@ -297,6 +322,13 @@ class voteInspector
             $oVoter = new user($oRow->userId);
             $oTableRow = new TableRow();
             $oTableRow->setClass(($i % 2) ? 'color0' : 'color1');
+
+            if($oVoter->hasPriv('admin'))
+                $shDelete = '';
+            else
+                $shDelete = "<input type=\"checkbox\" name=\"iDelSlot$i\" value=\"{$oVoter->iUserId}\" />";
+
+            $oTableRow->AddTextCell($shDelete);
             $oTableRow->AddTextCell($oVoter->objectMakeLink());
             $oTableRow->AddTextCell($oVoter->iUserId);
             $oTableRow->AddTextCell($oVoter->sDateCreated);
@@ -342,7 +374,14 @@ class voteInspector
 
     public function getOutputEditorValues($aValues)
     {
-    
+        $iVoters = $this->getVoterCount();
+        $this->aDeleteVoters = array();
+
+        for($i = 0; $i < $iVoters; $i++)
+        {
+            if(($iVoterId = getInput("iDelSlot$i", $aValues)))
+                $this->aDeleteVoters[] = new user($iVoterId);
+        }
     }
 
     public function create()
@@ -354,6 +393,28 @@ class voteInspector
     {
         return true;
     }
+
+    public function objectGetMail($sAction, $bMailSubmitter, $bParentAction)
+    {
+        $sSubject = '';
+        $sMsg = '';
+        $aMailTo = null;
+
+        return array($sSubject, $sMsg, $aMailTo);
+    }
+
+    public function delete()
+    {
+        $bSuccess = true;
+
+        foreach($this->aDeleteVoters as $oVoter)
+        {
+            if(!$oVoter->delete())
+                $bSuccess = false;
+        }
+
+        return $bSuccess;
+    }
 }
 
 /**




More information about the wine-cvs mailing list