- Модуль: socialnetwork
- Путь к файлу: ~/bitrix/modules/socialnetwork/lib/controller/workgroup.php
- Класс: BitrixSocialnetworkControllerWorkgroup
- Вызов: Workgroup::getAction
public function getAction(array $params = []): ?array
{
$groupId = (int)($params['groupId'] ?? 0);
if ($groupId <= 0)
{
$this->addError(
new Error(
Loc::getMessage('SONET_CONTROLLER_WORKGROUP_EMPTY'),
'SONET_CONTROLLER_WORKGROUP_EMPTY'
)
);
return null;
}
$select = ($params['select'] ?? []);
$filter = ($params['filter'] ?? []);
$filter['ID'] = $groupId;
if (!CSocNetUser::isCurrentUserModuleAdmin(SITE_ID, false))
{
$filter['CHECK_PERMISSIONS'] = $this->getCurrentUser()->getId();
}
$result = CSocNetGroup::getList([], $filter, false, false, ['ID']);
if ($group = $result->fetch())
{
$groupItem = BitrixSocialnetworkItemWorkgroup::getById($group['ID']);
$groupFields = $groupItem->getFields();
if (in_array('AVATAR', $select, true))
{
$groupFields['AVATAR'] = File::getFileSource((int)$groupFields['IMAGE_ID'], 100, 100);
}
if (in_array('AVATAR_TYPES', $select, true))
{
$groupFields['AVATAR_TYPES'] = HelperWorkgroup::getAvatarTypes();
}
if (in_array('OWNER_DATA', $select, true))
{
$groupFields['OWNER_DATA'] = $this->getOwnerData($groupFields['OWNER_ID']);
}
if (in_array('SUBJECT_DATA', $select, true))
{
$groupFields['SUBJECT_DATA'] = $this->getSubjectData($groupFields['SUBJECT_ID']);
}
if (in_array('TAGS', $select, true))
{
$groupFields['TAGS'] = $this->getTags($groupId);
}
if (in_array('THEME_DATA', $select, true))
{
$groupFields['THEME_DATA'] = $this->getThemeData($groupId);
}
if (in_array('ACTIONS', $select, true))
{
$groupFields['ACTIONS'] = $this->getActions($groupId);
}
if (in_array('USER_DATA', $select, true))
{
$groupFields['USER_DATA'] = $this->getUserData($groupId);
}
if (in_array('DEPARTMENTS', $select, true))
{
$groupFields['DEPARTMENTS'] = $this->getDepartments($groupFields['UF_SG_DEPT']['VALUE']);
}
if ($groupFields['NUMBER_OF_MEMBERS'])
{
$groupFields['NUMBER_OF_MEMBERS_PLURAL'] = Loc::getPluralForm($groupFields['NUMBER_OF_MEMBERS']);
}
if ($groupFields['PROJECT_DATE_START'] || $groupFields['PROJECT_DATE_FINISH'])
{
$culture = Context::getCurrent()->getCulture();
$format = $culture->getDayMonthFormat();
/** @var DateTime $dateStart */
$dateStart = $groupFields['PROJECT_DATE_START'];
/** @var DateTime $dateFinish */
$dateFinish = $groupFields['PROJECT_DATE_FINISH'];
if ($dateStart)
{
$groupFields['FORMATTED_PROJECT_DATE_START'] = FormatDate(
$format,
MakeTimeStamp(DateTime::createFromTimestamp($dateStart->getTimestamp()))
);
}
if ($dateFinish)
{
$groupFields['FORMATTED_PROJECT_DATE_FINISH'] = FormatDate(
$format,
MakeTimeStamp(DateTime::createFromTimestamp($dateFinish->getTimestamp()))
);
}
}
if (
isset($params['mode'])
&& $params['mode'] === 'mobile'
)
{
$additionalData = HelperWorkgroup::getAdditionalData([
'ids' => [ $groupId ],
'features' => ($params['features'] ?? []),
'mandatoryFeatures' => ($params['mandatoryFeatures'] ?? []),
'currentUserId' => (int)$this->getCurrentUser()->getId(),
]);
$groupFields['ADDITIONAL_DATA'] = ($additionalData[$groupId] ?? []) ;
}
return $groupFields;
}
$this->addError(
new Error(
Loc::getMessage('SONET_CONTROLLER_WORKGROUP_NOT_FOUND'),
'SONET_CONTROLLER_WORKGROUP_NOT_FOUND'
)
);
return null;
}