Fix appData::listSubmittedBy() to run faster. Add a unit test for appData::listSubmittedBy()

This commit is contained in:
Alexander Nicolaysen Sørnes
2007-03-15 23:43:46 +00:00
committed by WineHQ
parent 9ef6268fa6
commit fef587a60e
4 changed files with 77 additions and 17 deletions

View File

@@ -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 */

View File

@@ -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;
}

View File

@@ -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");
?>

View File

@@ -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";
?>