/** * {@inheritdoc} */ public function process(ContextInterface $context) { /** @var GetListContext $context */ if ($context->hasQuery()) { // a query is already built return; } $entityClass = $context->getClassName(); if (!$this->doctrineHelper->isManageableEntityClass($entityClass)) { // only manageable entities are supported return; } $filters = $context->getFilters(); if (!$filters->has(self::SORT_FILTER_KEY)) { $filters->add(self::SORT_FILTER_KEY, new SortFilter(DataType::ORDER_BY, 'Result sorting. One or several fields separated by comma, for example \'field1,-field2\'.', function () use($entityClass) { return $this->doctrineHelper->getOrderByIdentifier($entityClass); }, function ($value) { $result = []; if (null !== $value) { foreach ($value as $field => $order) { $result[] = (Criteria::DESC === $order ? '-' : '') . $field; } } return implode(RestRequest::ARRAY_DELIMITER, $result); })); } }
/** * {@inheritdoc} */ public function process(ContextInterface $context) { /** @var Context $context */ if ($context->hasQuery()) { // a query is already built return; } $this->aclHelper->applyAclToCriteria($context->getClassName(), $context->getCriteria(), $this->permission); }
/** * {@inheritdoc} */ public function process(ContextInterface $context) { /** @var GetListContext $context */ if ($context->hasQuery()) { // a query is already built return; } $filters = $context->getFilters(); $this->addPageSizeFilter($filters); $this->addPageNumberFilter($filters); }
/** * {@inheritdoc} */ public function process(ContextInterface $context) { /** @var GetListContext $context */ if ($context->hasQuery()) { // a query is already built return; } $criteria = $context->getCriteria(); // check if a paging disabled if (self::UNLIMITED_RESULT === $criteria->getMaxResults()) { $criteria->setFirstResult(null); $criteria->setMaxResults(null); } }
/** * {@inheritdoc} */ public function process(ContextInterface $context) { /** @var GetListContext $context */ if ($context->hasQuery()) { // a query is already built return; } $entityClass = $context->getClassName(); if (!$this->doctrineHelper->isManageableEntityClass($entityClass)) { // only manageable entities are supported return; } $this->addSortFilter($context->getFilters(), $entityClass); }
/** * {@inheritdoc} */ public function process(ContextInterface $context) { /** @var Context $context */ if ($context->hasQuery()) { // a query is already built return; } $filterValues = $context->getFilterValues(); $filters = $context->getFilters(); foreach ($filters as $filterKey => $filter) { if ($filter instanceof SortFilter) { $this->validateSortValue($this->getSortFilterValue($filterValues, $filterKey), $context->hasConfigOfSorters() ? $context->getConfigOfSorters() : null); } } }
/** * {@inheritdoc} */ public function process(ContextInterface $context) { /** @var GetListContext $context */ if ($context->hasQuery()) { // a query is already built return; } $criteria = $context->getCriteria(); $filterValues = $context->getFilterValues(); $filters = $context->getFilters(); foreach ($filters as $filterKey => $filter) { $filterValue = $filterValues->has($filterKey) ? $filterValues->get($filterKey) : null; $filter->apply($criteria, $filterValue); } }
/** * {@inheritdoc} */ public function process(ContextInterface $context) { /** @var GetListContext $context */ if ($context->hasQuery()) { // a query is already built return; } $entityClass = $context->getClassName(); if (!$this->doctrineHelper->isManageableEntityClass($entityClass)) { // only manageable entities are supported return; } $query = $this->doctrineHelper->getEntityRepositoryForClass($entityClass)->createQueryBuilder('e'); $this->doctrineHelper->applyCriteria($query, $context->getCriteria()); $context->setQuery($query); }
/** * {@inheritdoc} */ public function process(ContextInterface $context) { /** @var GetListContext $context */ if ($context->hasQuery()) { // a query is already built return; } $entityClass = $context->getClassName(); if (!$this->doctrineHelper->isManageableEntityClass($entityClass)) { // only manageable entities are supported return; } $filterValues = $context->getFilterValues(); if ($filterValues->has(self::SORT_FILTER_KEY)) { $filterValue = $filterValues->get(self::SORT_FILTER_KEY); $filterValue->setValue($this->normalizeValue($filterValue->getValue(), $entityClass)); } }
/** * {@inheritdoc} */ public function process(ContextInterface $context) { /** @var GetListContext $context */ if ($context->hasQuery()) { // a query is already built return; } $filterValues = $context->getFilterValues(); $filters = $context->getFilters(); foreach ($filters as $filterKey => $filter) { $filterValue = null; if ($filterValues->has($filterKey)) { $filterValue = $filterValues->get($filterKey); if ($filter instanceof StandaloneFilter) { $value = $this->valueNormalizer->normalizeValue($filterValue->getValue(), $filter->getDataType(), $context->getRequestType(), $filter->isArrayAllowed($filterValue->getOperator())); $filterValue->setValue($value); } } } }
/** * {@inheritdoc} */ public function process(ContextInterface $context) { /** @var GetContext $context */ if ($context->hasQuery()) { // a query is already built return; } $entityClass = $context->getClassName(); if (!$this->doctrineHelper->isManageableEntityClass($entityClass)) { // only manageable entities are supported return; } $query = $this->doctrineHelper->getEntityRepositoryForClass($entityClass)->createQueryBuilder('e'); $this->doctrineHelper->applyCriteria($query, $context->getCriteria()); $entityId = $context->getId(); $idFields = $this->doctrineHelper->getEntityIdentifierFieldNamesForClass($entityClass); if (count($idFields) === 1) { // single identifier if (is_array($entityId)) { throw new \UnexpectedValueException(sprintf('The entity identifier cannot be an array because the entity "%s" has single primary key.', $entityClass)); } $query->andWhere(sprintf('e.%s = :id', reset($idFields)))->setParameter('id', $entityId); } else { // combined identifier if (!is_array($entityId)) { throw new \UnexpectedValueException(sprintf('The entity identifier must be an array because the entity "%s" has composite primary key.', $entityClass)); } $counter = 1; foreach ($idFields as $field) { if (!array_key_exists($field, $entityId)) { throw new \UnexpectedValueException(sprintf('The entity identifier array must have the key "%s" because ' . 'the entity "%s" has composite primary key.', $field, $entityClass)); } $query->andWhere(sprintf('e.%s = :id%d', $field, $counter))->setParameter(sprintf('id%d', $counter), $entityId[$field]); $counter++; } } $context->setQuery($query); }
/** * {@inheritdoc} */ public function process(ContextInterface $context) { /** @var GetListContext $context */ if ($context->hasQuery()) { // a query is already built return; } if (!in_array(RequestType::REST, $context->getRequestType(), true)) { parent::process($context); } else { // reuse REST API paging filters $filters = $context->getFilters(); if ($filters->has(RestSetDefaultPaging::PAGE_SIZE_FILTER_KEY)) { $filter = $filters->get(RestSetDefaultPaging::PAGE_SIZE_FILTER_KEY); $filters->remove(RestSetDefaultPaging::PAGE_SIZE_FILTER_KEY); $filters->add($this->getPageSizeFilterKey(), $filter); } if ($filters->has(RestSetDefaultPaging::PAGE_NUMBER_FILTER_KEY)) { $filter = $filters->get(RestSetDefaultPaging::PAGE_NUMBER_FILTER_KEY); $filters->remove(RestSetDefaultPaging::PAGE_NUMBER_FILTER_KEY); $filters->add($this->getPageNumberFilterKey(), $filter); } } }