• Модуль: socialnetwork
  • Путь к файлу: ~/bitrix/modules/socialnetwork/lib/item/usertogroup.php
  • Класс: BitrixSocialnetworkItemUserToGroup
  • Вызов: UserToGroup::changeRelationAutoMembership
static function changeRelationAutoMembership($params): void
{
	static $helper = false;

	$relationId = (int)($params['RELATION_ID'] ?? 0);
	$userId = (int)($params['USER_ID'] ?? 0);
	$groupId = (int)($params['GROUP_ID'] ?? 0);
	$value = (
		isset($params['VALUE'])
		&& in_array($params['VALUE'], WorkgroupTable::getAutoMembershipValuesAll(), true)
			? $params['VALUE']
			: 'Y'
	);
	$notyfy = (isset($params['NOTIFY']) && $params['NOTIFY'] === 'N' ? $params['NOTIFY'] : 'Y');

	if ($relationId <= 0)
	{
		return;
	}

	if (!$helper)
	{
		$connection = Application::getConnection();
		$helper = $connection->getSqlHelper();
	}

	$updateFields = [
		'AUTO_MEMBER' => $value,
		'=DATE_UPDATE' => $helper->getCurrentDateTimeFunction(),
	];
	if (
		isset($params['ROLE'])
		&& in_array($params['ROLE'], UserToGroupTable::getRolesAll(), true)
	)
	{
		$updateFields['ROLE'] = $params['ROLE'];
	}
	CSocNetUserToGroup::update($relationId, $updateFields);

	if (
		!$notyfy
		|| $userId <= 0
		|| $groupId <= 0
		|| $value !== 'Y'
	)
	{
		return;
	}

	self::notifyAutoMembership([
		'GROUP_ID' => $groupId,
		'USER_ID' => $userId,
		'RELATION_ID' => $relationId,
	]);

	self::addInfoToChat([
		'group_id' => $groupId,
		'user_id' => $userId,
		'action' => self::CHAT_ACTION_IN,
		'role' => ($params['ROLE'] ?? false),
	]);
}