• Модуль: socialnetwork
  • Путь к файлу: ~/bitrix/modules/socialnetwork/classes/general/user_group.php
  • Класс: CAllSocNetUserToGroup
  • Вызов: CAllSocNetUserToGroup::SendEvent
static function SendEvent($userGroupID, $mailTemplate = "SONET_INVITE_GROUP"): bool
{
	$userGroupID = (int)$userGroupID;
	if ($userGroupID <= 0)
	{
		return false;
	}

	$dbRelation = CSocNetUserToGroup::GetList(
		[],
		[ 'ID' => $userGroupID ],
		false,
		false,
		[
			'ID',
			'ROLE', 'DATE_CREATE', 'MESSAGE', 'INITIATED_BY_TYPE', 'INITIATED_BY_USER_ID',
			'USER_ID', 'USER_NAME', 'USER_LAST_NAME', 'USER_EMAIL', 'USER_LID',
			'GROUP_ID', 'GROUP_NAME',
		]
	);
	$arRelation = $dbRelation->Fetch();
	if (!$arRelation)
	{
		return false;
	}

	$arUserGroup = array();

	if (Loader::includeModule('extranet'))
	{
		$arUserGroup = CUser::GetUserGroup($arRelation["USER_ID"]);
	}

	$bExtranetInstalled = ModuleManager::isModuleInstalled('extranet');
	$siteId = false;

	$rsGroupSite = CSocNetGroup::GetSite($arRelation["GROUP_ID"]);
	while ($arGroupSite = $rsGroupSite->Fetch())
	{
		if ($bExtranetInstalled)
		{
			if (
				(
					CExtranet::IsExtranetSite($arGroupSite["LID"])
					&& in_array(CExtranet::GetExtranetUserGroupID(), $arUserGroup)
				)
				||
				(
					!CExtranet::IsExtranetSite($arGroupSite["LID"])
					&& !in_array(CExtranet::GetExtranetUserGroupID(), $arUserGroup)
				)
			)
			{
				$siteId = $arGroupSite["LID"];
				break;
			}
		}
		else
		{
			$siteId = $arGroupSite["LID"];
			break;
		}
	}

	if (empty($siteId))
	{
		return false;
	}

	$requestsPagePath = str_replace(
		"#USER_ID#",
		$arRelation["USER_ID"],
		Option::get(
			"socialnetwork",
			"user_request_page",
			(
				ModuleManager::isModuleInstalled('intranet')
					? "/company/personal/user/#USER_ID#/requests/"
					: "/club/user/#USER_ID#/requests/"
			),
			$siteId
		)
	);

	$arUserInitiatedForEmail = array("NAME"=>"", "LAST_NAME"=>"");

	if ((int)$arRelation["INITIATED_BY_USER_ID"] > 0):

		$dbUserInitiated = CUser::GetList(
			"id",
			"desc",
			array("ID" => $arRelation["INITIATED_BY_USER_ID"])
		);

		if ($arUserInitiated = $dbUserInitiated->Fetch())
		{
			$arUserInitiatedForEmail = [
				'NAME' => $arUserInitiated['NAME'],
				'LAST_NAME' => $arUserInitiated['LAST_NAME'],
			];
		}

	endif;

	$arFields = array(
		"RELATION_ID" => $userGroupID,
		"URL" => $requestsPagePath,
		"GROUP_ID" => $arRelation["GROUP_ID"],
		"USER_ID" => $arRelation["USER_ID"],
		"GROUP_NAME" => Emoji::decode($arRelation["GROUP_NAME"]),
		"USER_NAME" => $arRelation["USER_NAME"],
		"USER_LAST_NAME" => $arRelation["USER_LAST_NAME"],
		"USER_EMAIL" => $arRelation["USER_EMAIL"],
		"INITIATED_USER_NAME" => $arUserInitiatedForEmail["NAME"],
		"INITIATED_USER_LAST_NAME" => $arUserInitiatedForEmail["LAST_NAME"],
		"MESSAGE" => $arRelation["MESSAGE"]
	);

	CEvent::Send($mailTemplate, $siteId, $arFields, "N");

	return true;
}