• Модуль: socialnetwork
  • Путь к файлу: ~/bitrix/modules/socialnetwork/classes/general/rest.php
  • Класс: CSocNetLogRestService
  • Вызов: CSocNetLogRestService::getGroupSubject
static function getGroupSubject($arFields, $n, $server)
{
	$arOrder = $arFields['ORDER'] ?? null;
	if (!is_array($arOrder))
	{
		$arOrder = array("SORT" => "ASC");
	}

	$arFilter = [
		'SITE_ID' => (
			isset($arFields['SITE_ID'])
			&& !empty($arFields['SITE_ID'])
				? $arFields['SITE_ID']
				: CSite::getDefSite()
		)
	];

	if (
		isset($arFields['SUBJECT_ID'])
		&& (int)$arFields['SUBJECT_ID'] > 0
	)
	{
		$arFilter['ID'] = $arFields['SUBJECT_ID'];
	}

	$subjectIdList = [];
	$result = [];

	$resSubject = CSocNetGroupSubject::getList(
		$arOrder,
		$arFilter,
		false,
		self::getNavData($n),
		array("ID", "NAME")
	);
	while ($subjectFields = $resSubject->fetch())
	{
		$subjectIdList[] = $subjectFields['ID'];
		$result[$subjectFields['ID']] = $subjectFields;
	}

	if (!empty($subjectIdList))
	{
		$res = BitrixSocialnetworkWorkgroupSubjectSiteTable::getList([
			'filter' => [
				'@SUBJECT_ID' => $subjectIdList
			],
			'select' => ['SUBJECT_ID', 'SITE_ID']
		]);

		while ($subjectSiteFields = $res->Fetch())
		{
			if (
				isset($result[$subjectSiteFields['SUBJECT_ID']])
				&& is_array($result[$subjectSiteFields['SUBJECT_ID']])
			)
			{
				if (!isset($result[$subjectSiteFields['SUBJECT_ID']]['SITE_ID']))
				{
					$result[$subjectSiteFields['SUBJECT_ID']]['SITE_ID'] = [];
				}
				$result[$subjectSiteFields['SUBJECT_ID']]['SITE_ID'][] = $subjectSiteFields['SITE_ID'];
			}
		}
	}

	$result = array_values($result);

	return self::setNavData($result, $resSubject);
}