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

	if (!empty($params['CURRENT_USER_ID']))
	{
		$currentUserId = (int)$params['CURRENT_USER_ID'];
	}
	elseif (is_object($USER))
	{
		$currentUserId = $USER->getId();
	}

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

	static $helper = false;

	$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 (
		$userId <= 0
		|| $groupId <= 0
	)
	{
		return;
	}

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

	$addFields = [
		'AUTO_MEMBER' => $value,
		'USER_ID' => $userId,
		'GROUP_ID' => $groupId,
		'ROLE' => (
			isset($params['ROLE'])
			&& in_array($params['ROLE'], UserToGroupTable::getRolesAll(), true)
				? $params['ROLE']
				: UserToGroupTable::ROLE_USER
		),
		'INITIATED_BY_TYPE' => UserToGroupTable::INITIATED_BY_GROUP,
		'INITIATED_BY_USER_ID' => $currentUserId,
		'=DATE_CREATE' => $helper->getCurrentDateTimeFunction(),
		'=DATE_UPDATE' => $helper->getCurrentDateTimeFunction(),
	];

	$relationId = CSocNetUserToGroup::add($addFields);

	if (
		!$notyfy
		|| $relationId <= 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' => $addFields['ROLE'],
	]);
}