- Модуль: socialnetwork
- Путь к файлу: ~/bitrix/modules/socialnetwork/classes/general/rest.php
- Класс: CSocNetLogRestService
- Вызов: CSocNetLogRestService::addGroupUsers
static function addGroupUsers($arFields): array
{
$groupId = $arFields['GROUP_ID'] ?? null;
$userIdList = $arFields['USER_ID'] ?? null;
if ((int)$groupId <= 0)
{
throw new ArgumentException('Wrong group ID');
}
if (!self::isCurrentUserAdmin())
{
throw new AccessDeniedException('No permissions to add users');
}
if (
(!is_array($userIdList) && (int)$userIdList <= 0)
|| (is_array($userIdList) && count($userIdList) <= 0)
)
{
throw new ArgumentException('Wrong user IDs');
}
if (!is_array($userIdList))
{
$userIdList = [ $userIdList ];
}
$res = CSocNetGroup::getList(array(), array(
"ID" => $groupId
));
$groupFields = $res->fetch();
if (!is_array($groupFields))
{
throw new ObjectNotFoundException('Socialnetwork group not found');
}
if (
!empty($userIdList)
&& Loader::includeModule('intranet')
)
{
$extranetSiteId = self::getExtranetSiteId();
$res = BitrixIntranetUserTable::getList([
'filter' => [
'@ID' => $userIdList
],
'select' => [ 'ID', 'USER_TYPE' ]
]);
$userIdList = [];
while ($userFields = $res->fetch())
{
if (!in_array($userFields['USER_TYPE'], [ 'employee', 'extranet' ]))
{
continue;
}
$userIdList[] = $userFields['ID'];
if (
$userFields['USER_TYPE'] === 'extranet'
&& $extranetSiteId
)
{
$groupSiteList = [];
$resSite = BitrixSocialnetworkWorkgroupSiteTable::getList([
'filter' => [
'=GROUP_ID' => $groupId
],
'select' => [ 'SITE_ID' ]
]);
while ($groupSite = $resSite->fetch())
{
$groupSiteList[] = $groupSite['SITE_ID'];
}
if (!in_array($extranetSiteId, $groupSiteList, true))
{
$groupSiteList[] = $extranetSiteId;
CSocNetGroup::update($groupId, [
'SITE_ID' => $groupSiteList
]);
}
}
}
}
$successUserId = [];
foreach ($userIdList as $userId)
{
$user2groupRelation = CSocNetUserToGroup::getUserRole($userId, $groupId);
if ($user2groupRelation)
{
continue;
}
if (CSocNetUserToGroup::add([
"USER_ID" => $userId,
"GROUP_ID" => $groupId,
"ROLE" => UserToGroupTable::ROLE_USER,
"=DATE_CREATE" => CDatabase::currentTimeFunction(),
"=DATE_UPDATE" => CDatabase::currentTimeFunction(),
"MESSAGE" => '',
"INITIATED_BY_TYPE" => UserToGroupTable::INITIATED_BY_GROUP,
"INITIATED_BY_USER_ID" => $groupFields['OWNER_ID']
]))
{
$successUserId[] = $userId;
UserToGroup::addInfoToChat([
'group_id' => $groupId,
'user_id' => $userId,
'action' => UserToGroup::CHAT_ACTION_IN,
'role' => UserToGroupTable::ROLE_USER
]);
}
}
return $successUserId;
}