. * * 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\Repositories; use Espo\Core\ORM\Repository\Option\SaveOption; use Espo\Entities\User as UserEntity; use Espo\Entities\UserData as UserDataEntity; use Espo\Core\Repositories\Database; /** * @internal Use Espo\Tools\User\UserDataProvider. * @extends Database */ class UserData extends Database { public function getByUserId(string $userId): ?UserDataEntity { /** @var ?UserDataEntity $userData */ $userData = $this ->where(['userId' => $userId]) ->findOne(); if ($userData) { return $userData; } $user = $this->entityManager ->getRepository(UserEntity::ENTITY_TYPE) ->getById($userId); if (!$user) { return null; } $userData = $this->getNew(); $userData->set('userId', $userId); $this->save($userData, [ SaveOption::SILENT => true, SaveOption::SKIP_HOOKS => true, ]); return $userData; } }