screenshot: Allow filtering by category when browsing

This commit is contained in:
Alexander Nicolaysen Sørnes
2009-08-09 17:52:54 +02:00
parent 0fe5512f08
commit d759c2cc56
2 changed files with 56 additions and 14 deletions

View File

@@ -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,

View File

@@ -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()
{
return appData::objectGetEntries($sState, $iRows, $iStart, $sOrderBy, $bAscending,
'screenshot');
$oFilter = new filterInterface();
$aCatNames = array();
$aCatIds = array();
$aCategories = category::getOrderedList();
foreach($aCategories as $oCategory)
{
$aCatNames[] = $oCategory->sName;
$aCatIds[] = $oCategory->objectGetId();
}
function objectGetEntriesCount($sState)
$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::objectGetEntriesCount($sState, 'screenshot');
return appData::objectGetEntries($sState, $iRows, $iStart, $sOrderBy, $bAscending,
'screenshot', $oFilters);
}
function objectGetEntriesCount($sState, $oFilters = true)
{
return appData::objectGetEntriesCount($sState, 'screenshot', $oFilters);
}
function objectGetHeader()