Start to move maintainer related functions into maintainer class and separate maintainer related queries and logic from

display code. Also move maintainer related code from the user class. Fix up unit tests to work with the new maintainer class.
This commit is contained in:
Chris Morgan
2006-07-24 16:20:40 +00:00
committed by WineHQ
parent 25cf0a827f
commit cef2aec209
15 changed files with 758 additions and 629 deletions

View File

@@ -224,8 +224,8 @@ class Application {
}
// remove any supermaintainers for this application so we don't orphan them
$sQuery = "DELETE from appMaintainers WHERE appId='?'";
if(!($hResult = query_parameters($sQuery, $this->iAppId)))
$hResult = Maintainer::deleteMaintainersForApplication($this);
if(!$hResult)
{
addmsg("Error removing app maintainers for the deleted application!", "red");
}
@@ -557,7 +557,7 @@ class Application {
// Display all supermaintainers maintainers of this application
echo " <table class=\"color4\" width=\"250\" border=\"1\">\n";
echo " <tr><td align=\"left\"><b>Super maintainers:</b></td></tr>\n";
$other_maintainers = getSuperMaintainersUserIdsFromAppId($this->iAppId);
$other_maintainers = Maintainer::getSuperMaintainersUserIdsFromAppId($this->iAppId);
if($other_maintainers)
{
echo " <tr><td align=\"left\"><ul>\n";

View File

@@ -3,24 +3,493 @@
/* functions for maintainers */
/*****************************/
/*
* get the userIds of super maintainers for this appId
*/
function getSuperMaintainersUserIdsFromAppId($iAppId)
class maintainer
{
$sQuery = "SELECT userId FROM ".
"appMaintainers WHERE appId = '?' " .
"AND superMaintainer = '1' AND queued='?';";
$hResult = query_parameters($sQuery, $iAppId, "false");
$retval = array();
$c = 0;
while($oRow = mysql_fetch_object($hResult))
var $iMaintainerId;
var $iAppId;
var $iVersionId;
var $iUserId;
var $sMaintainReason;
var $bSuperMaintainer;
var $aSubmitTime;
var $bQueued;
function maintainer($iMaintainerId = "")
{
$retval[$c] = $oRow->userId;
$c++;
$sQuery = "SELECT * FROM appMaintainers WHERE maintainerId = '?'";
$hResult = query_parameters($sQuery, $iMaintainerId);
if($hResult)
{
$oRow = mysql_fetch_object($hResult);
$this->iMaintainerId = $oRow->maintainerId;
$this->iAppId = $oRow->appId;
$this->iVersionId = $oRow->versionId;
$this->iUserId = $oRow->userId;
$this->sMaintainReason = $oRow->maintainReason;
$this->bSuperMaintainer = $oRow->superMaintainer;
$this->aSubmitTime = $oRow->submitTime;
$this->bQueued = $oRow->queued;
}
}
return $retval;
}
function create()
{
/* user id, appid, and maintain reason must be valid to continue */
if(!$this->iUserId || !$this->iAppId || !$this->sMaintainReason)
return NULL;
$hResult = query_parameters("INSERT INTO appMaintainers (appId, versionId, ".
"userId, maintainReason, superMaintainer, submitTime, queued) ".
"VALUES ('?', '?', '?', '?', '?', ?, '?')",
$this->iAppId, $this->iVersionId,
$this->iUserId, $this->sMaintainReason,
$this->bSuperMaintainer, "NOW()", 'true');
/* this objects id is the insert id returned by mysql */
$this->iMaintainerId = mysql_insert_id();
return $hResult;
}
function unQueue($sReplyText)
{
/* if the user isn't already a supermaintainer of the application and */
/* if they are trying to become a maintainer and aren't already a maintainer of */
/* the version, then continue processing the request */
$oUser = new User($this->iUserId);
if(!$oUser->isSuperMaintainer($this->iAppId) &&
((!$this->bSuperMaintainer && !$oUser->isMaintainer($this->iVersionId)) | $this->bSuperMaintainer))
{
/* unqueue the maintainer entry */
$hResult = query_parameters("UPDATE appMaintainers SET queued='false' WHERE userId = '?' AND maintainerId = '?'",
$this->iUserId, $this->iMaintainerId);
if($hResult)
{
$sStatusMessage = "<p>The maintainer was successfully added into the database</p>\n";
$oApp = new Application($iAppId);
$oVersion = new Version($iVersionId);
//Send Status Email
$sEmail = $oUser->sEmail;
if ($sEmail)
{
$sSubject = "Application Maintainer Request Report";
$sMsg = "Your application to be the maintainer of ".$oApp->sName." ".$oVersion->sName." has been accepted. ";
$sMsg .= $sReplyText;
$sMsg .= "We appreciate your help in making the Application Database better for all users.\n\n";
mail_appdb($sEmail, $sSubject ,$sMsg);
}
}
} else
{
//delete the item from the queue
query_parameters("DELETE from appMaintainers WHERE userId = '?' AND maintainerId = '?'",
$this->iUserId, $this->iMaintainerId);
if($oUser->isSuperMaintainer($this->iAppId) && !$this->bSuperMaintainer)
$sStatusMessage = "<p>User is already a super maintainer of this application</p>\n";
else
$sStatusMessage = "<p>User is already a maintainer/super maintainer of this application/version</p>\n";
}
return $sStatusMessage;
}
function reject($sReplyText)
{
$oUser = new User($this->iUserId);
$sEmail = $oUser->sEmail;
if ($sEmail)
{
$oApp = new Application($oRow->appId);
$oVersion = new Version($oRow->versionId);
$sSubject = "Application Maintainer Request Report";
$sMsg = "Your application to be the maintainer of ".$oApp->sName." ".$oVersion->sName." was rejected. ";
$sMsg .= $sReplyText;
$sMsg .= "";
$sMsg .= "-The AppDB admins\n";
mail_appdb($sEmail, $sSubject ,$sMsg);
}
//delete main item
$sQuery = "DELETE from appMaintainers where maintainerId = '?'";
$hResult = query_parameters($sQuery, $this->iMaintainerId);
return $hResult;
}
function delete()
{
$sQuery = "DELETE from appMaintainers where maintainerId = '?'";
query_parameters($sQuery, $this->iMaintainerId);
}
function deleteMaintainer($oUser, $iAppId = null, $iVersionId = null)
{
/* remove supermaintainer */
if($iAppId && ($iVersionId == null))
{
$superMaintainer = 1;
$hResult = query_parameters("DELETE FROM appMaintainers WHERE userId = '?'
AND appId = '?' AND superMaintainer = '?'",
$oUser->iUserId, $iAppId, $superMaintainer);
} else if($iAppId && $iVersionId) /* remove a normal maintainer */
{
$superMaintainer = 0;
$hResult = query_parameters("DELETE FROM appMaintainers WHERE userId = '?'
AND appId = '?' AND versionId = '?' AND superMaintainer = '?'",
$oUser->iUserId, $iAppId, $iVersionId, $superMaintainer);
} else if(($iAppId == null) && ($iVersionId == null)) /* remove all maintainership by this user */
{
$hResult = query_parameters("DELETE FROM appMaintainers WHERE userId = '?'",
$oUser->iUserId);
}
if($hResult)
return true;
return false;
}
function deleteMaintainersForVersion($oVersion)
{
$hResult = query_parameters("DELETE from appMaintainers WHERE versionId='?'",
$oVersion->iVersionId);
}
function deleteMaintainersForApplication($oApp)
{
$sQuery = "DELETE from appMaintainers WHERE appId='?'";
$hResult = query_parameters($sQuery, $oApp->iAppId);
return $hResult;
}
function ObjectGetEntries($bQueued)
{
if($bQueued)
$sQuery = "SELECT maintainerId FROM appMaintainers, user_list WHERE appMaintainers.userid = user_list.userid ".
"AND queued = '?' ORDER by submitTime";
else
$sQuery = "SELECT maintainerId FROM appMaintainers, user_list WHERE appMaintainers.userid = user_list.userid ".
"AND queued = '?' ORDER by realname";
if($bQueued)
{
if($_SESSION['current']->hasPriv("admin"))
return query_parameters($sQuery, $bQueued ? "true" : "false");
else
return NULL;
} else
{
return query_parameters($sQuery, $bQueued ? "true" : "false");
}
}
/* retrieve a maintainer object from a row returned by */
/* ObjectGetEntries() */
function ObjectGetObjectFromObjectGetEntriesRow($oRow)
{
return new maintainer($oRow->maintainerId);
}
function getMaintainerCountForUser($oUser, $bSuperMaintainer)
{
$sQuery = "SELECT count(*) as cnt from appMaintainers WHERE userid = '?' AND superMaintainer = '?'".
" AND queued ='?'";
$hResult = query_parameters($sQuery, $oUser->iUserId, $bSuperMaintainer ? "1" : "0", "false");
if(!$hResult)
return 0;
$oRow = mysql_fetch_object($hResult);
return $oRow->cnt;
}
/**
* get the applications and versions that this user maintains
*/
function getAppsMaintained($oUser)
{
/* 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 = '?' AND appMaintainers.queued = '?' ORDER BY appName",
$oUser->iUserId, "false");
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 getQueuedMaintainerCount()
{
$sQuery = "SELECT count(*) as queued_maintainers FROM appMaintainers where queued='true'";
$hResult = query_parameters($sQuery);
$oRow = mysql_fetch_object($hResult);
return $oRow->queued_maintainers;
}
/* see how many maintainer entries we have in the database */
function getMaintainerCount()
{
$sQuery = "SELECT count(*) as maintainers FROM appMaintainers where queued='false'";
$hResult = query_parameters($sQuery);
$oRow = mysql_fetch_object($hResult);
return $oRow->maintainers;
}
/* see how many unique maintainers we actually have */
function getNumberOfMaintainers()
{
$hResult = query_parameters("SELECT DISTINCT userId FROM appMaintainers WHERE queued='false';");
return mysql_num_rows($hResult);
}
function isUserMaintainer($oUser, $iVersionId = null)
{
/* if we are a super maintainer, we are a maintainer of this version as well */
$oVersion = new Version($iVersionId);
if($oUser->isSuperMaintainer($oVersion->iAppId))
return true;
/* otherwise check if we maintain this specific version */
if($iVersionId)
{
$sQuery = "SELECT * FROM appMaintainers WHERE userid = '?' AND versionId = '?' AND queued = '?'";
$hResult = query_parameters($sQuery, $oUser->iUserId, $iVersionId, "false");
} else // are we maintaining any version ?
{
$sQuery = "SELECT * FROM appMaintainers WHERE userid = '?' AND queued = '?'";
$hResult = query_parameters($sQuery, $oUser->iUserId, "false");
}
if(!$hResult)
return false;
return mysql_num_rows($hResult);
}
function isUserSuperMaintainer($oUser, $iAppId = null)
{
if($iAppId)
{
$sQuery = "SELECT * FROM appMaintainers WHERE userid = '?' AND appId = '?' AND superMaintainer = '1' AND queued = '?'";
$hResult = query_parameters($sQuery, $oUser->iUserId, $iAppId, "false");
} else /* are we super maintainer of any applications? */
{
$sQuery = "SELECT * FROM appMaintainers WHERE userid = '?' AND superMaintainer = '1' AND queued = '?'";
$hResult = query_parameters($sQuery, $oUser->iUserId, "false");
}
if(!$hResult)
return false;
return mysql_num_rows($hResult);
}
/* if given an appid or a version id return a handle for a query that has */
/* the user ids that are maintainers for this particular appid or version id */
function getMaintainersForAppIdVersionId($iAppId = null, $iVersionId = null)
{
$hResult = null;
if($iVersionId)
{
$hResult = query_parameters("SELECT appMaintainers.userId
FROM appMaintainers, appVersion
WHERE appVersion.appId = appMaintainers.appId
AND appVersion.versionId = '?' AND appMaintainers.queued = 'false'",
$iVersionId);
}
/*
* If versionId was not supplied we fetch supermaintainers of application and maintainer of all versions.
*/
elseif($iAppId)
{
$hResult = query_parameters("SELECT userId
FROM appMaintainers
WHERE appId = '?' AND queued = 'false'",
$iAppId);
}
return $hResult;
}
/*
* get the userIds of super maintainers for this appId
*/
function getSuperMaintainersUserIdsFromAppId($iAppId)
{
$sQuery = "SELECT userId FROM ".
"appMaintainers WHERE appId = '?' " .
"AND superMaintainer = '1' AND queued='?';";
$hResult = query_parameters($sQuery, $iAppId, "false");
$aUserIds = array();
$c = 0;
while($oRow = mysql_fetch_object($hResult))
{
$aUserIds[$c] = $oRow->userId;
$c++;
}
return $aUserIds;
}
function ObjectOutputHeader()
{
echo " <td>Submission Date</td>\n";
echo " <td>Application Name</td>\n";
echo " <td>Version</td>\n";
echo " <td>Super maintainer?</td>\n";
echo " <td>Submitter</td>\n";
}
function ObjectOutputTableRow()
{
$oUser = new User($this->iUserId);
$oApp = new Application($this->iAppId);
$oVersion = new Version($this->iVersionId);
echo "<td>".print_date(mysqldatetime_to_unixtimestamp($this->aSubmitTime))." &nbsp;</td>\n";
echo "<td>".$oApp->sName."</td>\n";
if($this->bSuperMaintainer)
{
echo "<td>N/A</td>\n";
echo "<td>Yes</td>\n";
} else
{
echo "<td>".$oVersion->sName." &nbsp;</td>\n";
echo "<td>No</td>\n";
}
echo "<td><a href=\"mailto:".$oUser->sEmail."\">".$oUser->sRealname."</a></td>\n";
}
function ObjectDisplayQueueProcessingHelp()
{
echo "<div align=center><table width='90%' border=0 cellpadding=3 cellspacing=0><tr><td>\n\n";
echo "Please enter an accurate and personalized reply anytime a maintainer request is rejected.\n";
echo "Its not polite to reject someones attempt at trying to help out without explaining why.\n";
echo "</td></tr></table></div>\n\n";
}
function OutputEditor()
{
//view application details
echo html_frame_start("New Maintainer Form",600,"",0);
echo "<table width='100%' border=0 cellpadding=2 cellspacing=0>\n";
/**
* Show the other maintainers of this application, if there are any
*/
echo '<tr valign=top><td class=color0 style=\'text-align:right\'><b>Other maintainers of this app:</b></td>',"\n";
$bFoundMaintainers = false;
$bFirstDisplay = true; /* if false we need to fix up table rows appropriately */
/* display maintainers for the version */
$oVersion = new Version($this->iVersionId);
$aOtherUsers = $oVersion->getMaintainersUserIds();
if($aOtherUsers)
{
$bFoundMaintainers = true;
while(list($index, $iUserId) = each($aOtherUsers))
{
$oUser = new User($iUserId);
if($bFirstDisplay)
{
echo "<td>".$oUser->sRealname."</td></tr>\n";
$bFirstDisplay = false;
} else
{
echo "<tr><td class=\"color0\"></td><td>".$oUser->sRealname."</td></tr>\n";
}
}
}
/* display super maintainers for the given app */
$aOtherUsers = Maintainer::getSuperMaintainersUserIdsFromAppId($this->iAppId);
if($aOtherUsers)
{
$bFoundMaintainers = true;
while(list($index, $iUserId) = each($aOtherUsers))
{
$oUser = new User($iUserId);
if($bFirstDisplay)
{
echo "<td>".$oUser->sRealname."*</td></tr>\n";
$bFirstDisplay = false;
} else
{
echo "<tr><td class=\"color0\"></td><td>".$oUser->sRealname."*</td></tr>\n";
}
}
}
if(!$bFoundMaintainers)
{
echo "<td>No other maintainers</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>',"\n";
$bFirstDisplay = true;
$oUser = new User($this->iUserId);
$aOtherApps = Maintainer::getAppsMaintained($oUser);
if($aOtherApps)
{
while(list($index, list($iAppIdOther, $iVersionIdOther, $bSuperMaintainerOther)) = each($aOtherApps))
{
$oApp = new Application($iAppIdOther);
$oVersion = new Version($iVersionIdOther);
if($bFirstDisplay)
{
$bFirstDisplay = false;
if($bSuperMaintainerOther)
echo "<td>".$oApp->sName."*</td></tr>\n";
else
echo "<td>".$oApp->sName." ".$oVersion->sName."</td></tr>\n";
} else
{
if($bSuperMaintainerOther)
echo "<td class=color0></td><td>".$oApp->sName."*</td></tr>\n";
else
echo "<td class=color0></td><td>".$oApp->sName." ".$oVersion->sName."</td></tr>\n";
}
}
} else
{
echo "<td>User maintains no other applications</td></tr>\n";
}
$oApp = new Application($this->iAppId);
$oVersion = new Version($this->iVersionId);
//app name
echo '<tr valign=top><td class=color0 style=\'text-align:right\'><b>App Name:</b></td>',"\n";
echo "<td>".$oApp->sName."</td></tr>\n";
//version
echo '<tr valign=top><td class=color0 style=\'text-align:right\'><b>App Version:</b></td>',"\n";
echo "<td>".$oVersion->sName."</td></tr>\n";
//maintainReason
echo '<tr valign=top><td class=color0 style=\'text-align:right\'><b>Maintainer request reason:</b></td>',"\n";
echo '<td><textarea name="sMaintainReason" rows=10 cols=35>'.$this->sMaintainReason.'</textarea></td></tr>',"\n";
echo '</table>';
echo html_frame_end("&nbsp;");
}
};
?>

View File

@@ -15,8 +15,8 @@ function global_admin_menu() {
$g->addmisc("&nbsp;");
$g->add("View App Queue (".$_SESSION['current']->getQueuedAppCount()."/".$_SESSION['current']->getQueuedVersionCount().")", BASE."admin/adminAppQueue.php");
$g->add("View App Data Queue (".$_SESSION['current']->getQueuedAppDataCount().")", BASE."admin/adminAppDataQueue.php");
$g->add("View Maintainer Queue (".getQueuedMaintainerCount().")", BASE."admin/adminMaintainerQueue.php");
$g->add("View Maintainer Entries (".getMaintainerCount().")", BASE."admin/adminMaintainers.php");
$g->add("View Maintainer Queue (".Maintainer::getQueuedMaintainerCount().")", BASE."admin/adminMaintainerQueue.php");
$g->add("View Maintainer Entries (".Maintainer::getMaintainerCount().")", BASE."admin/adminMaintainers.php");
$g->add("View Bug Links (".getNumberOfQueuedBugLinks()."/".getNumberOfBugLinks().")", BASE."admin/adminBugs.php");
$g->add("View Test Results Queue (".testData::getNumberOfQueuedTests().")", BASE."admin/adminTestResults.php");

View File

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

View File

@@ -4,6 +4,7 @@
/************************************/
require_once(BASE."include/version.php");
require_once(BASE."include/maintainer.php");
require_once(BASE."include/util.php");
define(SUCCESS, 0);
@@ -187,11 +188,10 @@ class User {
*/
function delete()
{
if(!$this->isLoggedIn()) return false;
$hResult2 = query_parameters("DELETE FROM user_privs WHERE userid = '?'", $this->iUserId);
$hResult3 = query_parameters("DELETE FROM user_prefs WHERE userid = '?'", $this->iUserId);
$hResult4 = query_parameters("DELETE FROM appVotes WHERE userid = '?'", $this->iUserId);
$hResult5 = query_parameters("DELETE FROM appMaintainers WHERE userid = '?'", $this->iUserId);
$hResult5 = Maintainer::deleteMaintainer($this);
$hResult6 = query_parameters("DELETE FROM appComments WHERE userId = '?'", $this->iUserId);
return($hResult = query_parameters("DELETE FROM user_list WHERE userid = '?'", $this->iUserId));
}
@@ -246,174 +246,16 @@ class User {
}
/**
* Check if this user is a maintainer of a given appId/versionId.
*/
/* Check if this user is a maintainer of a given appId/versionId */
function isMaintainer($iVersionId=null)
{
if(!$this->isLoggedIn()) return false;
/* if we are a super maintainer, we are a maintainer of this version as well */
$oVersion = new Version($iVersionId);
if($this->isSuperMaintainer($oVersion->iAppId))
return true;
/* otherwise check if we maintain this specific version */
if($iVersionId)
{
$sQuery = "SELECT * FROM appMaintainers WHERE userid = '?' AND versionId = '?' AND queued = '?'";
$hResult = query_parameters($sQuery, $this->iUserId, $iVersionId, "false");
} else // are we maintaining any version ?
{
$sQuery = "SELECT * FROM appMaintainers WHERE userid = '?' AND queued = '?'";
$hResult = query_parameters($sQuery, $this->iUserId, "false");
}
if(!$hResult)
return false;
return mysql_num_rows($hResult);
return Maintainer::isUserMaintainer($this, $iVersionId);
}
/*
* Check if this user is a maintainer of a given appId/versionId.
*/
/* Check if this user is a maintainer of a given appId/versionId */
function isSuperMaintainer($iAppId=null)
{
if(!$this->isLoggedIn()) return false;
if($iAppId)
{
$sQuery = "SELECT * FROM appMaintainers WHERE userid = '?' AND appId = '?' AND superMaintainer = '1' AND queued = '?'";
$hResult = query_parameters($sQuery, $this->iUserId, $iAppId, "false");
} else /* are we super maintainer of any applications? */
{
$sQuery = "SELECT * FROM appMaintainers WHERE userid = '?' AND superMaintainer = '1' AND queued = '?'";
$hResult = query_parameters($sQuery, $this->iUserId, "false");
}
if(!$hResult)
return false;
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 = '?' AND appMaintainers.queued = '?' ORDER BY appName",
$this->iUserId, "false");
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;
$sQuery = "SELECT count(*) as cnt from appMaintainers WHERE userid = '?' AND superMaintainer = '?'".
" AND queued ='?'";
$hResult = query_parameters($sQuery, $this->iUserId, $bSuperMaintainer ? "1" : "0", "false");
if(!$hResult)
return 0;
$oRow = mysql_fetch_object($hResult);
return $oRow->cnt;
}
/**
* Add the user as a maintainer
*/
//FIXME: we really don't need any parameter except $iMaintainerId here
// we'll clean this up when we clean up maintainers
function addAsMaintainer($iAppId, $iVersionId, $bSuperMaintainer, $iMaintainerId)
{
$aClean = array();
$aClean['sReplyText'] = makeSafe($_REQUEST['sReplyText']);
/* if the user isn't already a supermaintainer of the application and */
/* if they are trying to become a maintainer and aren't already a maintainer of */
/* the version, then continue processing the request */
if(!$this->isSuperMaintainer($iAppId) &&
((!$bSuperMaintainer && !$this->isMaintainer($iVersionId)) | $bSuperMaintainer))
{
/* unqueue the maintainer entry */
$hResult = query_parameters("UPDATE appMaintainers SET queued='false' WHERE userId = '?' AND maintainerId = '?'",
$this->iUserId, $iMaintainerId);
if($hResult)
{
$statusMessage = "<p>The maintainer was successfully added into the database</p>\n";
$oApp = new Application($iAppId);
$oVersion = new Version($iVersionId);
//Send Status Email
$sEmail = $oUser->sEmail;
if ($sEmail)
{
$sSubject = "Application Maintainer Request Report";
$sMsg = "Your application to be the maintainer of ".$oApp->sName." ".$oVersion->sName." has been accepted. ";
$sMsg .= $aClean['sReplyText'];
$sMsg .= "We appreciate your help in making the Application Database better for all users.\n\n";
mail_appdb($sEmail, $sSubject ,$sMsg);
}
}
} else
{
//delete the item from the queue
query_parameters("DELETE from appMaintainers WHERE userId = '?' AND maintainerId = '?'",
$this->iUserId, $iMaintainerId);
if($this->isSuperMaintainer($iAppId) && !$bSuperMaintainer)
$statusMessage = "<p>User is already a super maintainer of this application</p>\n";
else
$statusMessage = "<p>User is already a maintainer/super maintainer of this application/version</p>\n";
}
return $statusMessage;
}
/* remove maintainership */
/* if $iAppId and $iVersionId are null, delete all maintainership for this user */
function deleteMaintainer($iAppId = null, $iVersionId = null)
{
/* remove supermaintainer */
if($iAppId && ($iVersionId == null))
{
$superMaintainer = 1;
$hResult = query_parameters("DELETE FROM appMaintainers WHERE userId = '?'
AND appId = '?' AND superMaintainer = '?'",
$this->iUserId, $iAppId, $superMaintainer);
} else if($iAppId && $iVersionId) /* remove a normal maintainer */
{
$superMaintainer = 0;
$hResult = query_parameters("DELETE FROM appMaintainers WHERE userId = '?'
AND appId = '?' AND versionId = '?' AND superMaintainer = '?'",
$this->iUserId, $iAppId, $iVersionId, $superMaintainer);
} else if(($iAppId == null) && ($iVersionId == null)) /* remove all maintainership by this user */
{
$hResult = query_parameters("DELETE FROM appMaintainers WHERE userId = '?'", $this->iUserId);
}
if($hResult)
return true;
return false;
return Maintainer::isUserSuperMaintainer($this, $iAppId);
}
/* get the number of queued applications */
@@ -717,10 +559,8 @@ class User {
$oRow = mysql_fetch_object($hResult);
if($oRow->c != 0) return true;
$hResult = query_parameters("SELECT count(userId) as c FROM appMaintainers WHERE userId = '?'",
$this->iUserId);
$oRow = mysql_fetch_object($hResult);
if($oRow->c != 0) return true;
if($this->isMaintainer() || $this->isSuperMaintainer())
return true;
$hResult = query_parameters("SELECT count(userId) as c FROM appVotes WHERE userId = '?'",
$this->iUserId);
@@ -841,27 +681,7 @@ class User {
/*
* Retrieve version maintainers.
*/
/*
* If versionId was supplied we fetch supermaintainers of application and maintainer of version.
*/
if($iVersionId)
{
$hResult = query_parameters("SELECT appMaintainers.userId
FROM appMaintainers, appVersion
WHERE appVersion.appId = appMaintainers.appId
AND appVersion.versionId = '?' AND appMaintainers.queued = 'false'",
$iVersionId);
}
/*
* If versionId was not supplied we fetch supermaintainers of application and maintainer of all versions.
*/
elseif($iAppId)
{
$hResult = query_parameters("SELECT userId
FROM appMaintainers
WHERE appId = '?' AND queued = 'false'",
$iAppId);
}
$hResult = Maintainer::getMaintainersForAppIdVersionId($iAppId, $iVersionId);
if($hResult)
{

View File

@@ -184,24 +184,6 @@ function make_maintainer_rating_list($varname, $cvalue)
echo "</select>\n";
}
/* get the number of queued maintainers */
function getQueuedMaintainerCount()
{
$sQuery = "SELECT count(*) as queued_maintainers FROM appMaintainers where queued='true'";
$hResult = query_parameters($sQuery);
$oRow = mysql_fetch_object($hResult);
return $oRow->queued_maintainers;
}
/* get the total number of maintainers and applications in the appMaintainers table */
function getMaintainerCount()
{
$sQuery = "SELECT count(*) as maintainers FROM appMaintainers where queued='false'";
$hResult = query_parameters($sQuery);
$oRow = mysql_fetch_object($hResult);
return $oRow->maintainers;
}
/* get the total number of vendors from the vendor table */
function getVendorCount()
{
@@ -227,13 +209,6 @@ function getNumberOfVersions()
return $oRow->num_versions;
}
/* Get the number of maintainers in the database */
function getNumberOfMaintainers()
{
$hResult = query_parameters("SELECT DISTINCT userId FROM appMaintainers WHERE queued='false';");
return mysql_num_rows($hResult);
}
/* Get the number of app familes in the database */
function getNumberOfAppFamilies()
{

View File

@@ -305,8 +305,8 @@ class Version {
// remove any maintainers for this version so we don't orphan them
$hResult = query_parameters("DELETE from appMaintainers WHERE versionId='?'", $this->iVersionId);
if(!$hResult)
$result = Maintainer::deleteMaintainersForVersion($this);
if(!$result)
{
addmsg("Error removing version maintainers for the deleted version!", "red");
}
@@ -665,7 +665,7 @@ class Version {
echo "<tr class=\"color0\"><td align=\"left\" colspan=\"2\"><b>Maintainers of this version:</b>\n";
echo "<table width=\"250\" border=\"0\">";
$aMaintainers = $this->getMaintainersUserIds();
$aSupermaintainers = getSuperMaintainersUserIdsFromAppId($this->iAppId);
$aSupermaintainers = Maintainer::getSuperMaintainersUserIdsFromAppId($this->iAppId);
$aAllMaintainers = array_merge($aMaintainers,$aSupermaintainers);
$aAllMaintainers = array_unique($aAllMaintainers);
if(sizeof($aAllMaintainers)>0)
@@ -940,9 +940,7 @@ class Version {
if($this->iVersionId == 0)
return $aMaintainers;
$sQuery = "SELECT userId FROM ".
"appMaintainers WHERE versionId = '?';";
$hResult = query_parameters($sQuery, $this->iVersionId);
$hResult = Maintainer::getMaintainersForAppIdVersionId(null, $this->iVersionId);
$iCount = 0;
while($oRow = mysql_fetch_object($hResult))
{