Move getAppsFromUserId() to user::getAppsMaintained(). Also implement a unit test for

user::getAppsMaintained()
This commit is contained in:
Chris Morgan
2006-07-06 22:08:37 +00:00
committed by WineHQ
parent 3096e63828
commit ea02b57c25
6 changed files with 109 additions and 25 deletions

View File

@@ -113,7 +113,8 @@ if ($aClean['sSub'])
echo '<tr valign="top"><td class="color0"><b>This user also maintains these apps:</b></td>',"\n";
$firstDisplay = true;
$other_apps = getAppsFromUserId($oRow->userId);
$oUser = new User($oRow->userId);
$other_apps = $oUser->getAppsMaintained();
if($other_apps)
{
while(list($index, list($appIdOther, $versionIdOther, $superMaintainerOther)) = each($other_apps))

View File

@@ -7,6 +7,7 @@ require_once(BASE."include/version.php");
require_once(BASE."include/vendor.php");
require_once(BASE."include/url.php");
require_once(BASE."include/util.php");
require_once(BASE."include/mail.php");
/**
* Application class for handling applications.

View File

@@ -3,29 +3,6 @@
/* functions for maintainers */
/*****************************/
/**
* get the applications and versions that this userId maintains
*/
function getAppsFromUserId($userId)
{
/* retrieve the list of application and order them by application name */
$hResult = query_parameters("SELECT appMaintainers.appId, versionId, superMaintainer, appName FROM ".
"appFamily, appMaintainers WHERE appFamily.appId = appMaintainers.appId ".
"AND userId = '?' ORDER BY appName", $userId);
if(!$hResult || mysql_num_rows($hResult) == 0)
return;
$retval = array();
$c = 0;
while($oRow = mysql_fetch_object($hResult))
{
$retval[$c] = array($oRow->appId, $oRow->versionId, $oRow->superMaintainer);
$c++;
}
return $retval;
}
/*
* get the userIds of maintainers for a versionId
*/

View File

@@ -19,7 +19,7 @@ function global_sidebar_login() {
/* if this user maintains any applications list them */
/* in their sidebar */
$apps_user_maintains = getAppsFromUserId($_SESSION['current']->iUserId);
$apps_user_maintains = $_SESSION['current']->getAppsMaintained();
if($apps_user_maintains)
{
$g->addmisc("");

View File

@@ -296,6 +296,29 @@ class User {
return mysql_num_rows($hResult);
}
/**
* get the applications and versions that this user maintains
*/
function getAppsMaintained()
{
/* retrieve the list of application and order them by application name */
$hResult = query_parameters("SELECT appMaintainers.appId, versionId, superMaintainer, appName FROM ".
"appFamily, appMaintainers WHERE appFamily.appId = appMaintainers.appId ".
"AND userId = '?' ORDER BY appName", $this->iUserId);
if(!$hResult || mysql_num_rows($hResult) == 0)
return NULL;
$aAppsMaintained = array();
$c = 0;
while($oRow = mysql_fetch_object($hResult))
{
$aAppsMaintained[$c] = array($oRow->appId, $oRow->versionId, $oRow->superMaintainer);
$c++;
}
return $aAppsMaintained;
}
function getMaintainerCount($bSuperMaintainer)
{
if(!$this->isLoggedIn()) return 0;

View File

@@ -353,6 +353,83 @@ function test_user_getMaintainerCount()
return true;
}
function test_user_getAppsMaintained()
{
test_start(__FUNCTION__);
global $test_email, $test_password;
/* login the user */
$oUser = new User();
$retval = $oUser->login($test_email, $test_password);
if($retval != SUCCESS)
{
echo "Got '".$retval."' instead of SUCCESS(".SUCCESS.")\n";
return false;
}
/* make this user an admin so we can create applications without having them queued */
$hResult = query_parameters("INSERT into user_privs values ('?', '?')",
$oUser->iUserId, "admin");
/* create a application so we have a valid appFamily for the call to user::getAppsMaintained() */
$oApp = new Application();
$oApp->sName = "Some application";
$oApp->sDescription = "some description";
$oApp->submitterId = $oUser->iUserId;
if(!$oApp->create())
{
echo "Failed to create application!\n";
return false;
}
/**
* make the user a super maintatiner
*/
$iAppId = $oApp->iAppId; /* use the iAppId of the application we just created */
$iVersionId = 655200;
$iQueueId = 655300;
$bSuperMaintainer = TRUE;
$statusMessage = $oUser->addAsMaintainer($iAppId, $iVersionId, $bSuperMaintainer, $iQueueId);
/* get an array of the apps maintained */
$aAppsMaintained = $oUser->getAppsMaintained();
if(!$aAppsMaintained)
{
echo "aAppsMaintained is null, we expected a non-null return value!\n";
return false;
}
/* get only the first entry from the array of applications maintained */
/* we only added the user as a maintainer of a single application */
list($iAppId1, $iVersionId1, $bSuperMaintainer1) = $aAppsMaintained[0];
/* make sure all parameters match what we added as maintainer information */
if($iAppId1 != $iAppId)
{
echo "Expected iAppid of ".$iAppId." but got ".$iAppId1."\n";
return false;
}
if($iVersionId1 != $iVersionId)
{
echo "Expected iVersionId of ".$iVersionId." but got ".$iVersionId1."\n";
return false;
}
if($bSuperMaintainer1 != $bSuperMaintainer)
{
echo "Expected bSuperMaintainer of ".$bSuperMaintainer." but got ".$bSuperMaintainer1."\n";
return false;
}
/* remove maintainership for this user */
$oUser->deleteMaintainer($iAppId);
return true;
}
/*************************/
/* Main testing routines */
@@ -392,6 +469,11 @@ if(!test_user_getMaintainerCount())
else
echo "test_user_getMaintainerCount() passed\n";
if(!test_user_getAppsMaintained())
echo "test_user_getAppsMaintained() failed!\n";
else
echo "test_user_getAppsMaintained() passed\n";
/* TODO: the rest of the user member functions we don't currently test */