Ejemplo n.º 1
0
 /**
  * {@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 isApplicable(ContextInterface $context, array $processorAttributes)
 {
     $result = self::ABSTAIN;
     $attrName = 'requestType';
     if (!empty($processorAttributes[$attrName]) && $context->has($attrName)) {
         if (!$this->isMatch($processorAttributes[$attrName], $context->get($attrName))) {
             $result = self::NOT_APPLICABLE;
         }
     }
     return $result;
 }
Ejemplo n.º 3
0
 /**
  * {@inheritdoc}
  */
 public function process(ContextInterface $context)
 {
     /** @var ConfigContext $context */
     /** @var array|null $definition */
     $definition = $context->getResult();
     if (empty($definition) || !is_array($definition[ConfigUtil::FIELDS])) {
         // nothing to do
         return;
     }
     $fieldsDefinition = $definition[ConfigUtil::FIELDS];
     $entityClass = $context->getClassName();
     if (!$this->doctrineHelper->isManageableEntityClass($entityClass)) {
         return;
     }
     $filterFieldsConfig = $context->get(FilterFieldsConfigExtra::NAME);
     $this->filterFields($entityClass, $fieldsDefinition, $filterFieldsConfig);
     $this->filterAssociations($entityClass, $fieldsDefinition, $filterFieldsConfig);
     $context->setResult([ConfigUtil::EXCLUSION_POLICY => ConfigUtil::EXCLUSION_POLICY_ALL, ConfigUtil::FIELDS => $fieldsDefinition]);
 }