• Модуль: socialnetwork
  • Путь к файлу: ~/bitrix/modules/socialnetwork/classes/general/subscription.php
  • Класс: CAllSocNetSubscription
  • Вызов: CAllSocNetSubscription::Set
static function Set($userID, $code, $value = false): bool
{
	global $CACHE_MANAGER;

	if (!CSocNetGroup::__ValidateID($userID))
	{
		return false;
	}

	$userID = intval($userID);
	$code = trim($code);

	if (
		$userID <= 0
		|| $code == ''
	)
	{
		return false;
	}

	$value = ($value == "Y" ? "Y" : "N");

	$rsSubscription = CSocNetSubscription::GetList(
		array(),
		array(
			"USER_ID" => $userID,
			"CODE" => $code
		)
	);

	$result = false;

	if ($arSubscription = $rsSubscription->Fetch())
	{
		if ($value != "Y")
		{
			$result = CSocNetSubscription::delete($arSubscription["ID"]);
		}
	}
	else
	{
		if ($value == "Y")
		{
			$result = CSocNetSubscription::add(array(
				"USER_ID" => $userID,
				"CODE" => $code
			));
		}
	}

	if (
		$result
		&& preg_match('/^SG(d+)$/i', $code, $matches)
	)
	{
		$chatId = false;
		$groupId = $matches[1];
		$chatData = BitrixSocialnetworkIntegrationImChatWorkgroup::getChatData(Array(
			'group_id' => $groupId
		));
		if (!empty($chatData[$groupId]) && intval($chatData[$groupId]) > 0)
		{
			$chatId = $chatData[$groupId];
		}

		if ($chatId)
		{
			$CIMChat = new CIMChat($userID);
			$CIMChat->muteNotify($chatId, ($value != "Y"));
		}
	}

	if(defined("BX_COMP_MANAGED_CACHE"))
	{
		$CACHE_MANAGER->ClearByTag("sonet_subscription_".$code);
	}

	return true;
}