public function ImportFromID($id = 0) {
		global $USER;
		if (!is_object($USER)) $USER = new CUser;

		$channel = CIChannelsRssRep::GetRssChannelById($id);
		if (!$channel) return;

		$arUrl = parse_url($channel['URL']);

		if (!array_key_exists('port', $arUrl)) $arUrl['port'] = 80;
		if (!array_key_exists('path', $arUrl)) $arUrl['path'] = '';
		if (!array_key_exists('query', $arUrl)) $arUrl['query'] = '';

		CModule::IncludeModule('iblock');

		$rChannel = CIBlockRSS::GetNewsEx(
			$arUrl['host'],
			$arUrl['port'],
			$arUrl['path'],
			$arUrl['query']
		);

		$arChannel = CIBlockRSS::FormatArray($rChannel);

		$mapper = CIChannels::getRssMapperByID($channel['MAPPER']);

		$ins = new $mapper['class'];

		foreach ($arChannel['item'] as $item) {
			$arFields = $ins->{$mapper['method']}($item, $channel);
			if (empty ($arFields)) continue;

			$arFields['ACTIVE'] = 'Y';
			$arFields['IBLOCK_TYPE_ID'] = $channel['IBLOCK_TYPE_ID'];
			$arFields['IBLOCK_ID'] = $channel['IBLOCK_ID'];

			if ($channel['IBLOCK_SECTION_ID'] != '0') {
				$arFields['IBLOCK_SECTION_ID'] = $channel['IBLOCK_SECTION_ID'];
			}

			$iblockElement = new CIBlockElement();
			$iNewElementID = $iblockElement->Add($arFields);
		}

		return sprintf('%s(%d);', __METHOD__, $id);
	}
示例#2
0
            ?>
		<img src="<?php 
            echo $arItem["enclosure"]["url"];
            ?>
" alt="<?php 
            echo $arItem["enclosure"]["url"];
            ?>
" /><br />
	<?php 
        }
        ?>
	<?php 
        if (strlen($arItem["pubDate"]) > 0) {
            ?>
		<p><?php 
            echo CIBlockRSS::XMLDate2Dec($arItem["pubDate"], FORMAT_DATE);
            ?>
</p>
	<?php 
        }
        ?>
	<?php 
        if (strlen($arItem["link"]) > 0) {
            ?>
		<a href="<?php 
            echo $arItem["link"];
            ?>
"><?php 
            echo $arItem["title"];
            ?>
</a>
示例#3
0
	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";
	}
示例#4
0
 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") . ");";
 }
