/**
  * @param object[] $entities
  * @param string   $entityClass
  *
  * @return array
  */
 protected function getEntityIds($entities, $entityClass)
 {
     $ids = [];
     $idFieldName = $this->getEntityIdFieldName($entityClass);
     foreach ($entities as $entity) {
         $id = $this->dataAccessor->getValue($entity, $idFieldName);
         if (!isset($ids[$id])) {
             $ids[$id] = $id;
         }
     }
     return array_values($ids);
 }
Beispiel #2
0
 /**
  * @param string $entityClass
  * @param string $field
  * @param bool   $allowExtendedFields
  *
  * @return bool
  *
  * @SuppressWarnings(PHPMD.NPathComplexity)
  */
 protected function isApplicableField($entityClass, $field, $allowExtendedFields)
 {
     if (!$this->dataAccessor->hasGetter($entityClass, $field)) {
         return false;
     }
     $fieldModel = $this->configManager->getConfigFieldModel($entityClass, $field);
     if (!$fieldModel) {
         // this serializer works with non configurable entities as well
         return true;
     }
     if ($fieldModel->getMode() === ConfigModelManager::MODE_HIDDEN) {
         // exclude hidden fields
         return false;
     }
     $extendConfigProvider = $this->configManager->getProvider('extend');
     $extendConfig = $extendConfigProvider->getConfig($entityClass, $field);
     if (!$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;
 }