function GetRSS($ID, $LANG, $TYPE, $LIMIT_NUM = false, $LIMIT_DAY = false, $yandex = false) { echo "<"."?xml version=\"1.0\" encoding=\"".LANG_CHARSET."\"?".">\n"; echo "<rss version=\"2.0\""; echo ">\n"; $dbr = CIBlock::GetList(array(), array( "type" => $TYPE, "LID" => $LANG, "ACTIVE" => "Y", "ID" => $ID, )); $arIBlock = $dbr->Fetch(); if ($arIBlock && ($arIBlock["RSS_ACTIVE"] == "Y")) { echo CIBlockRSS::GetRSSText($arIBlock, $LIMIT_NUM, $LIMIT_DAY, $yandex); } echo "</rss>\n"; }
$APPLICATION->RestartBuffer(); header("Content-Type: text/xml"); header("Pragma: no-cache"); if ($CACHE_TIME > 0 && $cache->InitCache($CACHE_TIME, $cache_id, "/iblock/rss_out/")) { $cache->Output(); } else { if ($CACHE_TIME > 0) { $cache->StartDataCache($CACHE_TIME, $cache_id, "/iblock/rss_out/"); } $db_res_iblock = CIBlock::GetList(array(), array("ACTIVE" => "Y", "ID" => $ID)); $bAccessable = False; if (($arIBlock = $db_res_iblock->Fetch()) && $arIBlock["RSS_ACTIVE"] == "Y") { $bAccessable = True; } echo "<?xml version=\"1.0\" encoding=\"Windows-1251\"?>\n"; echo "<rss version=\"2.0\""; if ($bYandex) { echo " xmlns:yandex=\"http://news.yandex.ru\""; } echo ">\n"; if ($bAccessable) { echo CIBlockRSS::GetRSSText($arIBlock, $NUM_NEWS, $NUM_DAYS, $bYandex); } echo "</rss>\n"; if ($CACHE_TIME > 0) { $cache->EndDataCache(array()); } } die; //******************************************************* }
function PreGenerateRSS($IBLOCK_ID, $yandex = true) { global $DB; $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 " . "\tLEFT JOIN b_lang S ON S.LID=B.LID " . "\tLEFT JOIN b_culture C ON C.ID=S.CULTURE_ID " . "WHERE B.ID = " . IntVal($IBLOCK_ID) . "\tAND IBG.GROUP_ID IN (2) " . "\tAND IBG.PERMISSION>='R'" . "\tAND (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 .= "<rss version=\"2.0\""; // $strRes .= "<rss version=\"2.0\" xmlns=\"http://backend.userland.com/rss2\""; if ($yandex) { $strRes .= " xmlns:yandex=\"http://news.yandex.ru\""; } $strRes .= ">\n"; $limit_num = false; $limit_day = 2; if (!$yandex) { $limit_num = false; if (strlen($arIBlock["RSS_FILE_LIMIT"]) > 0 && IntVal($arIBlock["RSS_FILE_LIMIT"]) > 0) { $limit_num = IntVal($arIBlock["RSS_FILE_LIMIT"]); } $limit_day = false; if (strlen($arIBlock["RSS_FILE_DAYS"]) > 0 && IntVal($arIBlock["RSS_FILE_DAYS"]) > 0) { $limit_day = IntVal($arIBlock["RSS_FILE_DAYS"]); } } $strRes .= CIBlockRSS::GetRSSText($arIBlock, $limit_num, $limit_day, $yandex); $strRes .= "</rss>\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") . ");"; }
function GetRSS($ID, $LANG, $TYPE, $LIMIT_NUM = false, $LIMIT_DAY = false, $yandex = false) { $dbr = GetIBlockListLang($LANG, $TYPE, array($ID)); $bAccessable = False; if (($arIBlock = $dbr->GetNext()) && $arIBlock["RSS_ACTIVE"] == "Y") { $bAccessable = True; } echo "<" . "?xml version=\"1.0\" encoding=\"" . LANG_CHARSET . "\"?" . ">\n"; echo "<rss version=\"2.0\""; // echo "<rss version=\"2.0\" xmlns=\"http://backend.userland.com/rss2\""; // if ($yandex) echo " xmlns:yandex=\"http://news.yandex.ru\""; echo ">\n"; if ($bAccessable) { echo CIBlockRSS::GetRSSText($arIBlock, $LIMIT_NUM, $LIMIT_DAY, $yandex); } echo "</rss>\n"; }