- Модуль: main
- Путь к файлу: ~/bitrix/modules/main/lib/rating/internal/action.php
- Класс: BitrixMainRatingInternalAction
- Вызов: Action::vote
static function vote(array $params = []): array
{
global $APPLICATION;
$voteList = [];
$allowVoteData = CRatings::checkAllowVote($params);
if (!$allowVoteData['RESULT'])
{
return $voteList;
}
$APPLICATION->RestartBuffer();
$userData = [];
$remoteAddr = $params['REMOTE_ADDR'];
if (in_array($params['ACTION'], [ 'plus', 'minus' ]))
{
$userData = CRatings::addRatingVote([
'ENTITY_TYPE_ID' => $params['ENTITY_TYPE_ID'],
'ENTITY_ID' => $params['ENTITY_ID'],
'VALUE' => $params['ACTION'] === 'plus' ? 1 : -1,
'USER_IP' => $remoteAddr,
'USER_ID' => $params['CURRENT_USER_ID'],
'REACTION' => (
$params['ACTION'] === 'plus'
&& !empty($params['REACTION'])
? $params['REACTION']
: CAllRatings::REACTION_DEFAULT
),
]);
}
elseif ($params['ACTION'] === 'change')
{
$userData = CRatings::changeRatingVote([
'ENTITY_TYPE_ID' => $params['ENTITY_TYPE_ID'],
'ENTITY_ID' => $params['ENTITY_ID'],
'USER_IP' => $remoteAddr,
'USER_ID' => $params['CURRENT_USER_ID'],
'REACTION' => (
!empty($params['REACTION'])
? $params['REACTION']
: CAllRatings::REACTION_DEFAULT
)
]);
}
else if ($params['ACTION'] === 'cancel')
{
$userData = CRatings::cancelRatingVote([
'ENTITY_TYPE_ID' => $params['ENTITY_TYPE_ID'],
'ENTITY_ID' => $params['ENTITY_ID'],
'USER_ID' => $params['CURRENT_USER_ID'],
]);
}
$voteList = CRatings::getRatingVoteList([
'ENTITY_TYPE_ID' => $params['ENTITY_TYPE_ID'],
'ENTITY_ID' => $params['ENTITY_ID'],
'LIST_LIMIT' => 0,
'LIST_TYPE' => ($params['ACTION'] === 'minus' ? 'minus' : 'plus'),
]);
if ($params['RATING_RESULT'] === 'Y')
{
$voteList = array_merge(
$voteList,
self::getVoteResult($params['ENTITY_TYPE_ID'], $params['ENTITY_ID'])
);
}
$voteList['action'] = $params['ACTION'];
$voteList['user_data'] = $userData;
return $voteList;
}