Alexander Nicolaysen Sørnes : version: Add and use aTestResults member

Chris Morgan cmorgan at winehq.org
Thu Oct 25 18:10:45 CDT 2007


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

Author: Alexander Nicolaysen Sørnes <alex at thehandofagony.com>
Date:   Thu Oct 25 11:10:32 2007 +0200

version: Add and use aTestResults member

---

 include/version.php       |   42 ++++++++++++++++++++++++++++++------------
 include/version_queue.php |    7 +++----
 2 files changed, 33 insertions(+), 16 deletions(-)

diff --git a/include/version.php b/include/version.php
index 9d97553..efa8b72 100644
--- a/include/version.php
+++ b/include/version.php
@@ -34,6 +34,9 @@ class version {
     var $iSubmitterId;
     var $sQueued;
     var $sLicense;
+    var $aTestResults; /* Array of test result objects. Especially useful when
+                          we want to preview a version before submitting it;
+                          in that case there is no data in the database */
     var $iObsoleteBy; /* Whether this version is marked as obsolete, and if so which
                          version its votes should be moved to. */
     var $iMaintainerRequest; /* Temporary variable for version submisson.
@@ -46,6 +49,7 @@ class version {
      */
     public function Version($iVersionId = null, $oRow = null)
     {
+        $this->aTestResults = array(); // should always be an array
         // we are working on an existing version
         if(!$iVersionId && !$oRow)
             return;
@@ -755,14 +759,13 @@ class version {
         return TRUE;
     }
 
-    /* $oTest can be passed by version_queue to allow previewing a version, in which case the test id may not be defined */
-    public function display($aVars, $oTest = null)
+    public function display($aVars = array())
     {
         /* is this user supposed to view this version? */
         if(!$_SESSION['current']->canViewVersion($this))
             util_show_error_page_and_exit("Something went wrong with the application or version id");
 
-        $iTestingId = $aVars['iTestingId'];
+        $iTestingId = $aVars['iTestingId'] ? $aVars['iTestingId'] : 0;
 
         $oApp = new Application($this->iAppId);
 
@@ -983,16 +986,17 @@ class version {
         echo "\t\tSelected test results <small><small>(selected in 'Test Results' table below)</small></small>\n";
         echo "\t</div>\n";
 
-        /* oTest may be passed by version_queue to allow previewing a version which does not exist in the database */
-        if(!$oTest && $iTestingId)
+        /* Set if the use chose to display a particular test report */
+        if($iTestingId)
             $oTest = new testData($iTestingId);
-
-        /* if $iTestingId wasn't valid then it won't be valid in $oTest */
-        if(!$oTest)
+        else if($this->iVersionId) /* Let's query for the latest rest report */
         {
-            /* fetch a new test id for this version */
             $iTestingId = testData::getNewestTestIdFromVersionId($this->iVersionId);
             $oTest = new testData($iTestingId);
+        } else /* Perhaps we have a cached entry? There should be */
+        {
+            $aTests = $this->getTestResults();
+            $oTest = $aTests[0];
         }
 
         echo "<div class='info_contents'>\n";
@@ -1577,9 +1581,14 @@ class version {
              "From that page you can edit, delete or approve it into the AppDB.</p>\n";
     }
 
-    public function objectGetChildren()
+    public function getTestResults()
     {
-        $aChildren = array();
+        /* If we don't have an id we can query the database, but perhaps we
+           have some cached entries? */
+        if(!$this->iVersionId)
+            return $this->aTestResults;
+
+        $aTests = array();
 
         /* Find test results */
         $sQuery = "SELECT * FROM testResults WHERE versionId = '?'";
@@ -1589,8 +1598,17 @@ class version {
             return FALSE;
 
         while($oRow = mysql_fetch_object($hResult))
+            $aTests[] = new testData(0, $oRow);
+
+        return $aTests;
+    }
+
+    public function objectGetChildren()
+    {
+        $aChildren = array();
+
+        foreach($this->getTestResults() as $oTest)
         {
-            $oTest = new testData(0, $oRow);
             $aChildren += $oTest->objectGetChildren();
             $aChildren[] = $oTest;
         }
diff --git a/include/version_queue.php b/include/version_queue.php
index e3eaa61..4451586 100644
--- a/include/version_queue.php
+++ b/include/version_queue.php
@@ -222,10 +222,9 @@ class version_queue
 
     function display()
     {
-        $aVars = array();
-        $aVars['iTestingId'] = 0;
-
-        $this->oVersion->display($aVars, $this->oTestDataQueue->oTestData);
+        /* Cache the test result object as it's not in the DB */
+        $this->oVersion->aTestResults[] = $this->oTestDataQueue->oTestData;
+        $this->oVersion->display();
     }
 
     function objectMakeUrl()




More information about the wine-cvs mailing list