• Модуль: socialnetwork
  • Путь к файлу: ~/bitrix/modules/socialnetwork/lib/component/loglist/gratitude.php
  • Класс: BitrixSocialnetworkComponentLogListGratitude
  • Вызов: Gratitude::getGratitudesIblockData
static function getGratitudesIblockData(array $params = []): array
{
	$result = [
		'BADGES_DATA' => [],
		'ELEMENT_ID_LIST' => [],
		'GRAT_VALUE' => ''
	];

	$userId = (!empty($params['userId']) && (int)$params['userId'] > 0 ? (int)$params['userId'] : 0);
	if ($userId <= 0)
	{
		return $result;
	}

	if (!Loader::includeModule('iblock'))
	{
		return $result;
	}

	$honourIblockId = self::getGratitudesIblockId();
	$filter = [
		'IBLOCK_ID' => $honourIblockId,
		'ACTIVE' => 'Y',
		'=PROPERTY_USERS' => $userId,
	];

	$gratCode = (!empty($params['gratCode']) ? $params['gratCode'] : false);
	if ($gratCode)
	{
		$res = CIBlockPropertyEnum::getList(
			[],
			[
				'IBLOCK_ID' => $honourIblockId,
				'CODE' => 'GRATITUDE',
				'XML_ID' => $gratCode
			]
		);
		if ($enumFields = $res->fetch())
		{
			$filter['PROPERTY_GRATITUDE'] = $enumFields['ID'];
			$result['GRAT_VALUE'] = $enumFields['VALUE'];
		}
	}

	$iblockElementsIdList = [];
	$badgesData = [];

	$res = CIBlockElement::getList(
		[],
		$filter,
		false,
		false,
		[ 'ID', 'PROPERTY_GRATITUDE' ]
	);
	while($iblockElementFields = $res->fetch())
	{
		$badgeEnumId = $iblockElementFields['PROPERTY_GRATITUDE_ENUM_ID'];
		if (!isset($badgesData[$badgeEnumId]))
		{
			$badgesData[$badgeEnumId] = [
				'NAME' => $iblockElementFields['PROPERTY_GRATITUDE_VALUE'],
				'COUNT' => 0,
				'ID' => [],
			];
		}
		$badgesData[$badgeEnumId]['ID'][] = (int)$iblockElementFields['ID'];
		$iblockElementsIdList[] = $iblockElementFields['ID'];
	}

	$result['BADGES_DATA'] = $badgesData;
	$result['ELEMENT_ID_LIST'] = $iblockElementsIdList;

	return $result;
}