/**
  * {@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;
 }
Esempio n. 2
0
 /**
  * {@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;
 }