Load email address/phone number data when saving only primary

This commit is contained in:
Yurii
2026-05-22 13:47:41 +03:00
parent e87e6635f4
commit dce1dabdee
2 changed files with 28 additions and 2 deletions

View File

@@ -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);
}
}

View File

@@ -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);
}
}