示例#5
0
 if (strlen($arResult["SERVER_NAME"]) <= 0 && defined("SITE_SERVER_NAME")) {
     $arResult["SERVER_NAME"] = SITE_SERVER_NAME;
 }
 if (strlen($arResult["SERVER_NAME"]) <= 0 && defined("SITE_SERVER_NAME")) {
     $b = "sort";
     $o = "asc";
     $rsSite = CSite::GetList($b, $o, array("LID" => $arResult["LID"]));
     if ($arSite = $rsSite->Fetch()) {
         $arResult["SERVER_NAME"] = $arSite["SERVER_NAME"];
     }
 }
 if (strlen($arResult["SERVER_NAME"]) <= 0) {
     $arResult["SERVER_NAME"] = COption::GetOptionString("main", "server_name", "www.bitrixsoft.com");
 }
 $arResult["PICTURE"] = CFile::GetFileArray($arResult["PICTURE"]);
 $arResult["NODES"] = CIBlockRSS::GetNodeList($arResult["ID"]);
 $arSelect = array("ID", "CODE", "XML_ID", "IBLOCK_ID", "NAME", "SORT", "DETAIL_PAGE_URL", "PREVIEW_TEXT", "PREVIEW_TEXT_TYPE", "DETAIL_TEXT", "DETAIL_TEXT_TYPE", "PREVIEW_PICTURE", "DETAIL_PICTURE", "IBLOCK_SECTION_ID", "DATE_ACTIVE_FROM", "ACTIVE_FROM", "DATE_ACTIVE_TO", "ACTIVE_TO", "SHOW_COUNTER", "SHOW_COUNTER_START", "IBLOCK_TYPE_ID", "IBLOCK_CODE", "IBLOCK_EXTERNAL_ID", "DATE_CREATE", "CREATED_BY", "TIMESTAMP_X", "MODIFIED_BY", "PROPERTY_*");
 $arFilter = array("ACTIVE" => "Y", "CHECK_PERMISSIONS" => "Y");
 if ($arParams["CHECK_DATES"]) {
     $arFilter["ACTIVE_DATE"] = "Y";
 }
 if (array_key_exists("SECTION", $arResult)) {
     $arFilter["SECTION_ID"] = $arResult["SECTION"]["ID"];
     if ($arParams["INCLUDE_SUBSECTIONS"]) {
         $arFilter["INCLUDE_SUBSECTIONS"] = "Y";
     }
 } else {
     $arFilter["IBLOCK_ID"] = $arResult["ID"];
 }
 if ($arParams["NUM_DAYS"] > 0) {
     $arFilter["ACTIVE_FROM"] = date($DB->DateFormatToPHP(CLang::GetDateFormat("FULL")), mktime(date("H"), date("i"), date("s"), date("m"), date("d") - IntVal($arParams["NUM_DAYS"]), date("Y")));
示例#6
0
	<tr>
		<td  colspan="2" align="center">
			<table class="internal">
				<tr class="heading">
					<td><?php 
            echo GetMessage("IB_E_RSS_FIELD");
            ?>
</td>
					<td><?php 
            echo GetMessage("IB_E_RSS_TEMPL");
            ?>
</td>
				</tr>
				<?php 
            $arCurNodesRSS = CIBlockRSS::GetNodeList(IntVal($ID));
            $arNodesRSS = CIBlockRSS::GetRSSNodes();
            foreach ($arNodesRSS as $key => $val) {
                if ($bVarsFromForm) {
                    $DB->InitTableVarsForEdit("b_iblock_rss", "RSS_", "str_RSS_", "_" . $key);
                }
                ?>
					<tr>
						<td>
							<input type="text" size="20" readonly maxlength="50" name="RSS_NODE_<?php 
                echo $key;
                ?>
" value="<?php 
                echo $val;
                ?>
">
						</td>
示例#7
0
        $arParams["QUERY_STR"] = $ar["query"];
    }
} else {
    $arParams["SITE"] = trim($arParams["SITE"]);
    $arParams["PORT"] = intval($arParams["PORT"]);
    $arParams["PATH"] = trim($arParams["PATH"]);
    $arParams["QUERY_STR"] = trim($arParams["QUERY_STR"]);
}
$arParams["OUT_CHANNEL"] = $arParams["OUT_CHANNEL"] == "Y";
$arParams["NUM_NEWS"] = intval($arParams["NUM_NEWS"]);
if ($arParams["PROCESS"] != "QUOTE" && $arParams["PROCESS"] != "TEXT") {
    $arParams["PROCESS"] = "NONE";
}
/*************************************************************************
	Start caching
*************************************************************************/
if ($this->StartResultCache()) {
    $arResult = CIBlockRSS::GetNewsEx($arParams["SITE"], $arParams["PORT"], $arParams["PATH"], $arParams["QUERY_STR"], $arParams["OUT_CHANNEL"]);
    $arResult = CIBlockRSS::FormatArray($arResult, $arParams["OUT_CHANNEL"]);
    if ($arParams["NUM_NEWS"] > 0) {
        while (count($arResult["item"]) > $arParams["NUM_NEWS"]) {
            array_pop($arResult["item"]);
        }
    }
    if ($arParams["PROCESS"] == "QUOTE") {
        array_walk_recursive($arResult, create_function('&$val, $key', '$val=htmlspecialcharsex($val);'));
    } elseif ($arParams["PROCESS"] == "TEXT") {
        array_walk_recursive($arResult, create_function('&$val, $key', '$val=str_replace(array("    ", "\\r\\n"), array("&nbsp;&nbsp;&nbsp;&nbsp;", "<br>"), HTMLToTxt($val));'));
    }
    $this->IncludeComponentTemplate();
}
示例#8
0
        $this->IncludeComponentTemplate();
    } else {
        $this->AbortResultCache();
        ShowError(GetMessage("PHOTO_ELEMENT_NOT_FOUND"));
        @define("ERROR_404", "Y");
        if ($arParams["SET_STATUS_404"] === "Y") {
            CHTTP::SetStatus("404 Not Found");
        }
    }
}
if (array_key_exists("AJAX", $arResult) && $_REQUEST["AJAX_CALL"] != "Y") {
    //13*
    //Сохраняем в БД кеш
    if (!is_array($_SESSION["iblock.vote"])) {
        $_SESSION["iblock.vote"] = array();
    }
    if (!array_key_exists($arResult["AJAX"]["SESSION_KEY"], $_SESSION["iblock.vote"])) {
        $arCache = CIBlockRSS::GetCache($arResult["AJAX"]["SESSION_KEY"]);
        if (!$arCache || $arCache["VALID"] != "Y") {
            CIBlockRSS::UpdateCache($arResult["AJAX"]["SESSION_KEY"], serialize($arResult["AJAX"]["SESSION_PARAMS"]), 24 * 30, is_array($arCache));
        }
        $_SESSION["iblock.vote"][$arResult["AJAX"]["SESSION_KEY"]] = true;
    }
    if (!defined("ADMIN_SECTION") || ADMIN_SECTION !== true) {
        //14*
        //Подключаем поддержку (библиотеку)
        IncludeAJAX();
    }
    //15*
    //Продолжение экскурсии в файле jscript.php
}
示例#9
0
    $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;
    //*******************************************************
}
示例#10
0
<?php

define("ADMIN_SECTION", true);
require $_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/main/include/prolog_before.php";
header("Content-Type: text/xml");
CModule::IncludeModule("iblock");
if (IntVal($ID) > 0) {
    $ID = IntVal($ID);
} else {
    $ID = Trim($ID);
}
$LANG = Trim($_REQUEST["LANG"]);
$TYPE = Trim($TYPE);
$LIMIT = IntVal($LIMIT);
CIBlockRSS::GetRSS($ID, $LANG, $TYPE, $LIMIT, false, false);
示例#11
0
 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";
 }