diff --git a/application/Espo/Core/FieldProcessing/EmailAddress/Saver.php b/application/Espo/Core/FieldProcessing/EmailAddress/Saver.php index d634cd6821..e640af8d43 100644 --- a/application/Espo/Core/FieldProcessing/EmailAddress/Saver.php +++ b/application/Espo/Core/FieldProcessing/EmailAddress/Saver.php @@ -29,6 +29,7 @@ namespace Espo\Core\FieldProcessing\EmailAddress; +use Espo\Core\FieldProcessing\Loader\Params as LoeaderParams; use Espo\Core\Name\Link; use Espo\Core\ORM\Repository\Option\SaveOption; use Espo\Core\ORM\Type\FieldType; @@ -57,6 +58,7 @@ class Saver implements SaverInterface private EntityManager $entityManager, private ApplicationState $applicationState, private AccessChecker $accessChecker, + private Loader $loader, ) {} public function process(Entity $entity, Params $params): void @@ -86,7 +88,7 @@ class Saver implements SaverInterface } if ($entity->has(self::ATTR_EMAIL_ADDRESS)) { - $this->storePrimary($entity); + $this->storePrimaryAndPrepareData($entity); } } @@ -567,4 +569,15 @@ class Saver implements SaverInterface return !$this->accessChecker->checkEdit($user, $emailAddress, $entity); } + + private function storePrimaryAndPrepareData(Entity $entity): void + { + $this->loader->process($entity, LoeaderParams::create()); + $previous = $entity->get(self::ATTR_EMAIL_ADDRESS_DATA); + + $this->storePrimary($entity); + + $this->loader->process($entity, LoeaderParams::create()); + $entity->setFetched(self::ATTR_EMAIL_ADDRESS_DATA, $previous); + } } diff --git a/application/Espo/Core/FieldProcessing/PhoneNumber/Saver.php b/application/Espo/Core/FieldProcessing/PhoneNumber/Saver.php index d95e2f610d..67ab9e3969 100644 --- a/application/Espo/Core/FieldProcessing/PhoneNumber/Saver.php +++ b/application/Espo/Core/FieldProcessing/PhoneNumber/Saver.php @@ -29,6 +29,7 @@ namespace Espo\Core\FieldProcessing\PhoneNumber; +use Espo\Core\FieldProcessing\Loader\Params as LoeaderParams; use Espo\Core\ORM\Repository\Option\SaveOption; use Espo\Core\ORM\Type\FieldType; use Espo\Entities\PhoneNumber; @@ -57,6 +58,7 @@ class Saver implements SaverInterface private ApplicationState $applicationState, private AccessChecker $accessChecker, private Metadata $metadata, + private Loader $loader, ) {} public function process(Entity $entity, Params $params): void @@ -86,7 +88,7 @@ class Saver implements SaverInterface } if ($entity->has(self::ATTR_PHONE_NUMBER)) { - $this->storePrimary($entity); + $this->storePrimaryAndPrepareData($entity); } } @@ -578,4 +580,15 @@ class Saver implements SaverInterface $this->markNumberInvalid($phoneNumberValue, (bool) $entity->get(self::ATTR_PHONE_NUMBER_IS_INVALID)); } } + + private function storePrimaryAndPrepareData(Entity $entity): void + { + $this->loader->process($entity, LoeaderParams::create()); + $previous = $entity->get(self::ATTR_PHONE_NUMBER_DATA); + + $this->storePrimary($entity); + + $this->loader->process($entity, LoeaderParams::create()); + $entity->setFetched(self::ATTR_PHONE_NUMBER_DATA, $previous); + } }