• Модуль: main
  • Путь к файлу: ~/bitrix/modules/main/classes/general/ratings.php
  • Класс: CAllRatings
  • Вызов: CAllRatings::getRatingVoteList
static function getRatingVoteList($arParam)
{
	global $USER;

	$reactionResult = self::GetRatingVoteReaction($arParam);
	$cnt = $reactionResult['items_all'];
	$cntReactions = $reactionResult['reactions'];

	$bplus = (mb_strtoupper($arParam['LIST_TYPE']) !== 'MINUS');

	$bIntranetInstalled = IsModuleInstalled("intranet");

	$bExtended = false;
	$arUserID = array();

	if (
		(
			array_key_exists("USER_FIELDS", $arParam)
			&& is_array($arParam["USER_FIELDS"])
		)
		|| (
			array_key_exists("USER_SELECT", $arParam)
			&& is_array($arParam["USER_SELECT"])
		)
	)
	{
		$bExtended = true;
		$sqlStr = CRatings::GetRatingVoteListSQLExtended($arParam, $bplus, $bIntranetInstalled);
	}
	else
	{
		$sqlStr = CRatings::GetRatingVoteListSQL($arParam, $bplus, $bIntranetInstalled);
	}

	$arList = Array();
	$arVoteList = Array();
	if ($arParam['LIST_LIMIT'] != 0 && ceil($cnt/ (int)$arParam['LIST_LIMIT']) >= (int)$arParam['LIST_PAGE'])
	{
		$res = new CDBResult();
		$res->NavQuery($sqlStr, $cnt, Array('iNumPage' => (int)$arParam['LIST_PAGE'], 'nPageSize' => (int)$arParam['LIST_LIMIT']));

		while ($row = $res->Fetch())
		{
			$ar = $row;

			if (!$bExtended)
			{
				$ar["PHOTO"] = $ar["PHOTO_SRC"] = '';
				if (!empty($ar["PERSONAL_PHOTO"]))
				{
					$arFileTmp = CFile::ResizeImageGet(
						$row["PERSONAL_PHOTO"],
						array('width' => 58, 'height' => 58),
						BX_RESIZE_IMAGE_EXACT,
						false
					);
					$ar['PHOTO'] = CFile::ShowImage($arFileTmp['src'], 21, 21, 'border=0');
					$ar['PHOTO_SRC'] = $arFileTmp['src'];
				}
				$ar['FULL_NAME'] = CUser::FormatName(CSite::GetNameFormat(false), $row, true);
			}
			else
				$arUserID[] = $row["ID"];

			if ($ar['ID'] != $USER->GetId())
				$arList[$ar['ID']] = $ar;
			else
				$arVoteList[$ar['ID']] = $ar;
		}
		foreach ($arList as $ar)
		{
			$arVoteList[$ar['ID']] = $ar;
		}

		if (
			$bExtended
			&& !empty($arUserID)
		)
		{
			$arUserListParams = array();
			$arUsers = array();

			$arUserListParams["FIELDS"] = (
				array_key_exists("USER_FIELDS", $arParam)
				&& is_array($arParam["USER_FIELDS"])
					? $arParam["USER_FIELDS"]
					: array("NAME", "LAST_NAME", "SECOND_NAME", "LOGIN", "PERSONAL_PHOTO")
			);

			$arUserListParams["FIELDS"] = array_unique(array_merge(array("ID"), $arUserListParams["FIELDS"]));

			if (
				array_key_exists("USER_SELECT", $arParam)
				&& is_array($arParam["USER_SELECT"])
			)
			{
				$arUserListParams["SELECT"] = $arParam["USER_SELECT"];
			}

			$rsUser = CUser::GetList(
				"ID",
				"ASC",
				array("ID" => implode("|", $arUserID)),
				$arUserListParams
			);

			while ($arUser = $rsUser->Fetch())
			{
				$arUser["PHOTO"] = $arUser["PHOTO_SRC"] = '';
				if (array_key_exists("PERSONAL_PHOTO", $arUser))
				{
					$arFileTmp = CFile::ResizeImageGet(
						$arUser["PERSONAL_PHOTO"],
						array("width" => 58, "height" => 58),
						BX_RESIZE_IMAGE_EXACT,
						false
					);
					$arUser["PHOTO_SRC"] = $arFileTmp["src"];
					$arUser["PHOTO"] = CFile::ShowImage($arFileTmp["src"], 21, 21, "border=0");
				}
				$arUser["FULL_NAME"] = CUser::FormatName(CSite::GetNameFormat(false), $arUser, true);
				$arUsers[$arUser["ID"]] = $arUser;
			}

			foreach($arVoteList as $i => $arVoteUser)
			{
				if (array_key_exists($arVoteUser["ID"], $arUsers))
				{
					foreach($arUsers[$arVoteUser["ID"]] as $key => $value)
					{
						$arVoteList[$i][$key] = $value;
					}
				}
			}
		}
	}

	return array(
		'items_all' => $cnt,
		'items_page' => count($arVoteList),
		'items' => $arVoteList,
		'reactions' => $cntReactions,
		'list_page' => isset($arParam['LIST_PAGE']) ? (int)$arParam['LIST_PAGE'] : 0,
	);
}