• Модуль: socialnetwork
  • Путь к файлу: ~/bitrix/modules/socialnetwork/classes/general/user_group.php
  • Класс: CAllSocNetUserToGroup
  • Вызов: CAllSocNetUserToGroup::notifyModeratorAdded
static function notifyModeratorAdded($params): void
{
	static $groupCache = array();

	$userId = (!empty($params['userId']) ? (int)$params['userId'] : 0);
	$relationFields = (!empty($params['relationFields']) && is_array($params['relationFields']) ? $params['relationFields'] : array());
	$groupFields = (!empty($params['groupFields']) && is_array($params['groupFields']) ? $params['groupFields'] : array());
	$groupId = (
		!empty($params['groupId'])
			? (int)$params['groupId']
			: (!empty($groupFields['ID']) ? (int)$groupFields['ID'] : 0)
	);
	$relationId = (
		!empty($params['relationId'])
			? (int)$params['relationId']
			: (!empty($relationFields['ID']) ? (int)$relationFields['ID'] : 0)
	);

	if (
		empty($groupFields)
		&& $groupId > 0
	)
	{
		if (isset($groupCache[$groupId]))
		{
			$groupFields = $groupCache[$groupId];
		}
		else
		{
			$res = WorkgroupTable::getList(array(
				'filter' => array(
					'=ID' => $groupId
				),
				'select' => array('ID', 'NAME', 'SITE_ID')
			));
			$groupFields = $groupCache[$groupId] = $res->fetch();
		}
	}

	if (
		empty($relationFields)
		&& $relationId > 0
	)
	{
		$res = UserToGroupTable::getList(array(
			'filter' => array(
				'=ID' => $relationId
			),
			'select' => array('ID', 'USER_ID')
		));
		$relationFields = $res->fetch();
	}

	if (
		$groupId <= 0
		|| empty($relationFields)
		|| empty($relationFields['ID'])
		|| empty($relationFields['USER_ID'])
		|| empty($groupFields)
		|| !Loader::includeModule('im')
	)
	{
		return;
	}

	$groupSiteId = CSocNetGroup::getDefaultSiteId($groupId, $groupFields["SITE_ID"]);

	$workgroupsPage = COption::getOptionString("socialnetwork", "workgroups_page", "/workgroups/", SITE_ID);
	$groupUrlTemplate = Path::get('group_path_template');
	$groupUrlTemplate = "#GROUPS_PATH#".mb_substr($groupUrlTemplate, mb_strlen($workgroupsPage));
	$groupUrl = str_replace(array("#group_id#", "#GROUP_ID#"), $groupId, $groupUrlTemplate);

	$arTmp = CSocNetLogTools::processPath(
		array(
			"GROUP_URL" => $groupUrl
		),
		$relationFields["USER_ID"],
		$groupSiteId
	);
	$groupUrl = $arTmp["URLS"]["GROUP_URL"];

	$serverName = (
		mb_strpos($groupUrl, "http://") === 0
		|| mb_strpos($groupUrl, "https://") === 0
			? ""
			: $arTmp["SERVER_NAME"]
	);
	$domainName = (
		mb_strpos($groupUrl, "http://") === 0
		|| mb_strpos($groupUrl, "https://") === 0
			? ""
			: (
				isset($arTmp["DOMAIN"])
				&& !empty($arTmp["DOMAIN"])
					? "//".$arTmp["DOMAIN"]
					: ""
			)
	);

	$arMessageFields = array(
		"TO_USER_ID" => $relationFields["USER_ID"],
		"FROM_USER_ID" => $userId,
		"NOTIFY_TYPE" => IM_NOTIFY_FROM,
		"NOTIFY_MODULE" => "socialnetwork",
		"NOTIFY_EVENT" => "moderators_group",
		"NOTIFY_TAG" => "SOCNET|MOD_GROUP|" . $userId . "|".$groupId."|".$relationFields["ID"]."|".$relationFields["USER_ID"],
		"NOTIFY_MESSAGE" => str_replace(
			array("#NAME#"),
			array("".$groupFields["NAME"].""),
			GetMessage("SONET_UG_MEMBER2MOD_MESSAGE")
		),
		"NOTIFY_MESSAGE_OUT" => str_replace(
				array("#NAME#"),
				array($groupFields["NAME"]),
				Loc::getMessage("SONET_UG_MEMBER2MOD_MESSAGE")
			)." (".$serverName.$groupUrl.")"
	);

	CIMNotify::add($arMessageFields);
}