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; return $hResult;
} }
function objectGetEntriesCount($sState, $sType = null) function objectGetEntriesCount($sState, $sType = null, $oFilters = null)
{ {
/* Not implemented for appData */ /* Not implemented for appData */
if($sState == 'rejected') if($sState == 'rejected')
return FALSE; return FALSE;
$sSelectType = ""; $sSelectType = "";
$sWhereFilter = '';
if($oFilters)
{
$aOptions = $oFilters->getOptions();
if($aOptions['appCategory'])
{
$oCategory = new category($aOptions['appCategory']);
$sWhereFilter .= ' AND ' . $oCategory->getSqlQueryPart();
}
}
if(($sState != 'accepted') && if(($sState != 'accepted') &&
!$_SESSION['current']->hasPriv("admin")) !$_SESSION['current']->hasPriv("admin"))
@@ -275,7 +286,7 @@ class appData
AND AND
appVersion.state = 'accepted' appVersion.state = 'accepted'
AND AND
appFamily.state = 'accepted'"; appFamily.state = 'accepted'$sWhereFilter";
if($sState != 'all') if($sState != 'all')
$sQuery .= " AND appData.state = '$sState'"; $sQuery .= " AND appData.state = '$sState'";
@@ -307,7 +318,7 @@ class appData
appData.versionId = '0' appData.versionId = '0'
) )
AND AND
appFamily.state = 'accepted'$sAppDataQueued$sSelectType) UNION appFamily.state = 'accepted'$sAppDataQueued$sSelectType$sWhereFilter) UNION
( (
SELECT COUNT(DISTINCT appData.id) as count FROM appData, SELECT COUNT(DISTINCT appData.id) as count FROM appData,
appFamily, appVersion WHERE appFamily, appVersion WHERE
@@ -319,7 +330,7 @@ class appData
AND AND
appVersion.state = 'accepted' appVersion.state = 'accepted'
AND AND
appFamily.state = 'accepted'$sAppDataQueued$sSelectType)"; appFamily.state = 'accepted'$sAppDataQueued$sSelectType$sWhereFilter)";
if($sType) if($sType)
$hResult = query_parameters($sQuery, $sType, $sType); $hResult = query_parameters($sQuery, $sType, $sType);
@@ -346,7 +357,7 @@ class appData
return $oTableRow; 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 */ /* Not implemented for appData */
if($sState == 'rejected') if($sState == 'rejected')
@@ -354,6 +365,17 @@ class appData
$sSelectType = ""; $sSelectType = "";
$sLimit = ""; $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")) if($sState != 'accepted' && !$_SESSION['current']->hasPriv("admin"))
{ {
@@ -402,6 +424,7 @@ class appData
appData.state = '?' appData.state = '?'
AND AND
appData.type = '?' appData.type = '?'
$sWhereFilter
ORDER BY appFamily.appName"; ORDER BY appFamily.appName";
if(!$iRows && !$iStart) if(!$iRows && !$iStart)
{ {
@@ -410,7 +433,7 @@ class appData
} else } else
{ {
if(!$iRows) if(!$iRows)
$iRows = appData::objectGetEntriesCount($sState, $sType); $iRows = appData::objectGetEntriesCount($sState, $sType, $oFilters);
$sQuery .= " LIMIT ?,?"; $sQuery .= " LIMIT ?,?";
$hResult = query_parameters($sQuery, $_SESSION['current']->iUserId, $hResult = query_parameters($sQuery, $_SESSION['current']->iUserId,
$sState, $sType, $sState, $sType,
@@ -435,7 +458,7 @@ class appData
AND AND
appData.state = '?' appData.state = '?'
AND AND
appData.type = '?' ORDER BY appFamily.appName $sLimit appData.type = '?' $sWhereFilter ORDER BY appFamily.appName $sLimit
) )
UNION UNION
( (
@@ -453,7 +476,7 @@ class appData
AND AND
appData.state = '?' appData.state = '?'
AND AND
appData.type = '?' ORDER BY appFamily.appName $sLimit appData.type = '?' $sWhereFilter ORDER BY appFamily.appName $sLimit
)"; )";
if(!$iRows && !$iStart) if(!$iRows && !$iStart)
{ {
@@ -462,7 +485,7 @@ class appData
} else } else
{ {
if(!$iRows) if(!$iRows)
$iRows = appData::objectGetEntriesCount($sState, $sType); $iRows = appData::objectGetEntriesCount($sState, $sType, $oFilters);
$hResult = query_parameters($sQuery, $sState, $sType, $hResult = query_parameters($sQuery, $sState, $sType,
$iStart, $iRows, $iStart, $iRows,
$sState, $sType, $sState, $sType,

View File

@@ -668,15 +668,34 @@ class screenshot
echo "</tr></table></div><br>\n"; 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, $oFilter = new filterInterface();
'screenshot');
$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 objectGetEntriesCount($sState) 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() function objectGetHeader()