/**
* Finds Locations for the given query.
*
* @throws \eZ\Publish\API\Repository\Exceptions\InvalidArgumentException if query is not valid
*
* @param \eZ\Publish\API\Repository\Values\Content\LocationQuery $query
* @param boolean $filterOnUserPermissions if true only the objects which is the user allowed to read are returned.
*
* @return \eZ\Publish\API\Repository\Values\Content\Search\SearchResult
*/
public function findLocations( LocationQuery $query, $filterOnUserPermissions = true )
{
$query = clone $query;
$query->filter = $query->filter ?: new Criterion\MatchAll();
$this->validateSortClauses( $query );
if ( $filterOnUserPermissions && !$this->permissionsCriterionHandler->addPermissionsCriterion( $query->filter ) )
{
return new SearchResult( array( 'time' => 0, 'totalCount' => 0 ) );
}
if ( $query->limit === null )
{
$query->limit = self::MAX_LIMIT;
}
$result = $this->locationSearchHandler->findLocations( $query );
foreach ( $result->searchHits as $hit )
{
$hit->valueObject = $this->domainMapper->buildLocationDomainObject(
$hit->valueObject
);
}
return $result;
}