public function getIdsFromFilter($objFilter, $strSortBy = '', $intOffset = 0, $intLimit = 0, $strSortOrder = 'ASC')
{
$arrFilteredIds = $this->getMatchingIds($objFilter);
// If desired, sort the entries.
if ($arrFilteredIds && $strSortBy != '') {
if ($objSortAttribute = $this->getAttribute($strSortBy)) {
$arrFilteredIds = $objSortAttribute->sortIds($arrFilteredIds, $strSortOrder);
} elseif (in_array($strSortBy, array('id', 'pid', 'tstamp', 'sorting'))) {
// Sort by database values.
$arrFilteredIds = $this->getDatabase()->prepare(sprintf('SELECT id FROM %s WHERE id IN(%s) ORDER BY %s %s', $this->getTableName(), $this->buildDatabaseParameterList($arrFilteredIds), $strSortBy, $strSortOrder))->execute($arrFilteredIds)->fetchEach('id');
} elseif ($strSortBy == 'random') {
shuffle($arrFilteredIds);
}
}
// Apply limiting then.
if ($intOffset > 0 || $intLimit > 0) {
$arrFilteredIds = array_slice($arrFilteredIds, $intOffset, $intLimit ?: null);
}
return $arrFilteredIds;
}