%PDF- %PDF-
Direktori : /home/bitrix/www/bitrix/components/bitrix/socialnetwork.blog.rss/ |
Current File : //home/bitrix/www/bitrix/components/bitrix/socialnetwork.blog.rss/component.php |
<? if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die(); if (!CModule::IncludeModule("blog")) { ShowError(GetMessage("BLOG_MODULE_NOT_INSTALL")); return; } if (!CModule::IncludeModule("socialnetwork")) { ShowError(GetMessage("SONET_MODULE_NOT_INSTALL")); return; } $arParams["MESSAGE_COUNT"] = IntVal($arParams["MESSAGE_COUNT"])>0 ? IntVal($arParams["MESSAGE_COUNT"]): 10; if ($arParams["CACHE_TYPE"] == "Y" || ($arParams["CACHE_TYPE"] == "A" && COption::GetOptionString("main", "component_cache_on", "Y") == "Y")) $arParams["CACHE_TIME"] = intval($arParams["CACHE_TIME"]); else $arParams["CACHE_TIME"] = 0; if (strtolower($arParams["TYPE"]) == "rss1") $arResult["TYPE"] = "RSS .92"; if (strtolower($arParams["TYPE"]) == "rss2") $arResult["TYPE"] = "RSS 2.0"; if (strtolower($arParams["TYPE"]) == "atom") $arResult["TYPE"] = "Atom .03"; if(strLen($arParams["PAGE_VAR"])<=0) $arParams["PAGE_VAR"] = "page"; if(strLen($arParams["POST_VAR"])<=0) $arParams["POST_VAR"] = "id"; if(strLen($arParams["USER_VAR"])<=0) $arParams["USER_VAR"] = "id"; $arParams["GROUP_ID"] = IntVal($arParams["GROUP_ID"]); $arParams["PATH_TO_POST"] = trim($arParams["PATH_TO_POST"]); if(strlen($arParams["PATH_TO_POST"])<=0) $arParams["PATH_TO_POST"] = htmlspecialcharsbx($APPLICATION->GetCurPage()."?".$arParams["PAGE_VAR"]."=post&".$arParams["BLOG_VAR"]."=#blog#&".$arParams["POST_VAR"]."=#post_id#"); $arParams["PATH_TO_USER"] = trim($arParams["PATH_TO_USER"]); if(strlen($arParams["PATH_TO_USER"])<=0) $arParams["PATH_TO_USER"] = htmlspecialcharsbx($APPLICATION->GetCurPage()."?".$arParams["PAGE_VAR"]."=user&".$arParams["USER_VAR"]."=#user_id#"); //---------------- $cacheSoNet = new CPHPCache; $cache_idSoNet = "blog_sonet_".SITE_ID; $cache_pathSoNet = "/".SITE_ID."/blog/sonet/"; $arAvBlog = Array(); if(CModule::IncludeModule("socialnetwork") && IntVal($arParams["SOCNET_GROUP_ID"]) <= 0 && IntVal($arParams["USER_ID"]) <= 0) { unset($arFilter[">PERMS"]); $cacheSoNet = new CPHPCache; $cache_idSoNet = "blog_sonet_".SITE_ID; $cache_pathSoNet = "/".SITE_ID."/blog/sonet/"; if ($arParams["CACHE_TIME"] > 0 && $cacheSoNet->InitCache($arParams["CACHE_TIME"], $cache_idSoNet, $cache_pathSoNet)) { $Vars = $cacheSoNet->GetVars(); $arAvBlog = $Vars["arAvBlog"]; $cacheSoNet->Output(); } else { if ($arParams["CACHE_TIME"] > 0) $cacheSoNet->StartDataCache($arParams["CACHE_TIME"], $cache_idSoNet, $cache_pathSoNet); $arAvBlog = Array(); $arFilterTmp = Array("ACTIVE" => "Y", "GROUP_SITE_ID" => SITE_ID); if(IntVal($arParams["GROUP_ID"]) > 0) $arFilterTmp["GROUP_ID"] = $arParams["GROUP_ID"]; $dbBlog = CBlog::GetList(Array(), $arFilterTmp); while($arBlog = $dbBlog->Fetch()) { if(IntVal($arBlog["SOCNET_GROUP_ID"]) > 0) { $featureOperationPerms = CSocNetFeaturesPerms::GetOperationPerm(SONET_ENTITY_GROUP, $arBlog["SOCNET_GROUP_ID"], "blog", "view_post"); if ($featureOperationPerms == SONET_ROLES_ALL) $arAvBlog[] = $arBlog["ID"]; } else { $featureOperationPerms = CSocNetFeaturesPerms::GetOperationPerm(SONET_ENTITY_USER, $arBlog["OWNER_ID"], "blog", "view_post"); if ($featureOperationPerms == SONET_RELATIONS_TYPE_ALL) $arAvBlog[] = $arBlog["ID"]; } } if ($arParams["CACHE_TIME"] > 0) $cacheSoNet->EndDataCache(array( "arAvBlog" => $arAvBlog) ); } } //------------------- $cache = new CPHPCache; $cache_id = "blog_rss_sonet_out_".serialize($arParams); $cache_path = "/".SITE_ID."/blog/rss_sonet/".strtolower($arResult["TYPE"])."/"; $APPLICATION->RestartBuffer(); header("Content-Type: text/xml"); header("Pragma: no-cache"); if ($arParams["CACHE_TIME"] > 0 && $cache->InitCache($arParams["CACHE_TIME"], $cache_id, $cache_path)) { $cache->Output(); } else { if ($textRSS = CBlog::BuildRSSAll(0, $arResult["TYPE"], $arParams["MESSAGE_COUNT"], SITE_ID, $arParams["PATH_TO_POST"], $arParams["PATH_TO_USER"], $arAvBlog, Array("GROUP_BLOG_POST" => $arParams["PATH_TO_GROUP_BLOG_POST"], "BLOG_POST" => $arParams["PATH_TO_POST"]))) { if ($arParams["CACHE_TIME"] > 0) $cache->StartDataCache($arParams["CACHE_TIME"], $cache_id, $cache_path); echo $textRSS; if ($arParams["CACHE_TIME"] > 0) $cache->EndDataCache(array()); } } die(); ?>