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