Adds content, read Permission criteria if needed and return false if no access at all.
public addPermissionsCriterion ( eZ\Publish\API\Repository\Values\Content\Query\Criterion &$criterion ) : boolean | eZ\Publish\API\Repository\Values\Content\Query\Criterion | ||
$criterion | eZ\Publish\API\Repository\Values\Content\Query\Criterion | |
return | boolean | eZ\Publish\API\Repository\Values\Content\Query\Criterion |
/** * 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; }
/** * 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 array $languageFilter Configuration for specifying prioritized languages query will be performed on. * Currently supports: <code>array("languages" => array(<language1>,..), "useAlwaysAvailable" => bool)</code> * useAlwaysAvailable defaults to true to avoid exceptions on missing translations * @param bool $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, 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; }