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,
);
}