. * * The interactive user interfaces in modified source and object code versions * of this program must display Appropriate Legal Notices, as required under * Section 5 of the GNU Affero General Public License version 3. * * In accordance with Section 7(b) of the GNU Affero General Public License version 3, * these Appropriate Legal Notices must retain the display of the "EspoCRM" word. ************************************************************************/ namespace Espo\Classes\FieldDuplicators; use Espo\Core\Record\Duplicator\FieldDuplicator; use Espo\ORM\Entity; use Espo\ORM\EntityManager; use stdClass; class LinkMultiple implements FieldDuplicator { private EntityManager $entityManager; public function __construct(EntityManager $entityManager) { $this->entityManager = $entityManager; } public function duplicate(Entity $entity, string $field): stdClass { $valueMap = (object) []; $entityDefs = $this->entityManager ->getDefs() ->getEntity($entity->getEntityType()); if (!$entity->hasRelation($field)) { return $valueMap; } $relationDefs = $entityDefs->getRelation($field); if ( !$relationDefs->hasForeignEntityType() || !$relationDefs->hasForeignRelationName() ) { return $valueMap; } $foreignRelationType = $this->entityManager ->getDefs() ->getEntity($relationDefs->getForeignEntityType()) ->getRelation($relationDefs->getForeignRelationName()) ->getType(); if ($foreignRelationType !== Entity::MANY_MANY) { $valueMap->{$field . 'Ids'} = []; $valueMap->{$field . 'Names'} = (object) []; $valueMap->{$field . 'Columns'} = (object) []; } return $valueMap; } }