- Модуль: main
- Путь к файлу: ~/bitrix/modules/main/classes/general/user.php
- Класс: CAllUser
- Вызов: CAllUser::SendUserInfo
static function SendUserInfo($ID, $SITE_ID, $MSG, $bImmediate = false, $eventName = "USER_INFO", $checkword = null)
{
global $DB;
$arParams = [
"ID" => $ID,
"SITE_ID" => $SITE_ID,
];
foreach (GetModuleEvents('main', 'OnBeforeSendUserInfo', true) as $arEvent)
{
if (ExecuteModuleEventEx($arEvent, [&$arParams]) === false)
{
return;
}
}
$ID = intval($ID);
if ($checkword === null)
{
// change CHECKWORD
$checkword = Random::getString(32);
$strSql = "UPDATE b_user SET " .
" CHECKWORD = '" . Password::hash($checkword) . "', " .
" CHECKWORD_TIME = " . $DB->CurrentTimeFunction() . ", " .
" LID = '" . $DB->ForSql($SITE_ID, 2) . "', " .
" TIMESTAMP_X = TIMESTAMP_X " .
"WHERE ID = '" . $ID . "'" .
(
// $arParams["EXTERNAL_AUTH_ID"] can be changed in the OnBeforeSendUserInfo event
isset($arParams["EXTERNAL_AUTH_ID"]) && $arParams["EXTERNAL_AUTH_ID"] != '' ?
" AND EXTERNAL_AUTH_ID='" . $DB->ForSQL($arParams["EXTERNAL_AUTH_ID"]) . "' " :
" AND (EXTERNAL_AUTH_ID IS NULL OR EXTERNAL_AUTH_ID='') "
);
$DB->Query($strSql);
}
$res = $DB->Query(
"SELECT u.* " .
"FROM b_user u " .
"WHERE ID='" . $ID . "'" .
(
isset($arParams["EXTERNAL_AUTH_ID"]) && $arParams["EXTERNAL_AUTH_ID"] != '' ?
" AND EXTERNAL_AUTH_ID='" . $DB->ForSQL($arParams["EXTERNAL_AUTH_ID"]) . "' " :
" AND (EXTERNAL_AUTH_ID IS NULL OR EXTERNAL_AUTH_ID='') "
)
);
if ($res_array = $res->Fetch())
{
$event = new CEvent;
$arFields = [
"USER_ID" => $res_array["ID"],
"STATUS" => ($res_array["ACTIVE"] == 'Y' ? GetMessage("STATUS_ACTIVE") : GetMessage("STATUS_BLOCKED")),
"MESSAGE" => $MSG,
"LOGIN" => $res_array["LOGIN"],
"URL_LOGIN" => urlencode($res_array["LOGIN"]),
"CHECKWORD" => $checkword,
"NAME" => $res_array["NAME"],
"LAST_NAME" => $res_array["LAST_NAME"],
"EMAIL" => $res_array["EMAIL"],
];
$arParams = [
"FIELDS" => &$arFields,
"USER_FIELDS" => $res_array,
"SITE_ID" => &$SITE_ID,
"EVENT_NAME" => &$eventName,
];
foreach (GetModuleEvents('main', 'OnSendUserInfo', true) as $arEvent)
{
ExecuteModuleEventEx($arEvent, [&$arParams]);
}
if (!$bImmediate)
{
$event->Send($eventName, $SITE_ID, $arFields, 'Y', '', [], $res_array["LANGUAGE_ID"]);
}
else
{
$event->SendImmediate($eventName, $SITE_ID, $arFields, 'Y', '', [], $res_array["LANGUAGE_ID"]);
}
}
}