- Модуль: intranet
- Путь к файлу: ~/bitrix/modules/intranet/classes/general/invite_dialog.php
- Класс: CIntranetInviteDialog
- Вызов: CIntranetInviteDialog::TransferExtranetUser
static function TransferExtranetUser($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" => 'socservices',
),
array(
"FIELDS" => array("ID", "ADMIN_NOTES", "EXTERNAL_AUTH_ID"),
"SELECT" => array("UF_DEPARTMENT")
)
);
if (
($arUserCheck = $dbUser->Fetch())
&& isset($arUserCheck["UF_DEPARTMENT"])
&& (
(
is_array($arUserCheck["UF_DEPARTMENT"])
&& (int)$arUserCheck["UF_DEPARTMENT"][0] > 0
)
|| (
!is_array($arUserCheck["UF_DEPARTMENT"])
&& (int)$arUserCheck["UF_DEPARTMENT"] > 0
)
)
)
{
$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;
$arFields = array(
"EXTERNAL_AUTH_ID" => $arUser["EXTERNAL_AUTH_ID"],
"GROUP_ID" => $arParams['GROUP_ID'],
"PASSWORD" => Loc::getMessage('BX24_INVITE_DIALOG_PASSWORD_SAME'),
"NAME" => $arUser["NAME"],
"LAST_NAME" => $arUser["LAST_NAME"],
"EMAIL" => $arUser["EMAIL"],
"UF_DEPARTMENT" => !is_array($arParams["UF_DEPARTMENT"]) ? array($arParams["UF_DEPARTMENT"]) : $arParams["UF_DEPARTMENT"],
"ADMIN_NOTES" => str_replace("~deactivated~", "", $arUser["ADMIN_NOTES"]),
"ACTIVE" => "Y"
);
if (
isset($arParams["POSITION"])
&& (string)$arParams["POSITION"] !== ''
)
{
$arFields["POSITION"] = $arParams["POSITION"];
}
foreach(GetModuleEvents("intranet", "OnTransferExtranetUser", 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", "OnAfterTransferExtranetUser", 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_EXTRANET_USER_TRANSFER"));
return false;
}