- Модуль: socialnetwork
- Путь к файлу: ~/bitrix/modules/socialnetwork/classes/general/rest.php
- Класс: CSocNetLogRestService
- Вызов: CSocNetLogRestService::getUserGroups
static function getUserGroups($arFields, $n, $server): array
{
$res = CSocNetUserToGroup::getList(
[ 'ID' => 'ASC' ],
[
'USER_ID' => self::getCurrentUserId(),
'<=ROLE' => SONET_ROLES_USER
],
false,
false,
[ 'GROUP_ID', 'GROUP_NAME', 'ROLE', 'GROUP_IMAGE_ID' ]
);
$result = [];
$files = [];
while ($groupFields = $res->fetch())
{
if (!empty($groupFields['GROUP_NAME']))
{
$groupFields['GROUP_NAME'] = Emoji::decode($groupFields['GROUP_NAME']);
}
$groupFields['GROUP_IMAGE'] = '';
$result[] = $groupFields;
if ($groupFields['GROUP_IMAGE_ID'] > 0)
{
$files[] = (int)$groupFields['GROUP_IMAGE_ID'];
}
}
if (
!empty($result)
&& ($extranetSiteId = self::getExtranetSiteId())
)
{
$extranetWorkgroupIdList = [];
$workgroupIdList = array_map(static function($item) { return $item['GROUP_ID']; }, $result);
$res = BitrixSocialnetworkWorkgroupSiteTable::getList([
'filter' => [
'GROUP_ID' => $workgroupIdList,
'SITE_ID' => $extranetSiteId
],
'select' => [ 'GROUP_ID' ]
]);
while ($workgroupSiteFields = $res->fetch())
{
$extranetWorkgroupIdList[] = (int)$workgroupSiteFields['GROUP_ID'];
}
if (!empty($extranetWorkgroupIdList))
{
foreach ($result as $key => $groupFields)
{
if (in_array((int)$groupFields['GROUP_ID'], $extranetWorkgroupIdList, true))
{
$result[$key]['IS_EXTRANET'] = 'Y';
}
}
}
}
if (!empty($files))
{
$files = CRestUtil::getFile($files, [
'width' => 150,
'height' => 150,
]);
foreach ($result as $key => $groupFields)
{
if ($groupFields['GROUP_IMAGE_ID'] > 0)
{
$result[$key]['GROUP_IMAGE'] = $files[$groupFields['GROUP_IMAGE_ID']];
}
}
}
return $result;
}