/** * {@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 getEntitiesMetadata() { $result = []; foreach ($this->getChannelEntities() as $entityName) { $entityConfig = $this->entityProvider->getEntity($entityName, true); $extendConfig = $this->configManager->getProvider('extend')->getConfig($entityName); $entityConfigModelId = $this->configManager->getConfigModelId($entityName); if (null !== $entityConfigModelId) { $entityConfig = array_merge($entityConfig, $this->getEntityLinks($entityConfigModelId)); } $result[$entityName] = array_merge($entityConfig, ['type' => $extendConfig->get('owner')]); } return $result; }
/** * {@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; }