Alexander Nicolaysen Sørnes : Add a detailed maintainer view

Chris Morgan cmorgan at winehq.org
Fri Jul 18 10:14:51 CDT 2008


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

Author: Alexander Nicolaysen Sørnes <alex at thehandofagony.com>
Date:   Fri Jul 18 16:07:14 2008 +0200

Add a detailed maintainer view

---

 contact.php                |    6 ++
 include/maintainer.php     |    5 +-
 include/maintainerView.php |  141 ++++++++++++++++++++++++++++++++++++++++++++
 include/sidebar_login.php  |    4 +
 include/testData.php       |   21 +++++++
 objectManager.php          |    1 +
 6 files changed, 177 insertions(+), 1 deletions(-)

diff --git a/contact.php b/contact.php
index f1a2b0c..06757c6 100644
--- a/contact.php
+++ b/contact.php
@@ -78,6 +78,12 @@ if(!$aClean['sSubmit'])
                 "=100&amp;sOrderBy=email\">User manager</a></p>";
     }
 
+    if($oRecipient)
+    {
+        echo "<p><a href=\"".BASE."objectManager.php?sClass=maintainerView&iId=".
+             "{$oRecipient->iUserId}&sTitle=Maintained+Apps\">Maintained apps</a>";
+    }
+
     echo "<p>E-mail $sRecipientText.</p>";
 
     $oTable = new Table();
diff --git a/include/maintainer.php b/include/maintainer.php
index 66e1f6b..1851f91 100644
--- a/include/maintainer.php
+++ b/include/maintainer.php
@@ -825,7 +825,10 @@ class maintainer
             echo "</td></tr>\n";
 
             // Show which other apps the user maintains
-            echo '<tr valign="top"><td class="color0" style=\'text-align:right\'><b>This user also maintains these apps:</b></td><td>',"\n";
+            echo '<tr valign="top"><td class="color0" style=\'text-align:right\'><b>This user also maintains these apps:</b>';
+            echo "<br /><a href=\"".BASE."objectManager.php?sClass=maintainerView".
+                 "&iId={$this->iUserId}&sTitle=Maintained+Apps\">Detailed view</a>";
+            echo '</td><td>',"\n";
 
             $oUser = new User($this->iUserId);
             $aOtherApps = Maintainer::getAppsMaintained($oUser);
