- Модуль: iblock
- Путь к файлу: ~/bitrix/modules/iblock/classes/mysql/iblockrss.php
- Класс: CIBlockRSS
- Вызов: CIBlockRSS::PreGenerateRSS
static function PreGenerateRSS($IBLOCK_ID, $yandex = true)
{
global $DB;
$protocol = BitrixMainContext::getCurrent()->getRequest()->isHttps() ? 'https://' : 'http://';
$strSql =
"SELECT DISTINCT B.*, C.CHARSET, S.SERVER_NAME, ".$DB->DateToCharFunction("B.TIMESTAMP_X")." as TIMESTAMP_X ".
"FROM b_iblock B LEFT JOIN b_iblock_group IBG ON IBG.IBLOCK_ID=B.ID ".
" LEFT JOIN b_lang S ON S.LID=B.LID ".
" LEFT JOIN b_culture C ON C.ID=S.CULTURE_ID ".
"WHERE B.ID = ".intval($IBLOCK_ID).
" AND IBG.GROUP_ID IN (2) ".
" AND IBG.PERMISSION>='R'".
" AND (IBG.PERMISSION='X' OR B.ACTIVE='Y')";
$dbr = $DB->Query($strSql);
$bAccessable = False;
if (($arIBlock = $dbr->GetNext()) && ($arIBlock["RSS_FILE_ACTIVE"]=="Y" && !$yandex || $arIBlock["RSS_YANDEX_ACTIVE"]=="Y" && $yandex))
$bAccessable = True;
if (!$bAccessable) return "";
$strRes = "";
$strRes .= "<"."?xml version="1.0" encoding="".$arIBlock["CHARSET"].""?".">n";
$strRes .= " '' && intval($arIBlock["RSS_FILE_LIMIT"])>0)
$limit_num = intval($arIBlock["RSS_FILE_LIMIT"]);
$limit_day = false;
if ($arIBlock["RSS_FILE_DAYS"] <> '' && intval($arIBlock["RSS_FILE_DAYS"])>0)
$limit_day = intval($arIBlock["RSS_FILE_DAYS"]);
}
$strRes .= CIBlockRSS::GetRSSText($arIBlock, $limit_num, $limit_day, $yandex);
$strRes .= "n";
$rss_file = $_SERVER["DOCUMENT_ROOT"].COption::GetOptionString("iblock", "path2rss", "/upload/");
if ($yandex)
$rss_file .= "yandex_rss_".intval($arIBlock["ID"]).".xml";
else
$rss_file .= "iblock_rss_".intval($arIBlock["ID"]).".xml";
$fp = fopen($rss_file, "w");
fwrite($fp, $strRes);
fclose($fp);
global $pPERIOD;
$pPERIOD = intval($arIBlock["RSS_TTL"])*60*60;
return "CIBlockRSS::PreGenerateRSS(".$IBLOCK_ID.", ".($yandex?"true":"false").");";
}