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