eZ\Publish\Core\Repository\PermissionsCriterionHandler::addPermissionsCriterion PHP Method

addPermissionsCriterion() public method

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
    public function addPermissionsCriterion(Criterion &$criterion)
    {
        $permissionCriterion = $this->getPermissionsCriterion();
        if ($permissionCriterion === true || $permissionCriterion === false) {
            return $permissionCriterion;
        }
        // Merge with original $criterion
        if ($criterion instanceof LogicalAnd) {
            $criterion->criteria[] = $permissionCriterion;
        } else {
            $criterion = new LogicalAnd(array($criterion, $permissionCriterion));
        }
        return true;
    }

Usage Example

    /**
     * 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;
    }
All Usage Examples Of eZ\Publish\Core\Repository\PermissionsCriterionHandler::addPermissionsCriterion