/** * {@inheritdoc} */ public function process(ContextInterface $context) { /** @var ConfigContext $context */ /** @var array|null $definition */ $definition = $context->getResult(); if (empty($definition) || ConfigUtil::isExcludeAll($definition)) { // nothing to do return $definition; } $entityClass = $context->getClassName(); if (!$this->doctrineHelper->isManageableEntityClass($entityClass)) { return $definition; } $expandRelations = $context->get(ExpandRelatedEntitiesConfigExtra::NAME); $associations = $this->doctrineHelper->getEntityMetadataForClass($entityClass)->getAssociationMappings(); foreach ($associations as $fieldName => $mapping) { if (!$this->isAssociationCompletionRequired($fieldName, $definition)) { continue; } if (!in_array($fieldName, $expandRelations)) { continue; } $extras = array_filter($context->getExtras(), function ($item) { if ($item instanceof ExpandRelatedEntitiesConfigExtra || $item instanceof FilterFieldsConfigExtra) { return false; } return true; }); $config = $this->configProvider->getConfig($mapping['targetEntity'], $context->getVersion(), $context->getRequestType(), $extras); $definition[ConfigUtil::FIELDS][$fieldName] = $config; } $context->setResult([ConfigUtil::EXCLUSION_POLICY => ConfigUtil::EXCLUSION_POLICY_NONE, ConfigUtil::FIELDS => $definition[ConfigUtil::FIELDS]]); }
/** * {@inheritdoc} */ public function process(ContextInterface $context) { /** @var GetListContext $context */ if (!in_array(RequestType::REST, $context->getRequestType(), true)) { parent::process($context); } else { // reuse REST API sorting filter $filters = $context->getFilters(); $sortFilterKey = $this->getSortFilterKey(); if ($sortFilterKey !== RestSetDefaultSorting::SORT_FILTER_KEY && $filters->has(RestSetDefaultSorting::SORT_FILTER_KEY)) { $filter = $filters->get(RestSetDefaultSorting::SORT_FILTER_KEY); $filters->remove(RestSetDefaultSorting::SORT_FILTER_KEY); $filters->add($sortFilterKey, $filter); } if ($filters->has($sortFilterKey)) { $filter = $filters->get($sortFilterKey); if ($filter instanceof SortFilter) { $entityClass = $context->getClassName(); $filter->setDefaultValue(function () use($entityClass) { return $this->getDefaultValue($entityClass); }); } } } }
/** * {@inheritdoc} */ public function process(ContextInterface $context) { /** @var Context $context */ $requestType = $context->getRequestType(); if (empty($requestType)) { throw new \RuntimeException('The type of a request must be set in the context.'); } }
/** * {@inheritdoc} */ public function process(ContextInterface $context) { /** @var Context $context */ $entityClass = $context->getClassName(); if (false !== strpos($entityClass, '\\')) { // an entity class is already normalized return; } $context->setClassName($this->valueNormalizer->normalizeValue($entityClass, DataType::ENTITY_PLURAL_ALIAS, $context->getRequestType())); }
/** * {@inheritdoc} */ public function process(ContextInterface $context) { /** @var Context $context */ if (!$context->hasConfigExtra(ExpandRelatedEntitiesConfigExtra::NAME)) { $filterValue = $context->getFilterValues()->get(self::FILTER_KEY); if (null !== $filterValue) { $includes = $this->valueNormalizer->normalizeValue($filterValue->getValue(), DataType::STRING, $context->getRequestType(), true); if (!empty($includes)) { $context->addConfigExtra(new ExpandRelatedEntitiesConfigExtra((array) $includes)); } } } }
/** * {@inheritdoc} */ public function process(ContextInterface $context) { /** @var Context $context */ if (!$context->hasConfigExtra(FilterFieldsConfigExtra::NAME)) { $fields = []; $filterValues = $context->getFilterValues()->getAll(self::FILTER_KEY); foreach ($filterValues as $filterValue) { $fields[$filterValue->getPath()] = (array) $this->valueNormalizer->normalizeValue($filterValue->getValue(), DataType::STRING, $context->getRequestType(), true); } if (!empty($fields)) { $context->addConfigExtra(new FilterFieldsConfigExtra($fields)); } } }
/** * {@inheritdoc} */ public function process(ContextInterface $context) { /** @var ConfigContext $context */ /** @var array|null $definition */ $definition = $context->getResult(); if (empty($definition) || ConfigUtil::isExcludeAll($definition)) { // nothing to normalize return; } if (ConfigUtil::getArrayValue($definition, ConfigUtil::DEFINITION)) { $definition = ConfigUtil::getArrayValue($definition, ConfigUtil::DEFINITION); } $fields = ConfigUtil::getArrayValue($definition, ConfigUtil::FIELDS); $entityClass = $context->getClassName(); if ($this->doctrineHelper->isManageableEntityClass($entityClass)) { $fields = $this->completeDefinition($fields, $entityClass, $context->getVersion(), $context->getRequestType(), $context->getExtras()); } $context->setResult([ConfigUtil::EXCLUSION_POLICY => ConfigUtil::EXCLUSION_POLICY_ALL, ConfigUtil::FIELDS => $fields]); }
/** * {@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 GetListContext $context */ 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); } } }