Alexander Nicolaysen Sørnes : bug: Allow admins to only show queued links for versions they maintain
Alexander Nicolaysen Sørnes
asornes at winehq.org
Fri Jan 1 08:25:19 CST 2010
Module: appdb
Branch: master
Commit: a45cbc01130b5dae9390cea2183a24c3b5bf37cf
URL: http://source.winehq.org/git/appdb.git/?a=commit;h=a45cbc01130b5dae9390cea2183a24c3b5bf37cf
Author: Alexander Nicolaysen Sørnes <alex at thehandofagony.com>
Date: Fri Jan 1 15:24:41 2010 +0100
bug: Allow admins to only show queued links for versions they maintain
---
include/bugs.php | 112 ++++++++++++++++++++++++++++++++++++++++++++++++++----
1 files changed, 104 insertions(+), 8 deletions(-)
diff --git a/include/bugs.php b/include/bugs.php
index 9f59fa9..b07a3ca 100644
--- a/include/bugs.php
+++ b/include/bugs.php
@@ -406,6 +406,7 @@ class Bug
return null;
$oFilter->AddFilterInfo('onlyWithoutMaintainers', 'Only show bug links for versions without maintainers', array(FILTER_OPTION_BOOL), FILTER_VALUES_OPTION_BOOL, array('false','true'));
+ $oFilter->AddFilterInfo('onlyMyMaintainedEntries', 'Only show bug links for versions you maintain', array(FILTER_OPTION_BOOL), FILTER_VALUES_OPTION_BOOL, array('false','true'));
return $oFilter;
}
@@ -413,8 +414,24 @@ class Bug
function objectGetEntries($sState, $iRows = 0, $iStart = 0, $sOrderBy = '', $bAscending = true, $oFilters = null)
{
$sExtraTables = '';
- $aOptions = $oFilters ? $oFilters->getOptions() : array('onlyWithoutMaintainers' => 'false');
+ $aOptions = $oFilters ? $oFilters->getOptions() : array('onlyWithoutMaintainers' => 'false', 'onlyMyMaintainedEntries' => 'false');
$sWhereFilter = '';
+ $bOnlyMyMaintainedEntries = false;
+
+ $oBug = new bug();
+
+ if(getInput('onlyMyMaintainedEntries', $aOptions) == 'true'
+ || ($sState != 'accepted' && !$oBug->canEdit()))
+ {
+ $bOnlyMyMaintainedEntries = true;
+ }
+
+ /* This combination doesn't make sense */
+ if(getInput('onlyWithoutMaintainers', $aOptions) == 'true'
+ && getInput('onlyMyMaintainedEntries', $aOptions) == 'true')
+ {
+ return false;
+ }
if(getInput('onlyWithoutMaintainers', $aOptions) == 'true')
{
@@ -423,24 +440,70 @@ class Bug
$sWhereFilter .= " AND appVersion.hasMaintainer = 'false' AND appVersion.versionId = buglinks.versionId";
}
- $sLimit = "";
-
/* Selecting 0 rows makes no sense, so we assume the user
wants to select all of them
after an offset given by iStart */
if(!$iRows)
$iRows = bug::objectGetEntriesCount($sState, $oFilters);
- $sQuery = "select * from buglinks$sExtraTables where buglinks.state = '?'$sWhereFilter LIMIT ?, ?";
- $hResult = query_parameters($sQuery, $sState, $iStart, $iRows);
+ if($bOnlyMyMaintainedEntries)
+ {
+ $sQuery = "SELECT buglinks.* FROM buglinks, appVersion,
+ appMaintainers WHERE
+ buglinks.versionId = appVersion.versionId
+ AND
+ appMaintainers.userId = '?'
+ AND
+ (
+ (
+ appMaintainers.superMaintainer = '1'
+ AND
+ appMaintainers.appId = appVersion.appid
+ )
+ OR
+ (
+ appMaintainers.superMaintainer = '0'
+ AND
+ appMaintainers.versionId = appVersion.versionId
+ )
+ )
+ AND
+ appMaintainers.state = 'accepted'
+ AND
+ buglinks.state = '?'$sWhereFilter LIMIT ?,?";
+
+ $hResult = query_parameters($sQuery, $_SESSION['current']->iUserId,
+ $sState, $iStart, $iRows);
+ } else
+ {
+ $sQuery = "select * from buglinks$sExtraTables where buglinks.state = '?'$sWhereFilter LIMIT ?, ?";
+ $hResult = query_parameters($sQuery, $sState, $iStart, $iRows);
+ }
+
return $hResult;
}
function objectGetEntriesCount($sState, $oFilters = null)
{
$sExtraTables = '';
- $aOptions = $oFilters ? $oFilters->getOptions() : array('onlyWithoutMaintainers' => 'false');
+ $aOptions = $oFilters ? $oFilters->getOptions() : array('onlyWithoutMaintainers' => 'false', 'onlyMyMaintainedEntries' => 'false');
$sWhereFilter = '';
+ $bOnlyMyMaintainedEntries = false;
+
+ $oBug = new bug();
+
+ if(getInput('onlyMyMaintainedEntries', $aOptions) == 'true'
+ || ($sState != 'accepted' && !$oBug->canEdit()))
+ {
+ $bOnlyMyMaintainedEntries = true;
+ }
+
+ /* This combination doesn't make sense */
+ if(getInput('onlyWithoutMaintainers', $aOptions) == 'true'
+ && getInput('onlyMyMaintainedEntries', $aOptions) == 'true')
+ {
+ return false;
+ }
if(getInput('onlyWithoutMaintainers', $aOptions) == 'true')
{
@@ -449,9 +512,42 @@ class Bug
$sWhereFilter .= " AND appVersion.hasMaintainer = 'false' AND appVersion.versionId = buglinks.versionId";
}
- $sQuery = "select count(*) as cnt from buglinks$sExtraTables where buglinks.state = '?'$sWhereFilter";
- $hResult = query_parameters($sQuery, $sState);
+ if($bOnlyMyMaintainedEntries)
+ {
+ $sQuery = "SELECT COUNT(buglinks.linkId) as cnt FROM buglinks, appVersion,
+ appMaintainers WHERE
+ buglinks.versionId = appVersion.versionId
+ AND
+ appMaintainers.userId = '?'
+ AND
+ (
+ (
+ appMaintainers.superMaintainer = '1'
+ AND
+ appMaintainers.appId = appVersion.appid
+ )
+ OR
+ (
+ appMaintainers.superMaintainer = '0'
+ AND
+ appMaintainers.versionId = appVersion.versionId
+ )
+ )
+ AND
+ appMaintainers.state = 'accepted'
+ AND
+ buglinks.state = '?'$sWhereFilter";
+
+ $hResult = query_parameters($sQuery, $_SESSION['current']->iUserId,
+ $sState);
+ } else
+ {
+ $sQuery = "select count(*) as cnt from buglinks$sExtraTables where buglinks.state = '?'$sWhereFilter";
+ $hResult = query_parameters($sQuery, $sState);
+ }
+
$oRow = mysql_fetch_object($hResult);
+
return $oRow->cnt;
}
More information about the wine-cvs
mailing list