- Модуль: main
- Путь к файлу: ~/bitrix/modules/main/classes/general/ratings.php
- Класс: CAllRatings
- Вызов: CAllRatings::GetRatingResult
static function GetRatingResult($ID, $entityId)
{
global $DB;
$err_mess = (CRatings::err_mess())."
Function: GetRatingResult
Line: ";
$ID = (int)$ID;
static $cacheRatingResult = array();
if(!array_key_exists($ID, $cacheRatingResult))
$cacheRatingResult[$ID] = array();
$arResult = array();
$arToSelect = array();
if(is_array($entityId))
{
foreach($entityId as $value)
{
$value = (int)$value;
if($value > 0)
{
if(array_key_exists($value, $cacheRatingResult[$ID]))
$arResult[$value] = $cacheRatingResult[$ID][$value];
else
{
$arResult[$value] = $cacheRatingResult[$ID][$value] = array();
$arToSelect[$value] = $value;
}
}
}
}
else
{
$value = (int)$entityId;
if($value > 0)
{
if(isset($cacheRatingResult[$ID][$value]))
$arResult[$value] = $cacheRatingResult[$ID][$value];
else
{
$arResult[$value] = $cacheRatingResult[$ID][$value] = array();
$arToSelect[$value] = $value;
}
}
}
if(!empty($arToSelect))
{
$strSql = "
SELECT ENTITY_TYPE_ID, ENTITY_ID, PREVIOUS_VALUE, CURRENT_VALUE, PREVIOUS_POSITION, CURRENT_POSITION
FROM b_rating_results
WHERE RATING_ID = '".$ID."' AND ENTITY_ID IN (".implode(',', $arToSelect).")
";
$res = $DB->Query($strSql, false, $err_mess.__LINE__);
while($arRes = $res->Fetch())
{
$arRes['PROGRESS_VALUE'] = $arRes['CURRENT_VALUE'] - $arRes['PREVIOUS_VALUE'];
$arRes['PROGRESS_VALUE'] = round($arRes['PROGRESS_VALUE'], 2);
$arRes['PROGRESS_VALUE'] = $arRes['PROGRESS_VALUE'] > 0? "+".$arRes['PROGRESS_VALUE']: $arRes['PROGRESS_VALUE'];
$arRes['ROUND_CURRENT_VALUE'] = round($arRes['CURRENT_VALUE']) == 0? 0: round($arRes['CURRENT_VALUE']);
$arRes['ROUND_PREVIOUS_VALUE'] = round($arRes['PREVIOUS_VALUE']) == 0? 0: round($arRes['CURRENT_VALUE']);
$arRes['CURRENT_POSITION'] = $arRes['CURRENT_POSITION'] > 0? $arRes['CURRENT_POSITION'] : GetMessage('RATING_NO_POSITION');
if ($arRes['PREVIOUS_POSITION']>0)
{
$arRes['PROGRESS_POSITION'] = $arRes['PREVIOUS_POSITION'] - $arRes['CURRENT_POSITION'];
$arRes['PROGRESS_POSITION'] = $arRes['PROGRESS_POSITION'] > 0? "+".$arRes['PROGRESS_POSITION']: $arRes['PROGRESS_POSITION'];
}
else
{
$arRes['PREVIOUS_POSITION'] = 0;
$arRes['PROGRESS_POSITION'] = 0;
}
$arResult[$arRes["ENTITY_ID"]] = $cacheRatingResult[$ID][$arRes["ENTITY_ID"]] = $arRes;
}
}
if(!is_array($entityId) && !empty($arResult))
$arResult = array_pop($arResult);
return $arResult;
}