- Модуль: 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;
}