Module: appdb Branch: master Commit: 2767903605ef2d591a324b71b7d15404240fc9f9 URL: http://source.winehq.org/git/appdb.git/?a=commit;h=2767903605ef2d591a324b71b...
Author: Alexander Nicolaysen Sørnes <alexander@linux-xqqm.(none)> Date: Fri Dec 4 23:09:06 2009 +0100
bug link queue: Allow showing only entries for umaintained versions
---
include/bugs.php | 45 ++++++++++++++++++++++++++++++++++++++++----- 1 files changed, 40 insertions(+), 5 deletions(-)
diff --git a/include/bugs.php b/include/bugs.php index 4e294a5..9f59fa9 100644 --- a/include/bugs.php +++ b/include/bugs.php @@ -397,24 +397,59 @@ class Bug return $this->iLinkId; }
- function objectGetEntries($sState, $iRows = 0, $iStart = 0, $sOrderBy = '', $bAscending = true) + public function objectGetFilterInfo() { + $oFilter = new FilterInterface(); + + /* The following filters are only useful for admins */ + if(!$_SESSION['current']->hasPriv('admin')) + return null; + + $oFilter->AddFilterInfo('onlyWithoutMaintainers', 'Only show bug links for versions without maintainers', array(FILTER_OPTION_BOOL), FILTER_VALUES_OPTION_BOOL, array('false','true')); + + return $oFilter; + } + + function objectGetEntries($sState, $iRows = 0, $iStart = 0, $sOrderBy = '', $bAscending = true, $oFilters = null) + { + $sExtraTables = ''; + $aOptions = $oFilters ? $oFilters->getOptions() : array('onlyWithoutMaintainers' => 'false'); + $sWhereFilter = ''; + + if(getInput('onlyWithoutMaintainers', $aOptions) == 'true') + { + $sExtraTables = ',appVersion'; + + $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); + $iRows = bug::objectGetEntriesCount($sState, $oFilters);
- $sQuery = "select * from buglinks where state = '?' LIMIT ?, ?"; + $sQuery = "select * from buglinks$sExtraTables where buglinks.state = '?'$sWhereFilter LIMIT ?, ?"; $hResult = query_parameters($sQuery, $sState, $iStart, $iRows); return $hResult; }
- function objectGetEntriesCount($sState) + function objectGetEntriesCount($sState, $oFilters = null) { - $sQuery = "select count(*) as cnt from buglinks where state = '?'"; + $sExtraTables = ''; + $aOptions = $oFilters ? $oFilters->getOptions() : array('onlyWithoutMaintainers' => 'false'); + $sWhereFilter = ''; + + if(getInput('onlyWithoutMaintainers', $aOptions) == 'true') + { + $sExtraTables = ',appVersion'; + + $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); $oRow = mysql_fetch_object($hResult); return $oRow->cnt;