Exemplo n.º 1
0
 /**
  * @param string $entityClass
  * @param array  $config
  *
  * @return string[]
  */
 public function getFields($entityClass, $config)
 {
     $result = [];
     if (ConfigUtil::isExcludeAll($config)) {
         if (!empty($config[ConfigUtil::FIELDS])) {
             foreach ($config[ConfigUtil::FIELDS] as $field => $fieldConfig) {
                 if (null === $fieldConfig || !ConfigUtil::isExclude($fieldConfig)) {
                     $result[] = $field;
                 }
             }
         }
     } else {
         $entityMetadata = $this->doctrineHelper->getEntityMetadata($entityClass);
         $fields = array_merge($entityMetadata->getFieldNames(), $entityMetadata->getAssociationNames());
         foreach ($fields as $field) {
             if (ConfigUtil::hasFieldConfig($config, $field)) {
                 $fieldConfig = $config[ConfigUtil::FIELDS][$field];
                 if (null === $fieldConfig || !ConfigUtil::isExclude($fieldConfig)) {
                     $result[] = $field;
                 }
             } elseif ($this->isApplicableField($entityClass, $field)) {
                 $result[] = $field;
             }
         }
         if (!empty($config[ConfigUtil::FIELDS])) {
             foreach ($config[ConfigUtil::FIELDS] as $field => $fieldConfig) {
                 if ($this->isMetadataProperty($field)) {
                     $result[] = $field;
                 }
             }
         }
     }
     return $result;
 }
Exemplo n.º 2
0
 /**
  * @param string $entityClass
  * @param array  $config
  *
  * @return string[]
  */
 public function getFields($entityClass, $config)
 {
     $result = [];
     if (ConfigUtil::isExcludeAll($config)) {
         if (!empty($config[ConfigUtil::FIELDS])) {
             foreach ($config[ConfigUtil::FIELDS] as $field => $fieldConfig) {
                 if (!$this->isExcludedField($fieldConfig)) {
                     $result[] = $field;
                 }
             }
         }
     } else {
         $entityMetadata = $this->doctrineHelper->getEntityMetadata($entityClass);
         $fields = array_merge($entityMetadata->getFieldNames(), $entityMetadata->getAssociationNames());
         foreach ($fields as $field) {
             if (ConfigUtil::hasFieldConfig($config, $field)) {
                 $fieldConfig = $config[ConfigUtil::FIELDS][$field];
                 if (!$this->isExcludedField($fieldConfig)) {
                     $result[] = $field;
                 }
             } elseif ($this->isApplicableField($entityClass, $field)) {
                 // @todo: ignore not configured relations to avoid infinite loop
                 // it is a temporary fix until the identifier field will not be used by default for them
                 if (!$entityMetadata->isAssociation($field)) {
                     $result[] = $field;
                 }
             }
         }
         if (!empty($config[ConfigUtil::FIELDS])) {
             foreach ($config[ConfigUtil::FIELDS] as $field => $fieldConfig) {
                 if ($this->isMetadataProperty($field)) {
                     $result[] = $field;
                 }
             }
         }
     }
     return $result;
 }