src/Sulu/Bundle/MediaBundle/Controller/MediaController.php
private function getListBuilder(Request $request, array $fieldDescriptors, $types)
    {
        $restHelper = $this->get('sulu_core.doctrine_rest_helper');
        $factory = $this->get('sulu_core.doctrine_list_builder_factory');
        $listBuilder = $factory->create($this->getParameter('sulu.model.media.class'));
        $restHelper->initializeListBuilder($listBuilder, $fieldDescriptors);

        // default sort by created
        if (!$request->get('sortBy')) {
            $listBuilder->sort($fieldDescriptors['created'], 'desc');
        }

        $collectionId = $request->get('collection');
        if ($collectionId) {
            $collectionType = $this->getCollectionRepository()->findCollectionTypeById($collectionId);
            if (SystemCollectionManagerInterface::COLLECTION_TYPE === $collectionType) {
                $this->getSecurityChecker()->checkPermission(
                    'sulu.media.system_collections',
                    PermissionTypes::VIEW
                );
            }
            $listBuilder->addSelectField($fieldDescriptors['collection']);
            $listBuilder->where($fieldDescriptors['collection'], $collectionId);
        } else {
            $listBuilder->addPermissionCheckField($fieldDescriptors['collection']);
            $listBuilder->setPermissionCheck(
                $this->getUser(),
                PermissionTypes::VIEW,
                $this->getParameter('sulu.model.collection.class')
            );
        }

        // set the types
        if (count($types)) {
            $listBuilder->in($fieldDescriptors['type'], $types);
        }

        if (!$this->getSecurityChecker()->hasPermission('sulu.media.system_collections', PermissionTypes::VIEW)) {
            $systemCollection = $this->getCollectionRepository()
                ->findCollectionByKey(SystemCollectionManagerInterface::COLLECTION_KEY);

            $lftExpression = $listBuilder->createWhereExpression(
                $fieldDescriptors['lft'],
                $systemCollection->getLft(),
                ListBuilderInterface::WHERE_COMPARATOR_LESS
            );
            $rgtExpression = $listBuilder->createWhereExpression(
                $fieldDescriptors['rgt'],
                $systemCollection->getRgt(),
                ListBuilderInterface::WHERE_COMPARATOR_GREATER
            );

            $listBuilder->addExpression(
                $listBuilder->createOrExpression([
                    $lftExpression,
                    $rgtExpression,
                ])
            );
        }

        // field which will be needed afterwards to generate route
        $listBuilder->addSelectField($fieldDescriptors['version']);
        $listBuilder->addSelectField($fieldDescriptors['subVersion']);
        $listBuilder->addSelectField($fieldDescriptors['name']);
        $listBuilder->addSelectField($fieldDescriptors['locale']);
        $listBuilder->addSelectField($fieldDescriptors['mimeType']);
        $listBuilder->addSelectField($fieldDescriptors['storageOptions']);
        $listBuilder->addSelectField($fieldDescriptors['id']);
        $listBuilder->addSelectField($fieldDescriptors['collection']);

        return $listBuilder;
    }
private function getListBuilder(Request $request, array $fieldDescriptors, $types)
    {
        $restHelper = $this->get('sulu_core.doctrine_rest_helper');
        $factory = $this->get('sulu_core.doctrine_list_builder_factory');
        $listBuilder = $factory->create($this->getParameter('sulu.model.media.class'));
        $restHelper->initializeListBuilder($listBuilder, $fieldDescriptors);

        // default sort by created
        if (!$request->get('sortBy')) {
            $listBuilder->sort($fieldDescriptors['created'], 'desc');
        }

        $collectionId = $request->get('collection');
        if ($collectionId) {
            $collectionType = $this->getCollectionRepository()->findCollectionTypeById($collectionId);
            if (SystemCollectionManagerInterface::COLLECTION_TYPE === $collectionType) {
                $this->getSecurityChecker()->checkPermission(
                    'sulu.media.system_collections',
                    PermissionTypes::VIEW
                );
            }
            $listBuilder->addSelectField($fieldDescriptors['collection']);
            $listBuilder->where($fieldDescriptors['collection'], $collectionId);
        } else {
            $listBuilder->addPermissionCheckField($fieldDescriptors['collection']);
            $listBuilder->setPermissionCheck(
                $this->getUser(),
                PermissionTypes::VIEW,
                $this->getParameter('sulu.model.collection.class')
            );
        }

        // set the types
        if (count($types)) {
            $listBuilder->in($fieldDescriptors['type'], $types);
        }

        if (!$this->getSecurityChecker()->hasPermission('sulu.media.system_collections', PermissionTypes::VIEW)) {
            $systemCollection = $this->getCollectionRepository()
                ->findCollectionByKey(SystemCollectionManagerInterface::COLLECTION_KEY);

            $lftExpression = $listBuilder->createWhereExpression(
                $fieldDescriptors['lft'],
                $systemCollection->getLft(),
                ListBuilderInterface::WHERE_COMPARATOR_LESS
            );
            $rgtExpression = $listBuilder->createWhereExpression(
                $fieldDescriptors['rgt'],
                $systemCollection->getRgt(),
                ListBuilderInterface::WHERE_COMPARATOR_GREATER
            );

            $listBuilder->addExpression(
                $listBuilder->createOrExpression([
                    $lftExpression,
                    $rgtExpression,
                ])
            );
        }

        // field which will be needed afterwards to generate route
        $listBuilder->addSelectField($fieldDescriptors['version']);
        $listBuilder->addSelectField($fieldDescriptors['subVersion']);
        $listBuilder->addSelectField($fieldDescriptors['name']);
        $listBuilder->addSelectField($fieldDescriptors['locale']);
        $listBuilder->addSelectField($fieldDescriptors['mimeType']);
        $listBuilder->addSelectField($fieldDescriptors['storageOptions']);
        $listBuilder->addSelectField($fieldDescriptors['id']);
        $listBuilder->addSelectField($fieldDescriptors['collection']);

        return $listBuilder;
    }
