/**
  * {@inheritdoc}
  */
 public function process(ContextInterface $context)
 {
     /** @var CollectPublicResourcesContext $context */
     $context->setResult($context->getResult()->filter(function (PublicResource $resource) {
         return !$this->entityExclusionProvider->isIgnoredEntity($resource->getEntityClass());
     }));
 }
 /**
  * Adds remote entities relations to $className entity into $result
  *
  * @param array         $result
  * @param string        $className
  * @param bool          $withEntityDetails
  * @param bool          $applyExclusions
  * @param bool          $translate
  */
 protected function addUnidirectionalRelations(array &$result, $className, $withEntityDetails, $applyExclusions, $translate)
 {
     $relations = $this->getUnidirectionalRelations($className);
     foreach ($relations as $name => $mapping) {
         $relatedClassName = $mapping['sourceEntity'];
         $fieldName = $mapping['fieldName'];
         $metadata = $this->getMetadataFor($relatedClassName);
         $labelType = $mapping['type'] & ClassMetadataInfo::TO_ONE ? 'label' : 'plural_label';
         if (!$this->entityConfigProvider->hasConfig($relatedClassName, $fieldName)) {
             // skip non configurable relation
             continue;
         }
         if ($this->isIgnoredRelation($metadata, $fieldName)) {
             continue;
         }
         if ($applyExclusions && $this->exclusionProvider->isIgnoredRelation($metadata, $fieldName)) {
             continue;
         }
         $labelKey = $this->entityConfigProvider->getConfig($relatedClassName, $fieldName)->get('label');
         $labelTypeKey = $this->entityConfigProvider->getConfig($relatedClassName)->get($labelType);
         if ($translate) {
             $labelKey = $this->translator->trans($labelKey);
             $labelTypeKey = $this->translator->trans($labelTypeKey);
         }
         $label = sprintf('%s (%s)', $labelKey, $labelTypeKey);
         $fieldType = $this->getRelationFieldType($relatedClassName, $fieldName);
         $this->addRelation($result, $name, $fieldType, $label, $this->getRelationType($fieldType), $relatedClassName, $withEntityDetails, $translate, false);
     }
 }
Пример #3
0
 /**
  * Adds remote entities relations to $className entity into $result
  *
  * @param array         $result
  * @param string        $className
  * @param EntityManager $em
  * @param bool          $withEntityDetails
  * @param bool          $applyExclusions
  * @param bool          $translate
  */
 protected function addUnidirectionalRelations(array &$result, $className, EntityManager $em, $withEntityDetails, $applyExclusions, $translate)
 {
     $relations = $this->getUnidirectionalRelations($em, $className);
     foreach ($relations as $name => $mapping) {
         $relatedClassName = $mapping['sourceEntity'];
         $fieldName = $mapping['fieldName'];
         $metadata = $em->getClassMetadata($relatedClassName);
         $labelType = $mapping['type'] & ClassMetadataInfo::TO_ONE ? 'label' : 'plural_label';
         if (!$this->entityConfigProvider->hasConfig($metadata->getName(), $fieldName)) {
             // skip non configurable relation
             continue;
         }
         if ($this->isIgnoredRelation($metadata, $fieldName)) {
             continue;
         }
         if ($applyExclusions && $this->exclusionProvider->isIgnoredRelation($metadata, $fieldName)) {
             continue;
         }
         if ($translate) {
             $label = $this->translator->trans($this->entityConfigProvider->getConfig($relatedClassName, $fieldName)->get('label')) . ' (' . $this->translator->trans($this->entityConfigProvider->getConfig($relatedClassName)->get($labelType)) . ')';
         } else {
             $label = $this->entityConfigProvider->getConfig($relatedClassName, $fieldName)->get('label') . ' (' . $this->entityConfigProvider->getConfig($relatedClassName)->get($labelType) . ')';
         }
         $fieldType = $this->getRelationFieldType($relatedClassName, $fieldName);
         $this->addRelation($result, $name, $fieldType, $label, $this->getRelationType($fieldType), $relatedClassName, $withEntityDetails, $translate);
     }
 }
 /**
  * @return string[]
  */
 protected function getSupportedEntityClasses()
 {
     $entities = [];
     $entityManagers = $this->entityManagerBag->getEntityManagers();
     foreach ($entityManagers as $em) {
         $allMetadata = SafeDatabaseChecker::getAllMetadata($em);
         foreach ($allMetadata as $metadata) {
             if ($metadata->isMappedSuperclass) {
                 continue;
             }
             if ($this->entityExclusionProvider->isIgnoredEntity($metadata->name)) {
                 continue;
             }
             $entities[] = $metadata->name;
         }
     }
     return $entities;
 }
Пример #5
0
 /**
  * @param array         $definition
  * @param ClassMetadata $metadata
  * @param string        $version
  * @param string[]      $requestType
  * @param array         $extras
  *
  * @return array
  */
 protected function getAssociations(array $definition, ClassMetadata $metadata, $version, array $requestType, array $extras)
 {
     $associations = $metadata->getAssociationMappings();
     foreach ($associations as $fieldName => $mapping) {
         if (!$this->isAssociationCompletionRequired($fieldName, $definition)) {
             continue;
         }
         $identifierFieldNames = $this->doctrineHelper->getEntityIdentifierFieldNamesForClass($mapping['targetEntity']);
         $config = [ConfigUtil::DEFINITION => [ConfigUtil::EXCLUSION_POLICY => ConfigUtil::EXCLUSION_POLICY_ALL, ConfigUtil::FIELDS => count($identifierFieldNames) === 1 ? reset($identifierFieldNames) : array_fill_keys($identifierFieldNames, null)]];
         if (isset($definition[$fieldName]) && is_array($definition[$fieldName])) {
             $config = array_merge_recursive($config, [ConfigUtil::DEFINITION => $definition[$fieldName]]);
         }
         if ($this->exclusionProvider->isIgnoredRelation($metadata, $fieldName)) {
             $config[ConfigUtil::DEFINITION][ConfigUtil::EXCLUDE] = true;
         }
         $definition[$fieldName] = $config;
     }
     return $definition;
 }
Пример #6
0
 /**
  * @return string[]
  */
 protected function getSupportedEntityClasses()
 {
     $entities = [];
     $entityManagers = $this->entityManagerBag->getEntityManagers();
     foreach ($entityManagers as $em) {
         /** @var ClassMetadata[] $allMetadata */
         $allMetadata = $em->getMetadataFactory()->getAllMetadata();
         foreach ($allMetadata as $metadata) {
             if ($metadata->isMappedSuperclass) {
                 continue;
             }
             if ($this->entityExclusionProvider->isIgnoredEntity($metadata->name)) {
                 continue;
             }
             $entities[] = $metadata->name;
         }
     }
     return $entities;
 }
Пример #7
0
 /**
  * Checks if the given entity should be ignored
  *
  * @param string $className
  *
  * @return bool
  */
 protected function isIgnoredEntity($className)
 {
     return $this->exclusionProvider->isIgnoredEntity($className);
 }