public function findLocations(LocationQuery $query, array $languageFilter = array(), $filterOnUserPermissions = true)
{
if (!is_int($query->offset)) {
throw new InvalidArgumentType('$query->offset', 'integer', $query->offset);
}
if (!is_int($query->limit)) {
throw new InvalidArgumentType('$query->limit', 'integer', $query->limit);
}
$query = clone $query;
$query->filter = $query->filter ?: new Criterion\MatchAll();
if ($filterOnUserPermissions && !$this->permissionsCriterionHandler->addPermissionsCriterion($query->filter)) {
return new SearchResult(array('time' => 0, 'totalCount' => 0));
}
$result = $this->searchHandler->findLocations($query, $languageFilter);
foreach ($result->searchHits as $hit) {
$hit->valueObject = $this->domainMapper->buildLocationDomainObject($hit->valueObject);
}
return $result;
}