Allow marking versions as obsolete
This commit is contained in:
committed by
WineHQ
parent
4d65a32e17
commit
d2a53b510c
@@ -96,10 +96,15 @@ class Application {
|
||||
}
|
||||
}
|
||||
|
||||
function _internal_retrieve_all_versions()
|
||||
function _internal_retrieve_all_versions($bIncludeObsolete = TRUE)
|
||||
{
|
||||
if(!$bIncludeObsolete)
|
||||
$sObsolete = " AND obsoleteBy = '0'";
|
||||
else
|
||||
$sObsolete = "";
|
||||
|
||||
$sQuery = "SELECT versionId FROM appVersion WHERE
|
||||
appId = '?'";
|
||||
appId = '?'$sObsolete";
|
||||
$hResult = query_parameters($sQuery, $this->iAppId);
|
||||
return $hResult;
|
||||
}
|
||||
@@ -986,11 +991,11 @@ class Application {
|
||||
return $oRow->count;
|
||||
}
|
||||
|
||||
function getVersions()
|
||||
function getVersions($bIncludeObsolete = TRUE)
|
||||
{
|
||||
$aVersions = array();
|
||||
|
||||
$hResult = $this->_internal_retrieve_all_versions();
|
||||
$hResult = $this->_internal_retrieve_all_versions($bIncludeObsolete);
|
||||
|
||||
while($oRow = mysql_fetch_object($hResult))
|
||||
$aVersions[] = new version($oRow->versionId);
|
||||
@@ -998,6 +1003,29 @@ class Application {
|
||||
return $aVersions;
|
||||
}
|
||||
|
||||
/* Make a drop-down list of this application's versions. Optionally set the default
|
||||
versionId, a version to exclude and whether to not show obsolete versions */
|
||||
function makeVersionDropDownList($sVarName, $iCurrentId = null, $iExclude = null, $bIncludeObsolete = TRUE)
|
||||
{
|
||||
$sMsg = "<select name=\"$sVarName\">\n";
|
||||
foreach($this->getVersions() as $oVersion)
|
||||
{
|
||||
if($oVersion->sQueued != "false" || $oVersion->iVersionId == $iExclude ||
|
||||
(!$bIncludeObsolete && $oVersion->iObsoleteBy))
|
||||
continue;
|
||||
|
||||
$sMsg .= "<option value=\"".$oVersion->iVersionId."\"";
|
||||
|
||||
if($oVersion->iVersionId == $iCurrentId)
|
||||
$sMsg .= " selected=\"selected\"";
|
||||
|
||||
$sMsg .= ">".$oVersion->sName."</option>\n";
|
||||
}
|
||||
$sMsg .= "</select>\n";
|
||||
|
||||
return $sMsg;
|
||||
}
|
||||
|
||||
function objectGetChildren()
|
||||
{
|
||||
$aChildren = array();
|
||||
|
||||
@@ -33,6 +33,8 @@ class version {
|
||||
var $iSubmitterId;
|
||||
var $sQueued;
|
||||
var $sLicense;
|
||||
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.
|
||||
Indicates whether the user wants to become a
|
||||
maintainer of the version being submitted.
|
||||
@@ -71,6 +73,7 @@ class version {
|
||||
$this->sTestedRating = $oRow->maintainer_rating;
|
||||
$this->sQueued = $oRow->queued;
|
||||
$this->sLicense = $oRow->license;
|
||||
$this->iObsoleteBy = $oRow->obsoleteBy;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -200,6 +203,23 @@ class version {
|
||||
"$this->sLicense.\n\n";
|
||||
}
|
||||
|
||||
if($this->iObsoleteBy != $oVersion->iObsoleteBy)
|
||||
{
|
||||
if(!query_parameters("UPDATE appVersion SET obsoleteBy = '?' WHERE versionId = '?'",
|
||||
$this->iObsoleteBy, $this->iVersionId))
|
||||
|
||||
if($this->iObsoleteBy)
|
||||
$sWhatChanged .= "The version was marked as obsolete.\n\n";
|
||||
else
|
||||
$sWhatChanged .= "The version is no longer marked as obsolete.\n\n";
|
||||
|
||||
if($this->iObsoleteBy)
|
||||
{
|
||||
query_parameters("UPDATE appVotes SET versionId = '?' WHERE versionId = '?'",
|
||||
$this->iObsoleteBy, $this->iVersionId);
|
||||
}
|
||||
}
|
||||
|
||||
if($sWhatChanged and !$bSilent)
|
||||
$this->SendNotificationMail("edit",$sWhatChanged);
|
||||
return true;
|
||||
@@ -460,6 +480,26 @@ class version {
|
||||
return $aBuglinkIds;
|
||||
}
|
||||
|
||||
/* Makes a frame with title 'Mark as obsolete' and info about what it means, plus
|
||||
caller-defined content */
|
||||
function makeObsoleteFrame($sContent = "")
|
||||
{
|
||||
$sMsg = html_frame_start("Mark as obsolete", "90%", "", 0);
|
||||
|
||||
$sMsg .= "Some applications need to be updated from time to time in order to ";
|
||||
$sMsg .= "be of any use. An example is online multi-player games, where you need ";
|
||||
$sMsg .= "to be running a version compatible with the server. ";
|
||||
$sMsg .= "If this is such an application, and this version is no longer usable, ";
|
||||
$sMsg .= "you can mark it as obsolete and move its current votes to a usable ";
|
||||
$sMsg .= "version instead.<br /><br />";
|
||||
|
||||
$sMsg .= $sContent;
|
||||
|
||||
$sMsg .= html_frame_end();
|
||||
|
||||
return $sMsg;
|
||||
}
|
||||
|
||||
/* output html and the current versions information for editing */
|
||||
/* if $editParentApplication is true that means we need to display fields */
|
||||
/* to let the user change the parent application of this version */
|
||||
@@ -588,6 +628,32 @@ class version {
|
||||
echo $oTable->GetString();
|
||||
|
||||
echo html_frame_end();
|
||||
|
||||
/* Mark as obsolete */
|
||||
$oApp = new application($this->iAppId);
|
||||
$oVersionInDB = new version($this->iVersionId);
|
||||
|
||||
if($oVersionInDB->iObsoleteBy)
|
||||
{
|
||||
$sObsoleteTxt = "<input type=\"checkbox\" name=\"bObsolete\" value=\"true\" checked=\"checked\" />";
|
||||
$sObsoleteTxt .= " This version is obsolete";
|
||||
echo $this->makeObsoleteFrame($sObsoleteTxt);
|
||||
|
||||
echo "<input type=\"hidden\" name=\"iObsoleteBy\" value=\"".
|
||||
$oVersionInDB->iObsoleteBy."\" type=\"hidden\" />\n";
|
||||
} else if(sizeof($oApp->getVersions(FALSE)) > 1)
|
||||
{
|
||||
if($this->iObsoleteBy)
|
||||
$sObsolete = "checked=\"checked\"";
|
||||
else
|
||||
$sObsolete = "";
|
||||
|
||||
$sObsoleteTxt = "<input type=\"checkbox\" name=\"bObsolete\" value=\"true\"$sObsolete />";
|
||||
$sObsoleteTxt .= "Mark as obsolete and move votes to \n";
|
||||
$sObsoleteTxt .= $oApp->makeVersionDropDownList("iObsoleteBy", $this->iObsoleteBy, $this->iVersionId, FALSE);
|
||||
|
||||
echo $this->makeObsoleteFrame($sObsoleteTxt);
|
||||
}
|
||||
} else
|
||||
{
|
||||
echo '<input type="hidden" name="sMaintainerRating" value="'.$this->sTestedRating.'" />';
|
||||
@@ -620,6 +686,11 @@ class version {
|
||||
$this->sTestedRelease = $aValues['sMaintainerRelease'];
|
||||
$this->sLicense = $aValues['sLicense'];
|
||||
$this->iMaintainerRequest = $aValues['iMaintainerRequest'];
|
||||
|
||||
if($aValues['bObsolete'] == "true")
|
||||
$this->iObsoleteBy = $aValues['iObsoleteBy'];
|
||||
else
|
||||
$this->iObsoleteBy = 0;
|
||||
}
|
||||
|
||||
function display($iTestingId)
|
||||
|
||||
@@ -117,29 +117,37 @@ function vote_menu()
|
||||
|
||||
$m = new htmlmenu("Votes","updatevote.php");
|
||||
|
||||
$votes = vote_get_user_votes();
|
||||
$oVersion = new version($aClean['iVersionId']);
|
||||
|
||||
for($i = 1;$i <= MAX_VOTES; $i++)
|
||||
if($oVersion->iObsoleteBy)
|
||||
{
|
||||
if(isset($votes[$i]))
|
||||
$str = Version::fullNameLink($votes[$i]->versionId);
|
||||
else
|
||||
$str = "No App Selected";
|
||||
$m->add("This version is marked as obsolete, so you cannot vote for it.");
|
||||
} else
|
||||
{
|
||||
$votes = vote_get_user_votes();
|
||||
|
||||
$m->add("<input type=radio name=iSlot value='$i'> $str");
|
||||
for($i = 1;$i <= MAX_VOTES; $i++)
|
||||
{
|
||||
if(isset($votes[$i]))
|
||||
$str = Version::fullNameLink($votes[$i]->versionId);
|
||||
else
|
||||
$str = "No App Selected";
|
||||
|
||||
$m->add("<input type=radio name=iSlot value='$i'> $str");
|
||||
}
|
||||
|
||||
$m->addmisc(" ");
|
||||
|
||||
$m->add("<input type=submit name=sClear value=' Clear Vote ' class=votebutton>");
|
||||
$m->add("<input type=submit name=sVote value='Vote for App' class=votebutton>");
|
||||
|
||||
$m->addmisc("<input type=hidden name=iVersionId value={$aClean['iVersionId']}>");
|
||||
|
||||
$m->add("View Results", BASE."votestats.php");
|
||||
$m->add("Voting Help", BASE."help/?sTopic=voting");
|
||||
}
|
||||
|
||||
$m->addmisc(" ");
|
||||
|
||||
$m->add("<input type=submit name=sClear value=' Clear Vote ' class=votebutton>");
|
||||
$m->add("<input type=submit name=sVote value='Vote for App' class=votebutton>");
|
||||
|
||||
$m->addmisc("<input type=hidden name=iVersionId value={$aClean['iVersionId']}>");
|
||||
|
||||
$m->add("View Results", BASE."votestats.php");
|
||||
$m->add("Voting Help", BASE."help/?sTopic=voting");
|
||||
|
||||
$m->done(1);
|
||||
$m->done(1);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -60,6 +60,7 @@ create table appVersion (
|
||||
submitterId int(11) NOT NULL default '0',
|
||||
queued enum('true','false','rejected') NOT NULL default 'false',
|
||||
license enum('Retail','Open Source','Freeware','Demo','Shareware'),
|
||||
obsoleteBy int(11) NOT NULL default '0',
|
||||
key(versionId),
|
||||
index(appId)
|
||||
);
|
||||
|
||||
Reference in New Issue
Block a user