appdb/ include/appData.php include/version.php ...

WineHQ wineowner at wine.codeweavers.com
Thu Mar 15 18:43:46 CDT 2007


ChangeSet ID:	30972
CVSROOT:	/opt/cvs-commit
Module name:	appdb
Changes by:	wineowner at winehq.org	2007/03/15 18:43:46

Modified files:
	include        : appData.php version.php 
	unit_test      : run_tests.php 
Added files:
	unit_test      : test_appData.php 

Log message:
	Alexander Nicolaysen Sørnes <alex at thehandofagony.com>
	Fix appData::listSubmittedBy() to run faster. Add a unit test for appData::listSubmittedBy()

Patch: http://cvs.winehq.org/patch.py?id=30972

Old revision  New revision  Changes     Path
 1.9           1.10          +18 -16     appdb/include/appData.php
 1.105         1.106         +6 -1       appdb/include/version.php
 1.11          1.12          +2 -0       appdb/unit_test/run_tests.php
 Added         1.1           +0 -0       appdb/unit_test/test_appData.php

Index: appdb/include/appData.php
diff -u -p appdb/include/appData.php:1.9 appdb/include/appData.php:1.10
--- appdb/include/appData.php:1.9	15 Mar 2007 23:43:46 -0000
+++ appdb/include/appData.php	15 Mar 2007 23:43:46 -0000
@@ -39,22 +39,17 @@ class appData
 
     function listSubmittedBy($iUserId, $bQueued = true)
     {
-        $hResult = query_parameters("SELECT appData.TYPE, appData.appId,
-            appData.versionId, appData.description, appData.submitTime,
-            appFamily.appName, appVersion.versionName FROM appData,
-            appFamily, appVersion
-                WHERE (appFamily.appId = appData.appId OR
-                (appData.versionId = appVersion.versionId AND appFamily.appId =
-                appVersion.appId)) AND (appFamily.queued = '?' OR
-                appVersion.queued = '?') AND appData.submitterId = '?' AND
+        $hResult = query_parameters("SELECT * FROM appData WHERE
+                appData.submitterId = '?'
+                AND
                 appData.queued = '?'
                     ORDER BY appData.id",
-                        "false", "false", $iUserId, $bQueued ? "true" : "false");
+                        $iUserId, $bQueued ? "true" : "false");
 
         if(!$hResult || !mysql_num_rows($hResult))
             return false;
 
-        $sReturn .= html_table_begin("width=\"100%\" align=\"center\"");
+        $sReturn = html_table_begin("width=\"100%\" align=\"center\"");
         $sReturn .= html_tr(array(
             "Version",
             "Type",
@@ -64,13 +59,19 @@ class appData
 
         for($i = 1; $oRow = mysql_fetch_object($hResult); $i++)
         {
+            if($oRow->versionId)
+            {
+                $oVersion = new version($oRow->versionId);
+                $sLink = "<a href=\"".$oVersion->objectMakeUrl()."\">".
+                         $oVersion->fullName($oVersion->iVersionId)."</a>";
+            } else
+            {
+                $oApp = new application($this->appId);
+                $sLink = $oApp->objectMakeLink();
+            }
             $sReturn .= html_tr(array(
-                $oRow->versionId ?
-                "<a href=\"".BASE."appview.php?iVersionId=$oRow->versionId\">".
-                "$oRow->appName: $oRow->versionName</a>" :
-                "<a href=\"".BASE."appview.php?iAppId=$oRow->appId\">".
-                "$oRow->appName</a>",
-                $oRow->TYPE,
+                $sLink,
+                $oRow->type,
                 $oRow->description,
                 print_date(mysqltimestamp_to_unixtimestamp($oRow->submitTime))),
                 ($i % 2) ? "color0" : "color1");
@@ -79,6 +80,7 @@ class appData
         $sReturn .= html_table_end("");
 
         return $sReturn;
+
     }
 
     /* Get appData for a given version/application, optionally filter by type */
Index: appdb/include/version.php
diff -u -p appdb/include/version.php:1.105 appdb/include/version.php:1.106
--- appdb/include/version.php:1.105	15 Mar 2007 23:43:46 -0000
+++ appdb/include/version.php	15 Mar 2007 23:43:46 -0000
@@ -1133,9 +1133,14 @@ class Version {
         return FALSE;
     }
 
+    function objectMakeUrl()
+    {
+        return BASE."appview.php?iVersionId=$this->iVersionId";
+    }
+
     function objectMakeLink()
     {
-        $sLink = "<a href=\"".BASE."appview.php?iVersionId=$this->iVersionId\">".
+        $sLink = "<a href=\"".$this->objectMakeUrl()."\">".
                  $this->sName."</a>";
         return $sLink;
     }
Index: appdb/unit_test/run_tests.php
diff -u -p appdb/unit_test/run_tests.php:1.11 appdb/unit_test/run_tests.php:1.12
--- appdb/unit_test/run_tests.php:1.11	15 Mar 2007 23:43:46 -0000
+++ appdb/unit_test/run_tests.php	15 Mar 2007 23:43:46 -0000
@@ -26,4 +26,6 @@ echo "\n";
 include_once("test_url.php");
 echo "\n";
 include_once("test_om_objects.php");
+echo "\n";
+include_once("test_appData.php");
 ?>
Index: appdb/unit_test/test_appData.php
diff -u -p /dev/null appdb/unit_test/test_appData.php:1.1
--- /dev/null	15 Mar 2007 23:43:46 -0000
+++ appdb/unit_test/test_appData.php	15 Mar 2007 23:43:46 -0000
@@ -0,0 +1,51 @@
+<?php
+
+require_once("path.php");
+require_once("test_common.php");
+require_once(BASE."include/appData.php");
+require_once(BASE."include/downloadurl.php");
+
+function test_appData_listSubmittedBy()
+{
+    test_start(__FUNCTION__);
+
+    global $test_email, $test_password;
+    if(!$oUser = create_and_login_user())
+    {
+        echo "Failed to create and log in user\n";
+        return FALSE;
+    }
+
+    /* Create a queued appData entry */
+    $oDownloadUrl = new downloadurl;
+
+    $oDownloadUrl->sUrl = "http://www.microsoft.com/windowsmedia";
+    $oDownloadUrl->sDescription = "Download Meida Player";
+    $oDownloadUrl->iVersionId = 1;
+
+    $oDownloadUrl->create();
+
+    $shReturn = appData::listSubmittedBy($oUser->iUserId, true);
+
+    /* There should be two lines; one header and one for the downloadurl */
+    $iExpected = 2;
+    $iReceived = substr_count($shReturn, "</tr>");
+    if($iExpected != $iReceived)
+    {
+        echo "Got $iReceived rows instead of $iExpected.\n";
+        return FALSE;
+    }
+
+    /* Clean up */
+    $oDownloadUrl->delete();
+    $oUser->delete();
+
+    return TRUE;
+}
+
+if(!test_appData_listSubmittedBy())
+    echo "test_appData_listSubmittedBy() failed!\n";
+else
+    echo "test_appData_listSubmittedBy() passed\n";
+
+?>



More information about the wine-cvs mailing list