. * * The interactive user interfaces in modified source and object code versions * of this program must display Appropriate Legal Notices, as required under * Section 5 of the GNU Affero General Public License version 3. * * In accordance with Section 7(b) of the GNU Affero General Public License version 3, * these Appropriate Legal Notices must retain the display of the "EspoCRM" word. ************************************************************************/ namespace Espo\Modules\Crm\Hooks\Account; use Espo\ORM\{ Entity, EntityManager, }; class Contacts { /** * @var EntityManager */ protected $entityManager; public function __construct(EntityManager $entityManager) { $this->entityManager = $entityManager; } /** * @param array $options * @param array $data */ public function afterRelate(Entity $entity, array $options = [], array $data = []): void { $relationName = $data['relationName'] ?? null; $foreignEntity = $data['foreignEntity'] ?? null; if ($relationName === 'contacts' && $foreignEntity) { if (!$foreignEntity->get('accountId') && $foreignEntity->has('accountId')) { $foreignEntity->set('accountId', $entity->getId()); $this->entityManager->saveEntity($foreignEntity); } } } /** * @param array $options * @param array $data */ public function afterUnrelate(Entity $entity, array $options = [], array $data = []): void { $relationName = $data['relationName'] ?? null; $foreignEntity = $data['foreignEntity'] ?? null; if ($relationName === 'contacts' && $foreignEntity) { if ($foreignEntity->get('accountId') && $foreignEntity->get('accountId') === $entity->getId()) { $foreignEntity->set('accountId', null); $this->entityManager->saveEntity($foreignEntity); } } } }