- Модуль: tasks
- Путь к файлу: ~/bitrix/modules/tasks/lib/rest/controllers/task.php
- Класс: BitrixTasksRestControllersTask
- Вызов: Task::fillGroupInfo
private function fillGroupInfo(array $rows, array $params = []): array
{
static $groups = [];
$groupIds = [];
foreach ($rows as $id => $row)
{
if (
array_key_exists('GROUP_ID', $row)
&& !array_key_exists($row['GROUP_ID'], $groups)
)
{
$groupIds[] = (int)$row['GROUP_ID'];
}
$rows[$id]['GROUP'] = [];
}
$groupIds = array_unique($groupIds);
$params['CURRENT_USER_ID'] = (int)$this->getCurrentUser()->getId();
$select = [
'IMAGE_ID',
'OPENED',
'NUMBER_OF_MEMBERS',
'AVATAR_TYPE'
];
$groupsData = SocialNetworkGroup::getData($groupIds, $select, $params);
$avatarTypes = (Loader::includeModule('socialnetwork') ? BitrixSocialnetworkHelperWorkgroup::getAvatarTypes() : []);
$groupsData = array_map(
static function ($group) use ($avatarTypes) {
$imageUrl = '';
if (
(int)$group['IMAGE_ID'] > 0
&& is_array($file = CFile::GetFileArray($group['IMAGE_ID']))
)
{
$imageUrl = $file['SRC'];
}
elseif (
!empty($group['AVATAR_TYPE'])
&& isset($avatarTypes[$group['AVATAR_TYPE']])
)
{
$imageUrl = $avatarTypes[$group['AVATAR_TYPE']]['mobileUrl'];
}
return [
'ID' => $group['ID'],
'NAME' => $group['NAME'],
'OPENED' => ($group['OPENED'] === 'Y'),
'MEMBERS_COUNT' => (int)$group['NUMBER_OF_MEMBERS'],
'IMAGE' => $imageUrl,
'ADDITIONAL_DATA' => ($group['ADDITIONAL_DATA'] ?? []),
];
},
$groupsData
);
foreach ($groupsData as $id => $data)
{
$groups[$id] = $data;
}
foreach ($rows as $id => $row)
{
if (array_key_exists('GROUP_ID', $row) && array_key_exists($row['GROUP_ID'], $groups))
{
$rows[$id]['GROUP'] = $groups[$row['GROUP_ID']];
}
}
return $rows;
}