• Модуль: intranet
  • Путь к файлу: ~/bitrix/modules/intranet/classes/general/invite_dialog.php
  • Класс: CIntranetInviteDialog
  • Вызов: CIntranetInviteDialog::TransferEmailUser
static function TransferEmailUser($userId, $arParams = array())
{
	global $APPLICATION;

	$userId = (int)$userId;

	if (!($arUser = self::checkUserId($userId)))
	{
		$APPLICATION->ThrowException(Loc::getMessage("BX24_INVITE_DIALOG_USER_ID_NO_EXIST_ERROR"));
		return false;
	}

	$dbUser = CUser::GetList(
		"ID",
		"ASC",
		array(
			"=EMAIL" => $arUser["EMAIL"],
			"EXTERNAL_AUTH_ID" => "",
		),
		array("FIELDS" => array("ID"))
	);
	if ($dbUser->Fetch())
	{
		$APPLICATION->ThrowException(Loc::getMessage("BX24_INVITE_DIALOG_USER_EXIST_ERROR1", [
			"#EMAIL#" => $arUser["EMAIL"],
		]));
		return false;
	}

	if (
		!isset($arParams["SITE_ID"])
		|| empty($arParams["SITE_ID"])
	)
	{
		$arParams["SITE_ID"] = SITE_ID;
	}

	$bExtranetUser = (
		!isset($arParams['UF_DEPARTMENT'])
		|| empty($arParams['UF_DEPARTMENT'])
	);

	if (
		!isset($arParams["GROUP_ID"])
		|| empty($arParams["GROUP_ID"])
	)
	{
		$arParams["GROUP_ID"] = self::getUserGroups($arParams["SITE_ID"], $bExtranetUser);
	}

	self::$bSendPassword = true;
	$strPassword = self::GeneratePassword($arParams["SITE_ID"], $bExtranetUser);

	$arFields = array(
		"EXTERNAL_AUTH_ID" => '',
		"GROUP_ID" => $arParams['GROUP_ID'],
		"PASSWORD" => $strPassword,
		"EMAIL" => $arUser["EMAIL"]
	);

	if (isset($arParams["UF_DEPARTMENT"]))
	{
		$arFields["UF_DEPARTMENT"] = !is_array($arParams["UF_DEPARTMENT"]) ? array($arParams["UF_DEPARTMENT"]) : $arParams["UF_DEPARTMENT"];
	}

	if (
		isset($arParams["NAME"])
		&& (string)$arParams["NAME"] !== ''
	)
	{
		$arFields["NAME"] = $arParams["NAME"];
	}
	else
	{
		$arFields["NAME"] = $arUser["NAME"];
	}

	if (
		isset($arParams["LAST_NAME"])
		&& (string)$arParams["LAST_NAME"] !== ''
	)
	{
		$arFields["LAST_NAME"] = $arParams["LAST_NAME"];
	}
	else
	{
		$arFields["LAST_NAME"] = $arUser["LAST_NAME"];
	}

	if (
		isset($arParams["POSITION"])
		&& (string)$arParams["POSITION"] !== ''
	)
	{
		$arFields["POSITION"] = $arParams["POSITION"];
	}

	if (
		isset($arParams["CONFIRM_CODE"])
		&& (string)$arParams["CONFIRM_CODE"] !== ''
	)
	{
		$arFields["CONFIRM_CODE"] = $arParams["CONFIRM_CODE"];
	}

	foreach(GetModuleEvents("intranet", "OnTransferEMailUser", true) as $arEvent)
	{
		if (ExecuteModuleEventEx($arEvent, array(&$arFields)) === false)
		{
			return false;
		}
	}

	$obUser = new CUser;
	if ($obUser->Update($userId, $arFields))
	{
		$dbUser = CUser::GetByID($userId);
		$arUser = $dbUser->Fetch();

		$arFields['ID'] = $userId;
		foreach(GetModuleEvents("intranet", "OnAfterTransferEMailUser", true) as $arEvent)
		{
			ExecuteModuleEventEx($arEvent, array($arUser));
		}

		foreach(GetModuleEvents("intranet", "OnRegisterUser", true) as $arEvent)
		{
			ExecuteModuleEventEx($arEvent, [ $arFields ]);
		}

		self::sentTransferNotification($arUser, $arFields, $arParams);

		return $userId;
	}

	$APPLICATION->ThrowException(Loc::getMessage("BX24_INVITE_DIALOG_ERROR_USER_TRANSFER"));
	return false;
}