- Модуль: 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'],
]);
}