• Модуль: intranet
  • Путь к файлу: ~/bitrix/modules/intranet/lib/integration/mail/emailuser.php
  • Класс: BitrixIntranetIntegrationMailEmailUser
  • Вызов: EmailUser::create
static function create(array $fields): ?EO_User
{
	if (empty($fields['email']) || !check_email($fields['email']) || !Loader::includeModule('mail'))
	{
		return null;
	}

	$user = UserTable::query()
		->setSelect(['*'])
		->where('EMAIL', $fields['email'])
		->where(
			Query::filter()
				->logic('or')
				->whereNull('EXTERNAL_AUTH_ID')
				->whereNotIn('EXTERNAL_AUTH_ID', array_diff(UserTable::getExternalUserTypes(), ['email']))
		)
		->fetchObject()
	;

	if ($user)
	{
		if ($user->getExternalAuthId() === 'email' && !$user->getActive())
		{
			$user->setActive(true);
			$user->save();
		}
	}
	else
	{
		$userId = BitrixMailUser::create(
			[
				'EMAIL' => $fields['email'],
				'NAME' => empty($fields['name']) ? '' : $fields['name'],
				'LAST_NAME' => empty($fields['lastName']) ? '' : $fields['lastName']
			]
		);

		if ($userId)
		{
			$user = UserTable::getById($userId)->fetchObject();
		}
	}

	if ($user && $user->getExternalAuthId() === 'email')
	{
		self::invite($user->getId());
	}

	return $user;
}