entityManager = $entityManager; $this->user = $user; } public function process(Entity $entity, Params $params): void { /** @var Email $entity */ $userEmailAdddressIdList = []; $emailAddressCollection = $this->entityManager ->getRDBRepository('User') ->getRelation($this->user, 'emailAddresses') ->select(['id']) ->find(); foreach ($emailAddressCollection as $emailAddress) { $userEmailAdddressIdList[] = $emailAddress->getId(); } if ( in_array($entity->get('fromEmailAddressId'), $userEmailAdddressIdList) || $entity->get('createdById') === $this->user->getId() && $entity->get('status') === Email::STATUS_SENT ) { $entity->loadLinkMultipleField('toEmailAddresses'); $idList = $entity->get('toEmailAddressesIds'); $names = $entity->get('toEmailAddressesNames'); if (empty($idList)) { return; } $list = []; foreach ($idList as $emailAddressId) { $person = $this->getEmailAddressRepository()->getEntityByAddressId($emailAddressId, null, true); $list[] = $person ? $person->get('name') : $names->$emailAddressId; } $entity->set('personStringData', 'To: ' . implode(', ', $list)); return; } $fromEmailAddressId = $entity->get('fromEmailAddressId'); if (!$fromEmailAddressId) { return; } if (!array_key_exists($fromEmailAddressId, $this->fromEmailAddressNameCache)) { $person = $this->getEmailAddressRepository()->getEntityByAddressId($fromEmailAddressId, null, true); $fromName = $person ? $person->get('name') : null; $this->fromEmailAddressNameCache[$fromEmailAddressId] = $fromName; } $fromName = $this->fromEmailAddressNameCache[$fromEmailAddressId] ?? $entity->get('fromName') ?? $entity->get('fromEmailAddressName'); $entity->set('personStringData', $fromName); } private function getEmailAddressRepository(): EmailAddressRepository { return $this->entityManager->getRepository('EmailAddress'); } }