Module: appdb Branch: master Commit: d759c2cc56d98b7d1d4208be9731d05db46d4430 URL: http://source.winehq.org/git/appdb.git/?a=commit;h=d759c2cc56d98b7d1d4208be9...
Author: Alexander Nicolaysen Sørnes alex@thehandofagony.com Date: Sun Aug 9 17:52:54 2009 +0200
screenshot: Allow filtering by category when browsing
---
include/appData.php | 41 ++++++++++++++++++++++++++++++++--------- include/screenshot.php | 27 +++++++++++++++++++++++---- 2 files changed, 55 insertions(+), 13 deletions(-)
diff --git a/include/appData.php b/include/appData.php index bc3142e..91c0e58 100644 --- a/include/appData.php +++ b/include/appData.php @@ -226,13 +226,24 @@ class appData return $hResult; }
- function objectGetEntriesCount($sState, $sType = null) + function objectGetEntriesCount($sState, $sType = null, $oFilters = null) { /* Not implemented for appData */ if($sState == 'rejected') return FALSE;
$sSelectType = ""; + $sWhereFilter = ''; + + if($oFilters) + { + $aOptions = $oFilters->getOptions(); + if($aOptions['appCategory']) + { + $oCategory = new category($aOptions['appCategory']); + $sWhereFilter .= ' AND ' . $oCategory->getSqlQueryPart(); + } + }
if(($sState != 'accepted') && !$_SESSION['current']->hasPriv("admin")) @@ -275,7 +286,7 @@ class appData AND appVersion.state = 'accepted' AND - appFamily.state = 'accepted'"; + appFamily.state = 'accepted'$sWhereFilter";
if($sState != 'all') $sQuery .= " AND appData.state = '$sState'"; @@ -307,7 +318,7 @@ class appData appData.versionId = '0' ) AND - appFamily.state = 'accepted'$sAppDataQueued$sSelectType) UNION + appFamily.state = 'accepted'$sAppDataQueued$sSelectType$sWhereFilter) UNION ( SELECT COUNT(DISTINCT appData.id) as count FROM appData, appFamily, appVersion WHERE @@ -319,7 +330,7 @@ class appData AND appVersion.state = 'accepted' AND - appFamily.state = 'accepted'$sAppDataQueued$sSelectType)"; + appFamily.state = 'accepted'$sAppDataQueued$sSelectType$sWhereFilter)";
if($sType) $hResult = query_parameters($sQuery, $sType, $sType); @@ -346,7 +357,7 @@ class appData return $oTableRow; }
- function objectGetEntries($sState, $iRows = 0, $iStart = 0, $sOrderBy = '', $bAscending = true, $sType = null) + function objectGetEntries($sState, $iRows = 0, $iStart = 0, $sOrderBy = '', $bAscending = true, $sType = null, $oFilters = null) { /* Not implemented for appData */ if($sState == 'rejected') @@ -354,6 +365,17 @@ class appData
$sSelectType = ""; $sLimit = ""; + $sWhereFilter = ''; + + if($oFilters) + { + $aOptions = $oFilters->getOptions(); + if($aOptions['appCategory']) + { + $oCategory = new category($aOptions['appCategory']); + $sWhereFilter .= ' AND ' . $oCategory->getSqlQueryPart(); + } + }
if($sState != 'accepted' && !$_SESSION['current']->hasPriv("admin")) { @@ -402,6 +424,7 @@ class appData appData.state = '?' AND appData.type = '?' + $sWhereFilter ORDER BY appFamily.appName"; if(!$iRows && !$iStart) { @@ -410,7 +433,7 @@ class appData } else { if(!$iRows) - $iRows = appData::objectGetEntriesCount($sState, $sType); + $iRows = appData::objectGetEntriesCount($sState, $sType, $oFilters); $sQuery .= " LIMIT ?,?"; $hResult = query_parameters($sQuery, $_SESSION['current']->iUserId, $sState, $sType, @@ -435,7 +458,7 @@ class appData AND appData.state = '?' AND - appData.type = '?' ORDER BY appFamily.appName $sLimit + appData.type = '?' $sWhereFilter ORDER BY appFamily.appName $sLimit ) UNION ( @@ -453,7 +476,7 @@ class appData AND appData.state = '?' AND - appData.type = '?' ORDER BY appFamily.appName $sLimit + appData.type = '?' $sWhereFilter ORDER BY appFamily.appName $sLimit )"; if(!$iRows && !$iStart) { @@ -462,7 +485,7 @@ class appData } else { if(!$iRows) - $iRows = appData::objectGetEntriesCount($sState, $sType); + $iRows = appData::objectGetEntriesCount($sState, $sType, $oFilters); $hResult = query_parameters($sQuery, $sState, $sType, $iStart, $iRows, $sState, $sType, diff --git a/include/screenshot.php b/include/screenshot.php index 2f542f5..6e2ccf9 100644 --- a/include/screenshot.php +++ b/include/screenshot.php @@ -668,15 +668,34 @@ class screenshot echo "</tr></table></div><br>\n"; }
- function objectGetEntries($sState, $iRows = 0, $iStart = 0, $sOrderBy = '', $bAscending = true) + public function objectGetFilterInfo() + { + $oFilter = new filterInterface(); + + $aCatNames = array(); + $aCatIds = array(); + + $aCategories = category::getOrderedList(); + foreach($aCategories as $oCategory) + { + $aCatNames[] = $oCategory->sName; + $aCatIds[] = $oCategory->objectGetId(); + } + + $oFilter->addFilterInfo('appCategory', 'App category', array(FILTER_OPTION_ENUM), FILTER_VALUES_OPTION_ENUM, $aCatIds, $aCatNames); + + return $oFilter; + } + + function objectGetEntries($sState, $iRows = 0, $iStart = 0, $sOrderBy = '', $bAscending = true, $oFilters = true) { return appData::objectGetEntries($sState, $iRows, $iStart, $sOrderBy, $bAscending, - 'screenshot'); + 'screenshot', $oFilters); }
- function objectGetEntriesCount($sState) + function objectGetEntriesCount($sState, $oFilters = true) { - return appData::objectGetEntriesCount($sState, 'screenshot'); + return appData::objectGetEntriesCount($sState, 'screenshot', $oFilters); }
function objectGetHeader()