• Модуль: 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").");";
}