• Модуль: main
  • Путь к файлу: ~/bitrix/modules/main/lib/rating/internal/action.php
  • Класс: BitrixMainRatingInternalAction
  • Вызов: Action::list
static function list(array $params = []): array
{
	$mailInstalled = ModuleManager::isModuleInstalled('mail');
	$extranetInstalled = ModuleManager::isModuleInstalled('extranet');

	if ($extranetInstalled)
	{
		$params['USER_SELECT'] = [ 'UF_DEPARTMENT' ];
	}

	if ($mailInstalled)
	{
		$params['USER_FIELDS'] = [
			'ID', 'NAME', 'LAST_NAME', 'SECOND_NAME', 'LOGIN',
			'PERSONAL_PHOTO', 'EXTERNAL_AUTH_ID',
		];
	}

	$result = CRatings::getRatingVoteList($params);

	$voteList = [
		'items' => [],
		'items_all' => $result['items_all'],
		'items_page' => $result['items_page'],
		'reactions' => (
			isset($result['reactions'])
			&& is_array($result['reactions'])
				? $result['reactions']
				: []
		),
		'list_page' => $result['list_page'],
	];

	foreach ($result['items'] as $key => $value)
	{
		$userVote = [
			'USER_ID' => $value['ID'],
			'VOTE_VALUE' => $value['VOTE_VALUE'],
			'PHOTO' => $value['PHOTO'],
			'PHOTO_SRC' => $value['PHOTO_SRC'],
			'FULL_NAME' => $value['FULL_NAME'],
			'URL' => CComponentEngine::makePathFromTemplate(
				$params['PATH_TO_USER_PROFILE'],
				[
					'UID' => $value['USER_ID'],
					'user_id' => $value['USER_ID'],
					'USER_ID' => $value['USER_ID'],
				],
			),
		];

		if (
			$mailInstalled
			&& $value['EXTERNAL_AUTH_ID'] === 'email'
		)
		{
			$userVote['USER_TYPE'] = 'mail';
		}
		elseif (
			$extranetInstalled
			&& (
				empty($value['UF_DEPARTMENT'])
				|| (int)$value['UF_DEPARTMENT'][0] <= 0
			)
		)
		{
			$userVote['USER_TYPE'] = 'extranet';
		}

		$voteList['items'][] = $userVote;
	}

	if ($params['CURRENT_USER_ID'] > 0)
	{
		$event = new BitrixMainEvent(
			'main',
			'onRatingListViewed',
			[
				'entityTypeId' => $params['ENTITY_TYPE_ID'],
				'entityId' => $params['ENTITY_ID'],
				'userId' => $params['CURRENT_USER_ID'],
			]
		);
		$event->send();
	}

	return $voteList;
}