. * * 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\Core\FieldProcessing\LinkParent; use Espo\Core\Name\Field; use Espo\ORM\Entity; use Espo\Core\FieldProcessing\Loader as LoaderInterface; use Espo\Core\FieldProcessing\Loader\Params; use Espo\Core\ORM\EntityManager; use Espo\ORM\Name\Attribute; /** * @implements LoaderInterface */ class TargetLoader implements LoaderInterface { public function __construct(private EntityManager $entityManager) {} public function process(Entity $entity, Params $params): void { $targetType = $entity->get('targetType'); $targetId = $entity->get('targetId'); if (!$targetType || !$targetId) { return; } if (!$this->entityManager->hasRepository($targetType)) { return; } $query = $this->entityManager ->getQueryBuilder() ->select() ->from($targetType) ->withDeleted() ->where([ Attribute::ID => $targetId, ]) ->build(); $target = $this->entityManager ->getRDBRepository($targetType) ->clone($query) ->findOne(); if (!$target) { return; } if (!$target->get(Field::NAME)) { return; } $entity->set('targetName', $target->get(Field::NAME)); } }