diff --git a/application/Espo/Core/Authentication/Ldap/LdapLogin.php b/application/Espo/Core/Authentication/Ldap/LdapLogin.php index 25ce35e743..6b440ca9f2 100644 --- a/application/Espo/Core/Authentication/Ldap/LdapLogin.php +++ b/application/Espo/Core/Authentication/Ldap/LdapLogin.php @@ -366,7 +366,8 @@ class LdapLogin implements Login $data[$fieldName] = $fieldValue; } - $user = $this->entityManager->getNewEntity('User'); + /** @var User $user */ + $user = $this->entityManager->getNewEntity(User::ENTITY_TYPE); $user->set($data); diff --git a/application/Espo/Core/FieldProcessing/Relation/LinkMultipleSaver.php b/application/Espo/Core/FieldProcessing/Relation/LinkMultipleSaver.php index 9b2dbee2bb..0fea2cadd6 100644 --- a/application/Espo/Core/FieldProcessing/Relation/LinkMultipleSaver.php +++ b/application/Espo/Core/FieldProcessing/Relation/LinkMultipleSaver.php @@ -30,7 +30,6 @@ namespace Espo\Core\FieldProcessing\Relation; use Espo\Core\ORM\Entity as CoreEntity; -use Espo\ORM\Entity; use Espo\Core\FieldProcessing\Saver\Params; use Espo\Core\ORM\EntityManager; @@ -42,17 +41,18 @@ use Espo\Core\ORM\Repository\Option\SaveOption; */ class LinkMultipleSaver { + private const RELATE_OPTION = 'linkMultiple'; + public function __construct(private EntityManager $entityManager) {} - public function process(Entity $entity, string $name, Params $params): void + public function process(CoreEntity $entity, string $name, Params $params): void { $idListAttribute = $name . 'Ids'; $columnsAttribute = $name . 'Columns'; if ( !$entity->isNew() && - $entity instanceof CoreEntity && !$entity->hasLinkMultipleField($name) ) { $entity->clear($idListAttribute); @@ -216,12 +216,14 @@ class LinkMultipleSaver $repository->getRelation($entity, $name)->relateById($id, $data, [ SaveOption::SKIP_HOOKS => $skipHooks, + self::RELATE_OPTION => $entity->hasLinkMultipleField($name), ]); } foreach ($toRemoveIdList as $id) { $repository->getRelation($entity, $name)->unrelateById($id, [ SaveOption::SKIP_HOOKS => $skipHooks, + self::RELATE_OPTION => $entity->hasLinkMultipleField($name), ]); } diff --git a/application/Espo/Core/FieldProcessing/Relation/Saver.php b/application/Espo/Core/FieldProcessing/Relation/Saver.php index 22d90eae67..9505b026a5 100644 --- a/application/Espo/Core/FieldProcessing/Relation/Saver.php +++ b/application/Espo/Core/FieldProcessing/Relation/Saver.php @@ -30,6 +30,7 @@ namespace Espo\Core\FieldProcessing\Relation; use Espo\Core\ORM\Defs\AttributeParam; +use Espo\Core\ORM\Entity as CoreEntity; use Espo\ORM\Entity; use Espo\Core\FieldProcessing\Saver as SaverInterface; @@ -85,6 +86,10 @@ class Saver implements SaverInterface return; } + if (!$entity instanceof CoreEntity) { + return; + } + $this->linkMultipleSaver->process($entity, $name, $params); }