Sulu\Bundle\MediaBundle\Entity\CollectionRepository::getIdsQuery PHP Method

getIdsQuery() private method

Returns the basic query which selects the ids of a collection for a given set of parameters.
private getIdsQuery ( integer $depth, array $filter = [], array $sortBy = [], Sulu\Bundle\MediaBundle\Entity\CollectionInterface $collection = null, string $select = 'collection.id' ) : Doctrine\ORM\Query
$depth integer
$filter array
$sortBy array
$collection Sulu\Bundle\MediaBundle\Entity\CollectionInterface
$select string
return Doctrine\ORM\Query
    private function getIdsQuery($depth = 0, $filter = [], $sortBy = [], CollectionInterface $collection = null, $select = 'collection.id')
    {
        $queryBuilder = $this->createQueryBuilder('collection')->select($select)->where('collection.depth <= :depth');
        $collectionDepth = $collection !== null ? $collection->getDepth() : 0;
        $queryBuilder->setParameter('depth', $collectionDepth + $depth);
        if ($collection !== null) {
            $queryBuilder->andWhere('collection.lft BETWEEN :lft AND :rgt AND collection.id != :id');
            $queryBuilder->setParameter('lft', $collection->getLft());
            $queryBuilder->setParameter('rgt', $collection->getRgt());
            $queryBuilder->setParameter('id', $collection->getId());
        }
        if (array_key_exists('search', $filter) && $filter['search'] !== null || array_key_exists('locale', $filter) || count($sortBy) > 0) {
            $queryBuilder->leftJoin('collection.meta', 'collectionMeta');
            $queryBuilder->leftJoin('collection.defaultMeta', 'defaultMeta');
        }
        if (array_key_exists('search', $filter) && $filter['search'] !== null) {
            $queryBuilder->andWhere('collectionMeta.title LIKE :search OR defaultMeta.locale != :locale');
            $queryBuilder->setParameter('search', '%' . $filter['search'] . '%');
        }
        if (array_key_exists('locale', $filter)) {
            $queryBuilder->andWhere('collectionMeta.locale = :locale OR defaultMeta.locale != :locale');
            $queryBuilder->setParameter('locale', $filter['locale']);
        }
        if (array_key_exists('systemCollections', $filter) && !$filter['systemCollections']) {
            $queryBuilder->leftJoin('collection.type', 'collectionType');
            $queryBuilder->andWhere('collectionType.key != :type');
            $queryBuilder->setParameter('type', SystemCollectionManagerInterface::COLLECTION_TYPE);
        }
        if (count($sortBy) > 0) {
            foreach ($sortBy as $column => $order) {
                $queryBuilder->addOrderBy('collectionMeta.' . $column, strtolower($order) === 'asc' ? 'ASC' : 'DESC');
            }
        }
        $queryBuilder->addOrderBy('collection.id', 'ASC');
        if (array_key_exists('limit', $filter)) {
            $queryBuilder->setMaxResults($filter['limit']);
        }
        if (array_key_exists('offset', $filter)) {
            $queryBuilder->setFirstResult($filter['offset']);
        }
        return $queryBuilder->getQuery();
    }