Sulu\Bundle\MediaBundle\Controller\MediaController::getListBuilder PHP Метод

getListBuilder() приватный Метод

Returns a list-builder for media list.
private getListBuilder ( Request $request, array $fieldDescriptors, array $ids, array $types ) : DoctrineListBuilder
$request Symfony\Component\HttpFoundation\Request
$fieldDescriptors array
$ids array
$types array
Результат Sulu\Component\Rest\ListBuilder\Doctrine\DoctrineListBuilder
    private function getListBuilder(Request $request, array $fieldDescriptors, $ids, $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 ($collectionType === SystemCollectionManagerInterface::COLLECTION_TYPE) {
                $this->getSecurityChecker()->checkPermission('sulu.media.system_collections', PermissionTypes::VIEW);
            }
            $listBuilder->addSelectField($fieldDescriptors['collection']);
            $listBuilder->where($fieldDescriptors['collection'], $collectionId);
        }
        // If no limit is set in request and limit is set by ids
        $requestLimit = $request->get('limit');
        $idsCount = count($ids);
        if ($idsCount > 0) {
            // correct request limit if more ids are requested
            if (!$requestLimit && $idsCount > $listBuilder->getLimit()) {
                $listBuilder->limit($idsCount);
            }
            $listBuilder->in($fieldDescriptors['id'], $ids);
        }
        // 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;
    }