diff --git a/include/maintainerView.php b/include/maintainerView.php
new file mode 100644
index 0000000..b3241f3
--- /dev/null
+++ b/include/maintainerView.php
@@ -0,0 +1,141 @@
+<?php
+
+/**
+ * Class to show an overview of a user's maintainership, including apps maintained
+ * and their ratings
+ */
+class maintainerView
+{
+    var $iUserId;
+    var $bViewingSelf;
+
+    function maintainerView($iUserId = null)
+    {
+        if(!$iUserId)
+            $this->iUserId = $_SESSION['current']->iUserId;
+        else
+            $this->iUserId = $iUserId;
+
+        if(!$iUserId || $this->iUserId == $_SESSION['current']->iUserId)
+            $this->bViewingSelf = true;
+        else
+            $this->bViewingSelf = false;
+    }
+
+    function addVersionRatingInfo($oTableRow, $oVersion)
+    {
+        $oTableRow->AddTextCell($oVersion->objectMakeLink());
+
+        /* Rating info */
+        $oTableCell = new TableCell($oVersion->sTestedRating);
+        $oTableCell->SetClass($oVersion->sTestedRating);
+        $oTableRow->AddCell($oTableCell);
+        $oTableCell = new TableCell($oVersion->sTestedRelease);
+        $oTableCell->SetClass($oVersion->sTestedRating);
+        $oTableRow->AddCell($oTableCell);
+
+        /* Get test reports submitted by the user */
+        $aTestData = testData::getTestResultsForUser($_SESSION['current']->iUserId,
+                                                     $oVersion->iVersionId);
+
+        if(sizeof($aTestData))
+        {
+            $oTest = $aTestData[0];
+            $sUserRating = $oTest->sTestedRating;
+            $sUserRelease = $oTest->sTestedRelease;
+        } else
+        {
+            $sUserRating = '';
+            $sUserRelease = '';
+        }
+
+        $oTableCell = new TableCell($sUserRating);
+        $oTableCell->SetClass($sUserRating);
+        $oTableRow->AddCell($oTableCell);
+        $oTableCell = new TableCell($sUserRelease);
+        $oTableCell->SetClass($sUserRating);
+        $oTableRow->AddCell($oTableCell);
+
+        return $oTableRow;
+    }
+
+    /* Shows a detailed vis of the user's maintained applications,
+       including last tested release & rating */
+    function display()
+    {
+        if(!$this->bViewingSelf)
+            $oUser = new user($this->iUserId);
+
+        $aMaintainedApps = maintainer::getAppsMaintained($_SESSION['current']);
+        if(!$aMaintainedApps || !sizeof($aMaintainedApps))
+        {
+            if($this->bViewingSelf)
+                echo '<p>You do not maintain any apps</p>';
+            else
+                echo "<p>{$oUser->sRealname} does not maintain any apps</p>";
+            return;
+        }
+
+        if($this->bViewingSelf)
+            echo '<p>Viewing your maintained apps</p>';
+        else
+            echo "<p>Viewing {$oUser->sRealname}'s maintained apps</p>";
+
+        $oTable = new Table();
+        $oTableRow = new TableRow();
+        $oTableRow->setClass('color4');
+        $oTable->setCellSpacing(0);
+        $oTable->setCellPadding(3);
+        $oTableRow->AddTextCell('Application');
+        $oTableRow->AddTextCell('Version');
+        $oTableRow->AddTextCell('Current Rating');
+        $oTableRow->AddTextCell('Current Version');
+        $oTableRow->AddTextCell($this->bViewingSelf ? 'Your Rating' : "User's Rating");
+        $oTableRow->AddTextCell($this->bViewingSelf ? 'Your Version' : "User's Version");
+        $oTable->AddRow($oTableRow);
+
+        $i = 1;
+        while(list($iIndex, list($iAppId, $iVersionId, $bSuperMaintainer)) = each($aMaintainedApps))
+        {
+            $oApp = new application($iAppId);
+            $aVersions = array();
+
+            $oTableRow = new TableRow();
+            $oTableRow->AddTextCell($oApp->objectMakeLink());
+
+            $oTableRow->SetClass(($i % 2) ? 'color0' : 'color1');
+            $i++;
+
+            if($iVersionId)
+            {
+                $oVersion = new version($iVersionId);
+                $oTableRow = maintainerView::addVersionRatingInfo($oTableRow, $oVersion);
+                $oTable->AddRow($oTableRow);
+            } else
+            {
+                $aVersions = $oApp->getVersions(true);
+                $oTableRow->AddTextCell('*');
+                $oTableRow->AddTextCell('');
+                $oTableRow->AddTextCell('');
+                $oTableRow->AddTextCell('');
+                $oTableRow->AddTextCell('');
+                $oTable->AddRow($oTableRow);
+            }
+
+            foreach($aVersions as $oVersion)
+            {
+                $oTableRow = new TableRow($oTableRow);
+                $oTableRow->AddTextCell('');
+                $oTableRow = maintainerView::addVersionRatingInfo($oTableRow, $oVersion);
+
+                $oTableRow->SetClass(($i % 2) ? 'color0' : 'color1');
+                $i++;
+
+                $oTable->AddRow($oTableRow);
+            }
+        }
+        echo $oTable->GetString();
+    }
+}
+
+?>
diff --git a/include/sidebar_login.php b/include/sidebar_login.php
index 536ad71..719647a 100644
--- a/include/sidebar_login.php
+++ b/include/sidebar_login.php
@@ -23,8 +23,12 @@ function global_sidebar_login() {
         $apps_user_maintains = Maintainer::getAppsMaintained($_SESSION['current']);
         if($apps_user_maintains)
         {
+            $g->add('Maintainership Overview', BASE.'objectManager.php?sClass=maintainerView&iId='.
+                                               $_SESSION['current']->iUserId.'&sTitle=Your+Maintained+Apps');
+
             $g->addmisc("");
             $g->addmisc("You maintain:\n");
+
             while(list($index, list($appId, $versionId, $superMaintainer)) = each($apps_user_maintains))
             {
                 $oApp = new application($appId);
diff --git a/include/testData.php b/include/testData.php
index c749c53..0183040 100644
--- a/include/testData.php
+++ b/include/testData.php
@@ -1074,6 +1074,27 @@ class testData{
         echo "</select>\n";
     }
 
+    function getTestResultsForUser($iUserId, $iVersionId)
+    {
+        $hResult = query_parameters("SELECT * FROM testResults WHERE
+                                     submitterId = '?'
+                                     AND versionId = '?'
+                                     ORDER BY testingId DESC", $iUserId, $iVersionId);
+
+        if(!$hResult)
+            return null;
+
+        $aRet = array();
+
+        if(!mysql_num_rows($hResult))
+            return $aRet;
+
+        while(($oRow = mysql_fetch_object($hResult)))
+            $aRet[] = new testData(0, $oRow);
+
+        return $aRet;
+    }
+
     /* List test data submitted by a given user.  Ignore test results for queued applications/versions */
     function listSubmittedBy($iUserId, $bQueued = true)
     {
diff --git a/objectManager.php b/objectManager.php
index 30ad2f3..7cf3180 100644
--- a/objectManager.php
+++ b/objectManager.php
@@ -24,6 +24,7 @@ require_once(BASE.'include/version_queue.php');
 require_once(BASE.'include/testData_queue.php');
 require_once(BASE.'include/bugs.php');
 require_once(BASE.'include/db_filter_ui.php');
+require_once(BASE.'include/maintainerView.php');
 
 /* if we have no valid class name we should abort */
 if(!isset($aClean['sClass']))




More information about the wine-cvs mailing list