Esempio n. 1
0
 /**
  * @param array         $definition
  * @param ClassMetadata $metadata
  * @param string        $version
  * @param string[]      $requestType
  * @param array         $extras
  *
  * @return array
  */
 protected function getFields(array $definition, ClassMetadata $metadata, $version, array $requestType, array $extras)
 {
     $fieldNames = $metadata->getFieldNames();
     foreach ($fieldNames as $fieldName) {
         if (array_key_exists($fieldName, $definition)) {
             // already defined
             continue;
         }
         $config = $this->fieldConfigProvider->getFieldConfig($metadata->name, $fieldName, $version, $requestType, $extras);
         if ($this->exclusionProvider->isIgnoredField($metadata, $fieldName)) {
             $config[ConfigUtil::DEFINITION][ConfigUtil::EXCLUDE] = true;
         }
         $definition[$fieldName] = $config;
     }
     return $definition;
 }
Esempio n. 2
0
 /**
  * Adds entity virtual fields to $result
  *
  * @param array         $result
  * @param ClassMetadata $metadata
  * @param bool          $applyExclusions
  * @param bool          $translate
  */
 protected function addVirtualFields(array &$result, ClassMetadata $metadata, $applyExclusions, $translate)
 {
     $className = $metadata->getName();
     $virtualFields = $this->virtualFieldProvider->getVirtualFields($className);
     foreach ($virtualFields as $fieldName) {
         if ($applyExclusions && $this->exclusionProvider->isIgnoredField($metadata, $fieldName)) {
             continue;
         }
         $query = $this->virtualFieldProvider->getVirtualFieldQuery($className, $fieldName);
         $fieldLabel = isset($query['select']['label']) ? $query['select']['label'] : $this->getFieldLabel($className, $fieldName);
         $this->addField($result, $fieldName, $query['select']['return_type'], $fieldLabel, false, $translate);
         if (isset($query['select']['filter_by_id']) && $query['select']['filter_by_id']) {
             $result[$fieldName]['related_entity_name'] = $metadata->getAssociationTargetClass($fieldName);
         }
     }
 }
 /**
  * Adds entity virtual fields to $result
  *
  * @param array  $result
  * @param string $className
  * @param bool $withEntityDetails
  * @param bool $applyExclusions
  * @param bool $translate
  */
 protected function addVirtualRelations(array &$result, $className, $withEntityDetails, $applyExclusions, $translate)
 {
     if (!$this->virtualRelationProvider) {
         return;
     }
     $metadata = $this->getMetadataFor($className);
     $virtualRelations = $this->virtualRelationProvider->getVirtualRelations($className);
     foreach ($virtualRelations as $associationName => $virtualRelation) {
         if ($applyExclusions && $this->exclusionProvider->isIgnoredField($metadata, $associationName)) {
             continue;
         }
         $fieldType = $virtualRelation['relation_type'];
         $targetClassName = $this->entityClassResolver->getEntityClass($virtualRelation['related_entity_name']);
         $label = !empty($virtualRelation['label']) ? $virtualRelation['label'] : $this->getFieldLabel($metadata, $associationName);
         $this->addRelation($result, $associationName, $fieldType, $label, $this->getRelationType($fieldType), $targetClassName, $withEntityDetails, $translate);
     }
 }