• Модуль: 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;
}