public function findTrashItems(Query $query)
{
if ($query->filter !== null && !$query->filter instanceof Criterion) {
throw new InvalidArgumentValue('query->filter', $query->filter, 'Query');
}
if ($query->sortClauses !== null) {
if (!is_array($query->sortClauses)) {
throw new InvalidArgumentValue('query->sortClauses', $query->sortClauses, 'Query');
}
foreach ($query->sortClauses as $sortClause) {
if (!$sortClause instanceof SortClause) {
throw new InvalidArgumentValue('query->sortClauses', 'only instances of SortClause class are allowed');
}
}
}
if ($query->offset !== null && !is_numeric($query->offset)) {
throw new InvalidArgumentValue('query->offset', $query->offset, 'Query');
}
if ($query->limit !== null && !is_numeric($query->limit)) {
throw new InvalidArgumentValue('query->limit', $query->limit, 'Query');
}
$spiTrashItems = $this->persistenceHandler->trashHandler()->findTrashItems($query->filter !== null ? $query->filter : null, $query->offset !== null && $query->offset > 0 ? (int) $query->offset : 0, $query->limit !== null && $query->limit >= 1 ? (int) $query->limit : null, $query->sortClauses !== null ? $query->sortClauses : null);
$trashItems = array();
foreach ($spiTrashItems as $spiTrashItem) {
$trashItems[] = $this->buildDomainTrashItemObject($spiTrashItem);
}
$searchResult = new SearchResult();
$searchResult->count = count($trashItems);
$searchResult->items = $trashItems;
$searchResult->query = $query;
return $searchResult;
}