<?
//Следуйте комментариям вида Число* для отслеживания пути исполнения.
//21*
//В случае AJAX запроса попадем сюда
if(!defined("B_PROLOG_INCLUDED") && isset($_REQUEST["AJAX_CALL"]) && $_REQUEST["AJAX_CALL"]=="Y")
{
require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_before.php");
//22*
//Проверям: ключ подошел?
if(CModule::IncludeModule("iblock"))
{
$arCache = CIBlockRSS::GetCache($_REQUEST["SESSION_PARAMS"]);
if($arCache && ($arCache["VALID"] == "Y"))
{
//23*
//Да!
//Забираем параметры "подключения"
$arParams = unserialize($arCache["CACHE"]);
//18*
//Добиваем теми, которые доступны "снаружи"
foreach($arParams["PAGE_PARAMS"] as $param_name)
{
if(!array_key_exists($param_name, $arParams))
$arParams[$param_name] = $_REQUEST["PAGE_PARAMS"][$param_name];
}
//24*
//Эта магия позволяет нам правильно определить
//текущий шаблон компонента (с учетом темы)
if(array_key_exists("PARENT_NAME", $arParams))
{
$component = new CBitrixComponent();
$component->InitComponent($arParams["PARENT_NAME"], $arParams["PARENT_TEMPLATE_NAME"]);
$component->InitComponentTemplate($arParams["PARENT_TEMPLATE_PAGE"]);
}
else
{
$component = null;
}
//25*
//Подключаем компонент
//Результат его работы (div) заменит тот, что сейчас у клиента в браузере
$APPLICATION->IncludeComponent($arParams["COMPONENT_NAME"], $arParams["TEMPLATE_NAME"], $arParams, $component);
}
}
require_once($_SERVER["DOCUMENT_ROOT"].BX_ROOT."/modules/main/include/epilog_after.php");
die();
}
if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true) die();
if(!CModule::IncludeModule("iblock"))
{
ShowError(GetMessage("IBLOCK_MODULE_NOT_INSTALLED"));
return;
}
/************************************************
Processing of received parameters
*************************************************/
$arParams = array(
"IBLOCK_ID" => intval($arParams["IBLOCK_ID"]),
"ELEMENT_ID" => intval($arParams["ELEMENT_ID"]),
"MAX_VOTE" => intval($arParams["MAX_VOTE"])<=0? 5: intval($arParams["MAX_VOTE"]),
"VOTE_NAMES" => is_array($arParams["VOTE_NAMES"])? $arParams["VOTE_NAMES"]: array(),
"CACHE_TYPE" => $arParams["CACHE_TYPE"],
"CACHE_TIME" => $arParams["CACHE_TIME"],
"DISPLAY_AS_RATING" => $arParams["DISPLAY_AS_RATING"]=="vote_avg"? "vote_avg": "rating",
"READ_ONLY" => $arParams["READ_ONLY"],
);
/****************************************
Any actions without cache
*****************************************/
//26*
//Сюда дошел в том числе и AJAX запрос
if(
$_SERVER["REQUEST_METHOD"] == "POST"
&& !empty($_REQUEST["vote"])
&& ($_REQUEST["AJAX_CALL"]=="Y" || check_bitrix_sessid())
&& $arParams["READ_ONLY"]!=="Y"
)
{
if(!is_array($_SESSION["IBLOCK_RATING"]))
$_SESSION["IBLOCK_RATING"] = Array();
$RATING = intval($_REQUEST["rating"])+1;
if($RATING>0 && $RATING<=$arParams["MAX_VOTE"])
{
$ELEMENT_ID = intval($_REQUEST["vote_id"]);
if($ELEMENT_ID>0 && !array_key_exists($ELEMENT_ID, $_SESSION["IBLOCK_RATING"]))
{
$_SESSION["IBLOCK_RATING"][$ELEMENT_ID]=true;
$rsProperties = CIBlockElement::GetProperty($arParams["IBLOCK_ID"], $ELEMENT_ID, "value_id", "asc", array("ACTIVE"=>"Y"));
$arProperties = array();
while($arProperty = $rsProperties->Fetch())
{
if($arProperty["CODE"]=="vote_count")
$arProperties["vote_count"] = $arProperty;
elseif($arProperty["CODE"]=="vote_sum")
$arProperties["vote_sum"] = $arProperty;
elseif($arProperty["CODE"]=="rating")
&nb |