private function getListBuilder ( Request $ request , array $ fieldDescriptors , $ types ) { $ restHelper = $ this -> get ( 'sulu_core.doctrine_rest_helper' ) ; $ factory = $ this -> get ( 'sulu_core.doctrine_list_builder_factory' ) ; $ listBuilder = $ factory -> create ( $ this -> getParameter ( 'sulu.model.media.class' ) ) ; $ restHelper -> initializeListBuilder ( $ listBuilder , $ fieldDescriptors ) ; // default sort by created if ( ! $ request -> get ( 'sortBy' ) ) { $ listBuilder -> sort ( $ fieldDescriptors [ 'created' ] , 'desc' ) ; } $ collectionId = $ request -> get ( 'collection' ) ; if ( $ collectionId ) { $ collectionType = $ this -> getCollectionRepository ( ) -> findCollectionTypeById ( $ collectionId ) ; if ( SystemCollectionManagerInterface :: COLLECTION_TYPE === $ collectionType ) { $ this -> getSecurityChecker ( ) -> checkPermission ( 'sulu.media.system_collections' , PermissionTypes :: VIEW ) ; } $ listBuilder -> addSelectField ( $ fieldDescriptors [ 'collection' ] ) ; $ listBuilder -> where ( $ fieldDescriptors [ 'collection' ] , $ collectionId ) ; } else { $ listBuilder -> addPermissionCheckField ( $ fieldDescriptors [ 'collection' ] ) ; $ listBuilder -> setPermissionCheck ( $ this -> getUser ( ) , PermissionTypes :: VIEW , $ this -> getParameter ( 'sulu.model.collection.class' ) ) ; } // set the types if ( count ( $ types ) ) { $ listBuilder -> in ( $ fieldDescriptors [ 'type' ] , $ types ) ; } if ( ! $ this -> getSecurityChecker ( ) -> hasPermission ( 'sulu.media.system_collections' , PermissionTypes :: VIEW ) ) { $ systemCollection = $ this -> getCollectionRepository ( ) -> findCollectionByKey ( SystemCollectionManagerInterface :: COLLECTION_KEY ) ; $ lftExpression = $ listBuilder -> createWhereExpression ( $ fieldDescriptors [ 'lft' ] , $ systemCollection -> getLft ( ) , ListBuilderInterface :: WHERE_COMPARATOR_LESS ) ; $ rgtExpression = $ listBuilder -> createWhereExpression ( $ fieldDescriptors [ 'rgt' ] , $ systemCollection -> getRgt ( ) , ListBuilderInterface :: WHERE_COMPARATOR_GREATER ) ; $ listBuilder -> addExpression ( $ listBuilder -> createOrExpression ( [ $ lftExpression , $ rgtExpression , ] ) ) ; } // field which will be needed afterwards to generate route $ listBuilder -> addSelectField ( $ fieldDescriptors [ 'version' ] ) ; $ listBuilder -> addSelectField ( $ fieldDescriptors [ 'subVersion' ] ) ; $ listBuilder -> addSelectField ( $ fieldDescriptors [ 'name' ] ) ; $ listBuilder -> addSelectField ( $ fieldDescriptors [ 'locale' ] ) ; $ listBuilder -> addSelectField ( $ fieldDescriptors [ 'mimeType' ] ) ; $ listBuilder -> addSelectField ( $ fieldDescriptors [ 'storageOptions' ] ) ; $ listBuilder -> addSelectField ( $ fieldDescriptors [ 'id' ] ) ; $ listBuilder -> addSelectField ( $ fieldDescriptors [ 'collection' ] ) ; return $ listBuilder ; }
Returns a list-builder for media list.

@param Request $request
@param FieldDescriptorInterface[] $fieldDescriptors
@param array $types

@return DoctrineListBuilder
Returns a list - builder for media list .