/** * {@inheritdoc} */ public function getEntityAlias($entityClass) { if ($this->configManager->hasConfig($entityClass)) { // check for enums $enumCode = $this->configManager->getProvider('enum')->getConfig($entityClass)->get('code'); if ($enumCode) { $entityAlias = $this->getEntityAliasFromConfig($entityClass); if (null !== $entityAlias) { return $entityAlias; } return $this->createEntityAlias(str_replace('_', '', $enumCode)); } // check for dictionaries $groups = $this->configManager->getProvider('grouping')->getConfig($entityClass)->get('groups'); if (!empty($groups) && in_array(GroupingScope::GROUP_DICTIONARY, $groups, true)) { // delegate aliases generation to default provider return null; } // exclude hidden entities if ($this->configManager->isHiddenModel($entityClass)) { return false; } // check for custom entities if (ExtendHelper::isCustomEntity($entityClass)) { $entityAlias = $this->getEntityAliasFromConfig($entityClass); if (null !== $entityAlias) { return $entityAlias; } return $this->createEntityAlias('Extend' . ExtendHelper::getShortClassName($entityClass)); } } return null; }
/** * {@inheritdoc} */ public function isApplicableField($className, $fieldName) { if (null === $this->configManager->getConfigModelId($className, $fieldName)) { // this serializer works with non configurable entities as well return true; } if (true === $this->configManager->isHiddenModel($className, $fieldName)) { // exclude hidden fields return false; } $extendConfigProvider = $this->configManager->getProvider('extend'); $extendConfig = $extendConfigProvider->getConfig($className, $fieldName); if (!$this->allowExtendedFields && $extendConfig->is('is_extend')) { // exclude extended fields if it is requested return false; } if ($extendConfig->is('is_deleted') || $extendConfig->is('state', ExtendScope::STATE_NEW)) { // exclude deleted and not created yet fields return false; } if ($extendConfig->has('target_entity') && $extendConfigProvider->getConfig($extendConfig->get('target_entity'))->is('is_deleted')) { // exclude associations with deleted custom entities return false; } return true; }
/** * {@inheritdoc} */ public function isIgnoredRelation(ClassMetadata $metadata, $associationName) { if (!$this->configManager->hasConfig($metadata->name, $associationName)) { return false; } $extendFieldConfig = $this->configManager->getFieldConfig('extend', $metadata->name, $associationName); return !ExtendHelper::isFieldAccessible($extendFieldConfig) || $this->configManager->isHiddenModel($metadata->name, $associationName) || $extendFieldConfig->has('target_entity') && !ExtendHelper::isEntityAccessible($this->configManager->getEntityConfig('extend', $extendFieldConfig->get('target_entity'))); }
/** * {@inheritdoc} */ public function isIgnoredRelation(ClassMetadata $metadata, $associationName) { if (!$this->configManager->hasConfig($metadata->name, $associationName)) { return false; } $extendFieldConfig = $this->configManager->getFieldConfig('extend', $metadata->name, $associationName); if (!ExtendHelper::isFieldAccessible($extendFieldConfig)) { return true; } if ($this->excludeHiddenFields && $this->configManager->isHiddenModel($metadata->name, $associationName)) { return true; } if ($extendFieldConfig->has('target_entity')) { $targetEntity = $extendFieldConfig->get('target_entity'); if (!ExtendHelper::isEntityAccessible($this->configManager->getEntityConfig('extend', $targetEntity))) { return true; } if ($this->excludeHiddenEntities && $this->configManager->isHiddenModel($targetEntity)) { return true; } } return false; }
/** * {@inheritdoc} */ public function isApplicableField($className, $fieldName) { if (null === $this->configManager->getConfigModelId($className, $fieldName)) { // this serializer works with non configurable entities as well return true; } if (true === $this->configManager->isHiddenModel($className, $fieldName)) { // exclude hidden fields return false; } $extendConfigProvider = $this->configManager->getProvider('extend'); $extendConfig = $extendConfigProvider->getConfig($className, $fieldName); if (!$this->allowExtendedFields && $extendConfig->is('is_extend')) { // exclude extended fields if it is requested return false; } if (!ExtendHelper::isFieldAccessible($extendConfig)) { return false; } if ($extendConfig->has('target_entity') && !ExtendHelper::isEntityAccessible($extendConfigProvider->getConfig($extendConfig->get('target_entity')))) { return false; } return true; }