Alexander Nicolaysen Sørnes : Add vote inspector tool

Alexander Nicolaysen Sørnes asornes at winehq.org
Wed Jul 22 13:11:36 CDT 2009


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

Author: Alexander Nicolaysen Sørnes <alex at thehandofagony.com>
Date:   Wed Jul 22 20:11:07 2009 +0200

Add vote inspector tool

---

 include/version.php |    8 ++++
 include/vote.php    |   89 +++++++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 97 insertions(+), 0 deletions(-)

diff --git a/include/version.php b/include/version.php
index ae0bc3e..b2c1798 100644
--- a/include/version.php
+++ b/include/version.php
@@ -870,6 +870,14 @@ class version {
             else
                 $shVoteLink = '';
 
+            // Allow admins to see which users have voted, in order to identify
+            // bogus votes
+            if($_SESSION['current']->hasPriv('admin'))
+            {
+                $oMVoteInspector = new objectManager('voteInspector', 'Vote inspector');
+                $shVoteLink .= ' &nbsp; <a href="'.$oMVoteInspector->makeUrl('view',$this->iVersionId).'">Inspect</a>';
+            }
+
             $shVoteText = vote_count_version_total($this->iVersionId).$shVoteLink;
         } else
         {
diff --git a/include/vote.php b/include/vote.php
index 36367e3..193c3b8 100644
--- a/include/vote.php
+++ b/include/vote.php
@@ -228,6 +228,95 @@ class voteManager
 }
 
 /**
+ * used by admins to check whether votes for a version are legit
+ */
+class voteInspector
+{
+    private $iVersionId;
+
+    function voteInspector($iVersionId = null)
+    {
+        if(is_numeric($iVersionId))
+            $this->iVersionId = $iVersionId;
+    }
+
+    public function objectGetId()
+    {
+        return $this->iVersionId;
+    }
+
+    public function objectGetState()
+    {
+        return 'accepted';
+    }
+
+    public function display()
+    {
+        $oVersion = new version($this->iVersionId);
+
+        echo 'Inspecting votes for ' . version::fullNameLink($this->iVersionId);
+        echo '<br /><br />';
+
+        $hResult = query_parameters("SELECT userId, COUNT(userId) as count FROM appVotes WHERE
+                                     versionId = '?'
+                                     GROUP BY userId", $this->iVersionId);
+
+        if(!$hResult)
+        {
+            echo 'Failed to get list of votes';
+            return;
+        }
+
+        if(mysql_num_rows($hResult) == 0)
+        {
+            echo 'There are no votes for this version';
+            return;
+        }
+
+        $oTable = new Table();
+        $oTable->setCellPadding(3);
+
+        $oTableRow = new TableRow();
+        $oTableRow->setClass('color4');
+        $oTableRow->AddTextCell('User');
+        $oTableRow->AddTextCell('ID');
+        $oTableRow->AddTextCell('Created');
+        $oTableRow->AddTextCell('Votes');
+        $oTableRow->AddTextCell('Privileges');
+        $oTable->AddRow($oTableRow);
+
+        for($i = 0; $oRow = mysql_fetch_object($hResult); $i++)
+        {
+            $oVoter = new user($oRow->userId);
+            $oTableRow = new TableRow();
+            $oTableRow->setClass(($i % 2) ? 'color0' : 'color1');
+            $oTableRow->AddTextCell($oVoter->objectMakeLink());
+            $oTableRow->AddTextCell($oVoter->iUserId);
+            $oTableRow->AddTextCell($oVoter->sDateCreated);
+            $oTableRow->AddTextCell($oRow->count);
+
+            $sPrivs = '';
+            if($oVoter->hasPriv('admin'))
+                $sPrivs .= 'Admin<br />';
+
+            if($oVoter->isMaintainer($this->iVersionId))
+                $sPrivs .= 'Maintainer of this version<br />';
+
+            if($oVoter->isMaintainer())
+            {
+                $oM = new objectManager('maintainerView', 'View maintainership info');
+                $sPrivs .= '<a href="'.$oM->makeUrl('view',$oVoter->iUserId).'">Maintainer (other entries)</a><br />';
+            }
+
+            $oTableRow->AddTextCell($sPrivs);
+            $oTable->AddRow($oTableRow);
+        }
+
+        echo $oTable->getString();
+    }
+}
+
+/**
  * count the number of votes for appId by userId
  */
 function vote_count($iVersionId, $iUserId = null)




More information about the wine-cvs mailing list