Alexander Nicolaysen Sørnes : screenshot : Allow filtering by category when browsing
Alexander Nicolaysen Sørnes
asornes at winehq.org
Sun Aug 9 10:53:18 CDT 2009
Module: appdb
Branch: master
Commit: d759c2cc56d98b7d1d4208be9731d05db46d4430
URL: http://source.winehq.org/git/appdb.git/?a=commit;h=d759c2cc56d98b7d1d4208be9731d05db46d4430
Author: Alexander Nicolaysen Sørnes <alex at 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()
More information about the wine-cvs
mailing list