diff --git a/application/Espo/Modules/Crm/Classes/Acl/Case/LinkCheckers/AccountLinkChecker.php b/application/Espo/Modules/Crm/Classes/Acl/Case/LinkCheckers/AccountLinkChecker.php index e1bb71b9d4..499ad03aa7 100644 --- a/application/Espo/Modules/Crm/Classes/Acl/Case/LinkCheckers/AccountLinkChecker.php +++ b/application/Espo/Modules/Crm/Classes/Acl/Case/LinkCheckers/AccountLinkChecker.php @@ -59,15 +59,13 @@ class AccountLinkChecker implements LinkChecker return false; } - $emailIds = $entity->getLinkMultipleIdList('emails'); + $emailId = $entity->get('originalEmailId'); - if (count($emailIds) === 0 || count($emailIds) > 1) { + if (!$emailId) { return false; } - $email = $this->entityManager - ->getRepositoryByClass(Email::class) - ->getById($emailIds[0]); + $email = $this->entityManager->getRepositoryByClass(Email::class)->getById($emailId); if (!$email) { return false; diff --git a/application/Espo/Modules/Crm/Classes/Acl/Case/LinkCheckers/ContactLinkChecker.php b/application/Espo/Modules/Crm/Classes/Acl/Case/LinkCheckers/ContactLinkChecker.php index 8ac4c2b156..86cae5d3f9 100644 --- a/application/Espo/Modules/Crm/Classes/Acl/Case/LinkCheckers/ContactLinkChecker.php +++ b/application/Espo/Modules/Crm/Classes/Acl/Case/LinkCheckers/ContactLinkChecker.php @@ -59,15 +59,13 @@ class ContactLinkChecker implements LinkChecker return false; } - $emailIds = $entity->getLinkMultipleIdList('emails'); + $emailId = $entity->get('originalEmailId'); - if (count($emailIds) === 0 || count($emailIds) > 1) { + if (!$emailId) { return false; } - $email = $this->entityManager - ->getRepositoryByClass(Email::class) - ->getById($emailIds[0]); + $email = $this->entityManager->getRepositoryByClass(Email::class)->getById($emailId); if (!$email) { return false; diff --git a/application/Espo/Modules/Crm/Classes/Acl/Case/LinkCheckers/LeadLinkChecker.php b/application/Espo/Modules/Crm/Classes/Acl/Case/LinkCheckers/LeadLinkChecker.php index 97263b8ed1..dcad18a1c7 100644 --- a/application/Espo/Modules/Crm/Classes/Acl/Case/LinkCheckers/LeadLinkChecker.php +++ b/application/Espo/Modules/Crm/Classes/Acl/Case/LinkCheckers/LeadLinkChecker.php @@ -59,15 +59,14 @@ class LeadLinkChecker implements LinkChecker return false; } - $emailIds = $entity->getLinkMultipleIdList('emails'); - if (count($emailIds) === 0 || count($emailIds) > 1) { + $emailId = $entity->get('originalEmailId'); + + if (!$emailId) { return false; } - $email = $this->entityManager - ->getRepositoryByClass(Email::class) - ->getById($emailIds[0]); + $email = $this->entityManager->getRepositoryByClass(Email::class)->getById($emailId); if (!$email) { return false; diff --git a/tests/integration/Espo/Record/LinkTest.php b/tests/integration/Espo/Record/LinkTest.php index deebfd1145..94c4ac2ddb 100644 --- a/tests/integration/Espo/Record/LinkTest.php +++ b/tests/integration/Espo/Record/LinkTest.php @@ -320,7 +320,7 @@ class LinkTest extends BaseTestCase 'assignedUserId' => $user->getId(), 'leadId' => $lead->getId(), 'accountId' => $account->getId(), - 'emailsIds' => [$email->getId()] + 'originalEmailId' => $email->getId(), ], CreateParams::create()); // @@ -357,7 +357,7 @@ class LinkTest extends BaseTestCase 'name' => '1', 'assignedUserId' => $user->getId(), 'accountId' => $account->getId(), - 'emailsIds' => [$email->getId()] + 'originalEmailId' => $email->getId(), ], CreateParams::create()); // @@ -399,8 +399,30 @@ class LinkTest extends BaseTestCase 'accountId' => $account->getId(), 'contactId' => $contact->getId(), 'contactsIds' => [$contact->getId()], - 'emailsIds' => [$email->getId()] + 'originalEmailId' => $email->getId(), ], CreateParams::create()); + + // Should not allow more than 1 ID. + + $contactAnother = $this->getEntityManager()->createEntity(Contact::ENTITY_TYPE); + + $isThrown = false; + + try { + /** @noinspection PhpUnhandledExceptionInspection */ + $caseService->create((object) [ + 'name' => '1', + 'assignedUserId' => $user->getId(), + 'contactId' => $contact->getId(), + 'contactsIds' => [$contact->getId(), $contactAnother->getId()], + 'originalEmailId' => $email->getId(), + ], CreateParams::create()); + } + catch (Forbidden) { + $isThrown = true; + } + + $this->assertTrue($isThrown); } public function testLoadNames(): void