From 6dd940cfab187501e884dacfc32c35a1709acce6 Mon Sep 17 00:00:00 2001 From: Yuri Kuznetsov Date: Wed, 24 Jan 2024 14:26:15 +0200 Subject: [PATCH] import ref --- application/Espo/Tools/Import/Import.php | 42 +++++++++++++----------- 1 file changed, 22 insertions(+), 20 deletions(-) diff --git a/application/Espo/Tools/Import/Import.php b/application/Espo/Tools/Import/Import.php index b3cc277e69..a285b4071d 100644 --- a/application/Espo/Tools/Import/Import.php +++ b/application/Espo/Tools/Import/Import.php @@ -655,20 +655,11 @@ class Import return; } - $foreignEntityType = $entity->getRelationParam($relation, 'entity'); - - $isPerson = false; - - if ($foreignEntityType) { - $isPerson = $this->metadata - ->get(['entityDefs', $foreignEntityType, 'fields', 'name', 'type']) === 'personName'; - } - - if ($attribute !== $relation . 'Name') { + if ($entity->has($relation . 'Id') && $entity->isNew()) { return; } - if ($entity->has($relation . 'Id') && $entity->isNew()) { + if ($attribute !== $relation . 'Name') { return; } @@ -690,14 +681,16 @@ class Import return; } + $foreignEntityType = $entity->getRelationParam($relation, 'entity'); + + $isPerson = $foreignEntityType && + $this->getFieldType($foreignEntityType, 'name') === FieldType::PERSON_NAME; + + $where = ['name' => $nameValue]; + if ($isPerson) { $where = $this->parsePersonName($nameValue, $this->params->getPersonNameFormat() ?? ''); } - else { - $where = [ - 'name' => $nameValue, - ]; - } $found = $this->entityManager ->getRDBRepository($foreignEntityType) @@ -745,9 +738,9 @@ class Import $attributeType = $entity->getAttributeType($attribute); if ($value !== '') { - $type = $this->metadata->get(['entityDefs', $this->entityType, 'fields', $attribute, 'type']); + $type = $this->getFieldType($this->entityType, $attribute); - if ($attribute === 'emailAddress' && $type === 'email') { + if ($attribute === 'emailAddress' && $type === FieldType::EMAIL) { $emailAddressData = $entity->get('emailAddressData'); $emailAddressData = $emailAddressData ?? []; @@ -763,7 +756,7 @@ class Import return; } - if ($attribute === 'phoneNumber' && $type === 'phone') { + if ($attribute === 'phoneNumber' && $type === FieldType::PHONE) { $phoneNumberData = $entity->get('phoneNumberData'); $phoneNumberData = $phoneNumberData ?? []; @@ -839,7 +832,7 @@ class Import if ( $entity->hasAttribute('phoneNumber') && - $entity->getAttributeParam('phoneNumber', 'fieldType') === 'phone' + $entity->getAttributeParam('phoneNumber', 'fieldType') === FieldType::PHONE ) { $typeList = $this->metadata ->get(['entityDefs', $this->entityType, 'fields', 'phoneNumber', 'typeList']) ?? []; @@ -1318,4 +1311,13 @@ class Import return $left; } + + private function getFieldType(string $entityType, string $field): ?string + { + return $this->entityManager + ->getDefs() + ->getEntity($entityType) + ->tryGetField($field) + ?->getType(); + } }