/** * @param string $className * @param array $originalFieldNames * @return array */ protected function getReverseRelationTypes($className, array &$originalFieldNames) { $extendProvider = $this->configManager->getProvider('extend'); $entityConfig = $extendProvider->getConfig($className); $entityProvider = $this->configManager->getProvider('entity'); $result = []; if ($entityConfig->is('relation')) { $relations = $entityConfig->get('relation'); foreach ($relations as $relationKey => $relation) { if (!$this->isAvailableRelation($extendProvider, $relation, $relationKey)) { continue; } /** @var FieldConfigId $fieldId */ $fieldId = $relation['field_id']; /** @var FieldConfigId $targetFieldId */ $targetFieldId = $relation['target_field_id']; $entityLabel = $entityProvider->getConfig($targetFieldId->getClassName())->get('label'); $fieldLabel = $entityProvider->getConfigById($targetFieldId)->get('label'); $fieldName = $fieldId ? $fieldId->getFieldName() : ''; $maxFieldNameLength = $this->nameGenerator->getMaxCustomEntityFieldNameSize(); if (strlen($fieldName) > $maxFieldNameLength) { $cutFieldName = substr($fieldName, 0, $maxFieldNameLength); $originalFieldNames[$cutFieldName] = $fieldName; $fieldName = $cutFieldName; } $key = $relationKey . '||' . $fieldName; $result[$key] = $this->translator->trans(self::TYPE_LABEL_PREFIX . 'inverse_relation', ['%entity_name%' => $this->translator->trans($entityLabel), '%field_name%' => $this->translator->trans($fieldLabel)]); } } return $result; }