/** * @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; }
/** * @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; }