Your IP : 3.140.192.205


Current Path : /home/bitrix/ext_www/shuft.com.ua/bitrix/components/bitrix/socialnetwork.blog.blog/
Upload File :
Current File : /home/bitrix/ext_www/shuft.com.ua/bitrix/components/bitrix/socialnetwork.blog.blog/component.php

<?if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die();
/**
 * Bitrix vars
 *
 * @var array $arParams
 * @var array $arResult
 * @var CBitrixComponent $this
 * @var CMain $APPLICATION
 * @var CUser $USER
 * @var CDataBase $DB
 * @var CBitrixComponent $this
 *
 */
if (!IsModuleInstalled("blog")):
//	ShowError(GetMessage("BLOG_MODULE_NOT_INSTALL"));
	return;
elseif (!CModule::IncludeModule("socialnetwork")) :
//	ShowError(GetMessage("SONET_MODULE_NOT_INSTALL"));
	return;
endif;
/********************************************************************
				Input params
********************************************************************/
/************** BASE ***********************************************/
$arParams["BLOG_URL"] = preg_replace("/[^a-zA-Z0-9_-]/is", "", Trim($arParams["BLOG_URL"]));

$arParams["FILTER"] = (is_array($arParams["FILTER"]) ? $arParams["FILTER"] : array());
$arParams["FILTER_NAME"] = (empty($arParams["FILTER_NAME"]) || !preg_match("/^[A-Za-z_][A-Za-z01-9_]*$/i", $arParams["FILTER_NAME"]) ? "" : $arParams["FILTER_NAME"]);
$arParams["YEAR"] = intval($arParams["YEAR"]);
$arParams["MONTH"] = intval($arParams["MONTH"]);
$arParams["DAY"] = intval($arParams["DAY"]);
$arParams["CATEGORY_ID"] = intval($arParams["CATEGORY_ID"]);
$arParams["~BLOG_GROUP_ID"] = (!empty($arParams["GROUP_ID"]) ? $arParams["GROUP_ID"] : $arParams["BLOG_GROUP_ID"]);
$arParams["~BLOG_GROUP_ID"] = (is_array($arParams["~BLOG_GROUP_ID"]) ? $arParams["~BLOG_GROUP_ID"] : array($arParams["~BLOG_GROUP_ID"]));
$arParams["BLOG_GROUP_ID"] = array();
foreach($arParams["~BLOG_GROUP_ID"] as $k => $val)
{
	$val = intval($val);
	if ($val > 0)
		$arParams["BLOG_GROUP_ID"][] = intval($val);
}
sort($arParams["BLOG_GROUP_ID"], SORT_NUMERIC);
$arParams["USER_ID"] = intval($arParams["USER_ID"]);
$arParams["SOCNET_GROUP_ID"] = intval($arParams["SOCNET_GROUP_ID"]);

$arParams["SORT"] = (is_array($arParams["SORT"]) ? $arParams["SORT"] : array());
if (empty($arParams["SORT"])){
	$arParams["SORT_BY1"] = (empty($arParams["SORT_BY1"]) ? "DATE_PUBLISH" : $arParams["SORT_BY1"]);
	$arParams["SORT"][$arParams["SORT_BY1"]] = (empty($arParams["SORT_ORDER1"]) ? "DESC" : $arParams["SORT_ORDER1"]);
	$arParams["SORT_BY2"] = (empty($arParams["SORT_BY2"]) ? "ID" : $arParams["SORT_BY2"]);
	$arParams["SORT"][$arParams["SORT_BY2"]] = (empty($arParams["SORT_ORDER2"]) ? "DESC" : $arParams["SORT_ORDER2"]);
}
/************** Page settings **************************************/
$arParams["MESSAGE_COUNT"] = IntVal($arParams["MESSAGE_COUNT"])>0 ? IntVal($arParams["MESSAGE_COUNT"]): 20;
$arParams["NAV_TEMPLATE"] = (strlen($arParams["NAV_TEMPLATE"])>0 ? $arParams["NAV_TEMPLATE"] : "");
$arParams["PAGE_SETTINGS"] = (!empty($arParams["PAGE_SETTINGS"]) ? $arParams["PAGE_SETTINGS"] :
	array("bDescPageNumbering" => true, "nPageSize" => $arParams["MESSAGE_COUNT"], "bShowAll" => false));
$arParams["PAGE_SETTINGS"]["bShowAll"] = false;
/************** URL ************************************************/
$arParams["BLOG_VAR"] = (empty($arParams["BLOG_VAR"]) ? "blog" : $arParams["BLOG_VAR"]);
$arParams["PAGE_VAR"] = (empty($arParams["PAGE_VAR"]) ? "page" : $arParams["PAGE_VAR"]);
$arParams["USER_VAR"] = (empty($arParams["USER_VAR"]) ? "user_id" : $arParams["USER_VAR"]);
$arParams["POST_VAR"] = (empty($arParams["POST_VAR"]) ? "id" : $arParams["POST_VAR"]);
foreach(array(
		"BLOG" => $arParams["PAGE_VAR"]."=blog&".$arParams["BLOG_VAR"]."=#blog#",
		"BLOG_CATEGORY" => $arParams["PAGE_VAR"]."=blog&".$arParams["BLOG_VAR"]."=#blog#"."&category=#category_id#",
		"BLOG_POSTS" => $arParams["PAGE_VAR"]."=blog_posts&".$arParams["USER_VAR"]."=#user_id#",
		"POST" => $arParams["PAGE_VAR"]."=post&".$arParams["BLOG_VAR"]."=#blog#&".$arParams["POST_VAR"]."=#post_id#",
		"POST_EDIT" => $arParams["PAGE_VAR"]."=post_edit&".$arParams["BLOG_VAR"]."=#blog#&".$arParams["POST_VAR"]."=#post_id#",
		"USER" => $arParams["PAGE_VAR"]."=user&".$arParams["USER_VAR"]."=#user_id#",
		"SMILE" => "") as $url => $val) {
	$arParams["~PATH_TO_".$url] = (empty($arParams["PATH_TO_".$url]) ? $APPLICATION->GetCurPage()."?".$val : $arParams["PATH_TO_".$url]);
	$arParams["PATH_TO_".$url] = htmlspecialcharsbx($arParams["~PATH_TO_".$url]);
}
/************** ADDITIONAL *****************************************/
$arParams["DATE_TIME_FORMAT"] = trim(empty($arParams["DATE_TIME_FORMAT"]) ? $DB->DateFormatToPHP(CSite::GetDateFormat("FULL")) : $arParams["DATE_TIME_FORMAT"]);
$arParams["NAME_TEMPLATE"] = (empty($arParams["NAME_TEMPLATE"]) ? CSite::GetNameFormat() : $arParams["NAME_TEMPLATE"]);
$arParams["SHOW_LOGIN"] = ($arParams["SHOW_LOGIN"] == "Y");
$arParams["AVATAR_SIZE"] = intval($arParams["AVATAR_SIZE"]);
$arParams["SET_TITLE"] = "N";
CRatingsComponentsMain::GetShowRating($arParams); // $arParams["SHOW_RATING"]
$arParams["MESSAGE_LENGTH"] = ($arParams["MESSAGE_LENGTH"] > 0 ? $arParams["MESSAGE_LENGTH"] : 90);
/************** CACHE **********************************************/
if (!isset($arParams["CACHE_TIME"]))
	$arParams["CACHE_TIME"] = 3600*24*7;
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;
$arParams["CACHE_TAGS"] = (!empty($arParams["CACHE_TAGS"]) ? $arParams["CACHE_TAGS"] : array());
//$arParams["CACHE_TIME"] = 0;
/********************************************************************
				/Input params
********************************************************************/
global $CACHE_MANAGER;
$cache_path = CComponentEngine::MakeComponentPath("bitrix:socialnetwork.blog.blog");
$bGroupMode = ($arParams["SOCNET_GROUP_ID"] > 0);
$feature = "blog";
$user_id = intval($USER->GetID());

$arResult["ERROR_MESSAGE"] = Array();
$arResult["OK_MESSAGE"] = Array();
if (!(($bGroupMode && CSocNetFeatures::IsActiveFeature(SONET_ENTITY_GROUP, $arParams["SOCNET_GROUP_ID"], $feature)) ||
	CSocNetFeatures::IsActiveFeature(SONET_ENTITY_USER, $arParams["USER_ID"], $feature))) {
	$arResult["ERROR_MESSAGE"][] = array(
		"id" => "SONET_MODULE_NOT_AVAIBLE",
		"text" => GetMessage("BLOG_SONET_MODULE_NOT_AVAIBLE"));
} else if (!($arParams["USER_ID"] > 0 || $bGroupMode)) {
	$arResult["ERROR_MESSAGE"][] = array(
		"id" => "NO_BLOG",
		"text" => GetMessage("BLOG_BLOG_BLOG_NO_BLOG"));
	CHTTP::SetStatus("404 Not Found");
} else {
	$arResult["perms"] = BLOG_PERMS_DENY;
	$bCurrentUserIsAdmin = CSocNetUser::IsCurrentUserModuleAdmin();
	if($bGroupMode) {
		if (CSocNetFeaturesPerms::CanPerformOperation($user_id, SONET_ENTITY_GROUP, $arParams["SOCNET_GROUP_ID"], "blog", "full_post", $bCurrentUserIsAdmin) || $APPLICATION->GetGroupRight("blog") >= "W")
			$arResult["perms"] = BLOG_PERMS_FULL;
		elseif (CSocNetFeaturesPerms::CanPerformOperation($user_id, SONET_ENTITY_GROUP, $arParams["SOCNET_GROUP_ID"], "blog", "moderate_post", $bCurrentUserIsAdmin))
			$arResult["perms"] = BLOG_PERMS_MODERATE;
		elseif (CSocNetFeaturesPerms::CanPerformOperation($user_id, SONET_ENTITY_GROUP, $arParams["SOCNET_GROUP_ID"], "blog", "write_post", $bCurrentUserIsAdmin))
			$arResult["perms"] = BLOG_PERMS_WRITE;
		elseif (CSocNetFeaturesPerms::CanPerformOperation($user_id, SONET_ENTITY_GROUP, $arParams["SOCNET_GROUP_ID"], "blog", "premoderate_post", $bCurrentUserIsAdmin))
			$arResult["perms"] = BLOG_PERMS_PREMODERATE;
		elseif (CSocNetFeaturesPerms::CanPerformOperation($user_id, SONET_ENTITY_GROUP, $arParams["SOCNET_GROUP_ID"], "blog", "view_post", $bCurrentUserIsAdmin))
			$arResult["perms"] = BLOG_PERMS_READ;
	} else {
		if (CSocNetFeaturesPerms::CanPerformOperation($user_id, SONET_ENTITY_USER, $arParams["USER_ID"], "blog", "view_post", $bCurrentUserIsAdmin))
			$arResult["perms"] = BLOG_PERMS_READ;
	}
	if($arResult["perms"] < BLOG_PERMS_READ)
		$arResult["MESSAGE"][] = array(
			"id" => "ACCESS_DENIED",
			"text" => GetMessage("BLOG_BLOG_BLOG_FRIENDS_ONLY"));
}

if (!empty($arResult["ERROR_MESSAGE"]))
	return $this->IncludeComponentTemplate();
/********************************************************************
				Actions
********************************************************************/
//Message delete
if ((intval($_GET["del_id"]) > 0 || intval($_GET["hide_id"]) > 0) && CModule::IncludeModule("blog"))
{
	$del_id = intval($_GET["del_id"]); $hide_id = intval($_GET["hide_id"]);
	if ($_GET["success"] == "Y")
	{
		$arResult["OK_MESSAGE"][] = (!!$_GET["del_id"] ?
			array(
				"id" => "deleted".$_GET["del_id"],
				"text" => GetMessage("BLOG_BLOG_BLOG_MES_DELED")) :
			array(
				"id" => "hided".$_GET["hide_id"],
				"text" => GetMessage("BLOG_BLOG_BLOG_MES_HIDED")));
	}
	elseif (!check_bitrix_sessid())
	{
		$arResult["ERROR_MESSAGE"][] = array(
			"id" => "sessid",
			"text" => GetMessage("BLOG_BLOG_SESSID_WRONG"));
	}
	elseif ($del_id > 0)
	{
		$bCanDelete = ($arResult["perms"] >= BLOG_PERMS_FULL ? true : (!$bGroupMode && CBlogPost::GetSocNetPostPerms($del_id, true) >= BLOG_PERMS_FULL));
		if (!$bCanDelete)
		{
			$arResult["ERROR_MESSAGE"][] = array(
				"id" => "ACCESS_DENIED",
				"text" => GetMessage("BLOG_BLOG_BLOG_MES_DEL_NO_RIGHTS"));
		}
		elseif(CBlogPost::GetByID($del_id))
		{
			CBlogPost::DeleteLog($del_id);
			if (CBlogPost::Delete($del_id))
			{
				if ($bGroupMode)
					CSocNetGroup::SetLastActivity($arParams["SOCNET_GROUP_ID"]);
				LocalRedirect($APPLICATION->GetCurPageParam("del_id=".$del_id."&success=Y", Array("del_id", "hide_id", "sessid", "success")));
			} else {
				$arResult["ERROR_MESSAGE"][] = array(
					"id" => "DELETE",
					"text" => GetMessage("BLOG_BLOG_BLOG_MES_DEL_ERROR"));
			}
		}
	}
	else
	{
		$bCanHide = ($arResult["perms"] >= BLOG_PERMS_MODERATE ? true : (!$bGroupMode && CBlogPost::GetSocNetPostPerms($hide_id, true) >= BLOG_PERMS_MODERATE));
		if (!$bCanHide)
		{
			$arResult["ERROR_MESSAGE"][] = array(
				"id" => "ACCESS_DENIED",
				"text" => GetMessage("BLOG_BLOG_BLOG_MES_HIDE_NO_RIGHTS"));
		}
		elseif(CBlogPost::GetByID($hide_id))
		{
			if(CBlogPost::Update($hide_id, Array("PUBLISH_STATUS" => BLOG_PUBLISH_STATUS_READY)))
			{
				CBlogPost::DeleteLog($hide_id);
				LocalRedirect($APPLICATION->GetCurPageParam("hide_id=".$hide_id."&success=Y", Array("del_id", "hide_id", "sessid", "success")));
			} else {
				$arResult["ERROR_MESSAGE"][] = array(
					"id" => "HIDE",
					"text" => GetMessage("BLOG_BLOG_BLOG_MES_HIDE_ERROR"));
			}
		}
	}
}
/********************************************************************
				/Actions
********************************************************************/

/********************************************************************
				Data
********************************************************************/
$arResult["urlToPosts"] = CComponentEngine::MakePathFromTemplate($arParams["~PATH_TO_BLOG_POSTS"], array("user_id" => $arParams["USER_ID"]));

CpageOption::SetOptionString("main", "nav_page_in_session", "N");
$arFilter = (($arParams["FILTER_NAME"] !== "" && is_array($GLOBALS[$arParams["FILTER_NAME"]])) ? $GLOBALS[$arParams["FILTER_NAME"]] : array());
$cache = new CPHPCache();

$arFilter["PUBLISH_STATUS"] = "P";
$arFilter["BLOG_USE_SOCNET"] = "Y";
$arFilter["BLOG_GROUP_ID"] = $arParams["BLOG_GROUP_ID"];
$arFilter["GROUP_SITE_ID"] = SITE_ID;
$arFilter["SOCNET_SITE_ID"] = array(SITE_ID, false);
if (CModule::IncludeModule('extranet') && CExtranet::IsExtranetSite())
	$arFilter["SOCNET_SITE_ID"] = SITE_ID;

if($arParams["USER_ID"] > 0 && $arParams["USER_ID"] == $user_id) // in own profile
{
	if($arParams["4ME"] == "ALL")
	{
		$arFilter["FOR_USER"] = $user_id;
		$arFilter["FOR_USER_TYPE"] = "ALL";
	}
	elseif($arParams["4ME"] == "Y")
	{
		$arFilter["FOR_USER"] = $user_id;
		$arFilter["!AUTHOR_ID"] = $user_id;
		$arFilter["FOR_USER_TYPE"] = "SELF";
	}
	elseif($arParams["4ME"] == "DR")
	{
		$arFilter["FOR_USER"] = $user_id;
		$arFilter["!AUTHOR_ID"] = $user_id;
		$arFilter["FOR_USER_TYPE"] = "DR";
	}
	else
		$arFilter["FOR_USER"] = $user_id;
}
elseif($arParams["USER_ID"] > 0 && $arParams["USER_ID"] != $user_id) // in other user profile
{
	$arFilter["AUTHOR_ID"] = $arParams["USER_ID"];
	$arFilter["FOR_USER"] = IntVal($user_id);
}
elseif($arParams["SOCNET_GROUP_ID"]) // socialnetwork group
{
	$arFilter["SOCNET_GROUP_ID"] = $arParams["SOCNET_GROUP_ID"];
}

if ($arParams["YEAR"] && $arParams["MONTH"] && $arParams["DAY"])
{
	$from = mktime(0, 0, 0, $arParams["MONTH"], $arParams["DAY"], $arParams["YEAR"]);
	$to = mktime(0, 0, 0, $arParams["MONTH"], ($arParams["DAY"]+1), $arParams["YEAR"]);
	if($to > ($t = time()+CTimeZone::GetOffset()))
		$to = $t;
	$arFilter[">=DATE_PUBLISH"] = ConvertTimeStamp($from, "FULL");
	$arFilter["<DATE_PUBLISH"] = ConvertTimeStamp($to, "FULL");
}
elseif($arParams["YEAR"] && $arParams["MONTH"])
{
	$from = mktime(0, 0, 0, $arParams["MONTH"], 1, $arParams["YEAR"]);
	$to = mktime(0, 0, 0, ($arParams["MONTH"]+1), 1, $arParams["YEAR"]);
	if($to > ($t = time()+CTimeZone::GetOffset()))
		$to = $t;
	$arFilter[">=DATE_PUBLISH"] = ConvertTimeStamp($from, "FULL");
	$arFilter["<DATE_PUBLISH"] = ConvertTimeStamp($to, "FULL");
}
elseif($arParams["YEAR"])
{
	$from = mktime(0, 0, 0, 1, 1, $arParams["YEAR"]);
	$to = mktime(0, 0, 0, 1, 1, ($arParams["YEAR"]+1));
	if($to > ($t = time()+CTimeZone::GetOffset()))
		$to = $t;
	$arFilter[">=DATE_PUBLISH"] = ConvertTimeStamp($from, "FULL");
	$arFilter["<DATE_PUBLISH"] = ConvertTimeStamp($to, "FULL");
}
else
{
	$dfc = true;
	$arFilter["<=DATE_PUBLISH"] = ConvertTimeStamp(time()+CTimeZone::GetOffset(), "FULL");
}

if($arParams["CATEGORY_ID"])
{
	$arFilter["CATEGORY_ID_F"] = $arParams["CATEGORY_ID"];
}

$arResult["NAV_RESULT"] = "";
$arResult["NAV_STRING"] = "";
$arResult["POST"] = Array();
$arResult["IDS"] = Array();
$arResult["userCache"] = array();

$arParams["FILTER"] = array_merge($arParams["FILTER"], $arFilter);
$PAGEN=($GLOBALS["PAGEN_".($GLOBALS["NavNum"]+1)] || $arParams["PAGE_SETTINGS"]["iNumPage"]);
$arCacheID = array(
	"filter" => array_merge($arParams["FILTER"], ($dfc === true ? array("<=DATE_PUBLISH" => "") : array())),
	$arParams["SORT"],
	array_intersect_key($arParams["PAGE_SETTINGS"], array("bDescPageNumbering" => false, "nPageSize" => 10)),
	CTimeZone::GetOffset(),
	$USER->GetID()
);
$cache_id = "blog_blog_".md5(serialize($arCacheID));
/********************************************************************
				Actions
********************************************************************/
if(is_array($_REQUEST["options"]) && !empty($_REQUEST["options"]) &&
	check_bitrix_sessid() && $USER->IsAuthorized() && CModule::IncludeModule("blog"))
{
	foreach($_REQUEST["options"] as $val) {
		CBlogUserOptions::SetOption($val["post_id"], $val["name"], $val["value"], $USER->GetID());
	}
	if (defined("BX_COMP_MANAGED_CACHE")) {
		$CACHE_MANAGER->ClearByTag($val["name"].$val["post_id"]);
		$CACHE_MANAGER->ClearByTag($val["name"].$val["post_id"]."_".$USER->GetID());
		$CACHE_MANAGER->ClearByTag($val["name"]."_USER_".$USER->GetID());
	}
	else
	{
		$obCache = new CPHPCache;
		$obCache->Clean($cache_id, $cache_path);
	}

	$db_events = GetModuleEvents("socialnetwork", "OnAfterCBlogUserOptionsSet");
	while ($arEvent = $db_events->Fetch())
		ExecuteModuleEventEx($arEvent, Array($_REQUEST["options"], $cache_id, $cache_path));
}
/********************************************************************
				/Actions
********************************************************************/

if ($_REQUEST["return"] == "users") {
	include(str_replace(array("\\", "//"), "/", __DIR__."/")."users.php");
}
elseif ($PAGEN == null && $arParams["CACHE_TIME"] > 0) // cache only the first page
{
	if ($cache->InitCache($arParams["CACHE_TIME"], $cache_id, $cache_path))
	{
		$arRes = $cache->GetVars();
		$arResult["POST"] = $arRes["POST"];
		$arResult["IDS"] = $arRes["IDS"];
		$arResult["userCache"] = $arRes["userCache"];
		$arResult["NAV_RESULT"] = $arRes["NAV_RESULT"];
		$arResult["NAV_STRING"] = $arRes["NAV_STRING"];
		$arResult["USER"] = $arRes["USER"];
	}
}
if (empty($arResult["NAV_RESULT"]) && CModule::IncludeModule("blog"))
{
	$dbPost = CBlogPost::GetList(
		$arParams["SORT"],
		$arParams["FILTER"],
		false,
		$arParams["PAGE_SETTINGS"],
		array("ID", "TITLE", "BLOG_ID", "AUTHOR_ID",
			"DETAIL_TEXT", "DETAIL_TEXT_TYPE", "DATE_PUBLISH", "PUBLISH_STATUS",
			"ENABLE_COMMENTS", "VIEWS", "NUM_COMMENTS", "CATEGORY_ID", "CODE", "BLOG_OWNER_ID", "BLOG_GROUP_ID", "BLOG_GROUP_SITE_ID", "MICRO")
	);
	$arResult["NAV_RESULT"] = $dbPost;
	$arResult["NAV_STRING"] = $dbPost->GetPageNavString(GetMessage("MESSAGE_COUNT"), $arParams["NAV_TEMPLATE"]);
	$p = new blogTextParser(false, $arParams["PATH_TO_SMILE"]);
	$p->MaxStringLen = 20;
	$patt = array(); $repl = array();
	$patt[] = "#\[img\](.+?)\[/img\]#i"; $repl[] = "";
	$patt[] = "/\[document id=\d+([^\]]*)\]/is"; $repl[] = "";
	$patt[] = "#\[url(.+?)\](.*?)\[/url\]#is"; $repl[] = "\\2";
	$patt[] = "#\[video(.+?)\](.+?)\[/video\]#i"; $repl[] = "";
	$patt[] = "#^(.+?)<cut[\s]*(/>|>).*?$#is"; $repl[] = "\\1";
	$patt[] = "#^(.+?)\[cut[\s]*(/\]|\]).*?$#is"; $repl[] = "\\1";
	$patt[] = "#(\[|<)(/?)(b|u|i|list|code|quote|url|img|color|font|right|left|center|justify|/*)(.*?)(\]|>)#is"; $repl[] = " ";
	$patt[] = "#\s+#"; $repl[] = " ";
	$allow = array("HTML" => "N", "ANCHOR" => "N", "BIU" => "N",
		"IMG" => "N", "QUOTE" => "N", "CODE" => "N", "FONT" => "N",
		"LIST" => "N", "SMILES" => "N", "NL2BR" => "N");

	while ($arPost = $dbPost->GetNext())
	{
		$text = preg_replace($patt, $repl, $arPost["~DETAIL_TEXT"]);
		$text = TruncateText($text, $arParams["MESSAGE_LENGTH"]);
		$text = CBlogTools::DeleteDoubleBR($p->convert($text, true, false, $allow));
		$arPost["~CLEAR_TEXT"] = $text;
		$arPost["CLEAR_TEXT"] = $p->wrap_long_words($text);

		$arPost["perms"] = $arResult["perms"];
		if(!$bGroupMode && $arParams["USER_ID"] == $user_id && (empty($arParams["4ME"]) || $arPost["AUTHOR_ID"] == $user_id))
			$arPost["perms"] = BLOG_PERMS_FULL;
		elseif((!$bGroupMode && $arParams["USER_ID"] != $user_id) || strlen($arParams["4ME"]) > 0)
			$arPost["perms"] = CBlogPost::GetSocNetPostPerms($arPost["ID"], true);

		$arUser = $arResult["userCache"][$arPost["AUTHOR_ID"]];
		if (empty($arUser))
		{
			$arUser = CBlogUser::GetUserInfo($arPost["AUTHOR_ID"], $arParams["PATH_TO_USER"],array("AVATAR_SIZE" => $arParams["AVATAR_SIZE"]));
			$arUser["~AUTHOR_NAME"] = CUser::FormatName($arParams["NAME_TEMPLATE"],
				array("LAST_NAME" => $arUser["~LAST_NAME"], "NAME" => $arUser["~NAME"],
					"SECOND_NAME" => $arUser["~SECOND_NAME"], "LOGIN" => $arUser["~LOGIN"]),
				$arParams["SHOW_LOGIN"], false);
			$arUser["AUTHOR_NAME"] = htmlspecialcharsbx($arUser["~AUTHOR_NAME"]);
			$arResult["userCache"][$arPost["AUTHOR_ID"]] = $arUser;
		}
		$arPost["~AUTHOR_NAME"] = $arUser["~AUTHOR_NAME"];
		$arPost["AUTHOR_NAME"] = $arUser["AUTHOR_NAME"];
		$arPost["AUTHOR_AVATAR"] = $arUser["PERSONAL_PHOTO_resized"];

		$arPost["urlToPost"] = CComponentEngine::MakePathFromTemplate($arParams["~PATH_TO_POST"],
			array("post_id"=> CBlogPost::GetPostID($arPost["ID"], $arPost["CODE"], $arParams["ALLOW_POST_CODE"]), "user_id" => $arPost["BLOG_OWNER_ID"]));
		$arPost["urlToPosts"] = CComponentEngine::MakePathFromTemplate($arParams["~PATH_TO_BLOG_POSTS"],
			array("user_id" => $arPost["BLOG_OWNER_ID"]));
		$arPost["urlToPostsImportant"] = CComponentEngine::MakePathFromTemplate($arParams["~PATH_TO_POST_IMPORTANT"],
			array("user_id" => $arPost["BLOG_OWNER_ID"]));

		$arPost["urlToUser"] = $arPost["urlToAuthor"] = $arUser["url"];
		if($arPost["perms"] >= BLOG_PERMS_WRITE)
		{
			if($arPost["perms"] >= BLOG_PERMS_FULL || ($arPost["perms"] >= BLOG_PERMS_WRITE && $arPost["AUTHOR_ID"] == $user_id))
				$arPost["urlToEdit"] = CComponentEngine::MakePathFromTemplate($arParams["PATH_TO_POST_EDIT"], array("post_id"=>$arPost["ID"], "user_id" => $arPost["AUTHOR_ID"]));
			if($arPost["perms"] >= BLOG_PERMS_MODERATE)
				$arPost["urlToHide"] = htmlspecialcharsex($APPLICATION->GetCurPageParam("hide_id=".$arPost["ID"]."&".bitrix_sessid_get(), Array("del_id", "sessid", "success", "hide_id")));
			if($arPost["perms"] >= BLOG_PERMS_FULL)
				$arPost["urlToDelete"] = htmlspecialcharsex($APPLICATION->GetCurPageParam("del_id=".$arPost["ID"]."&".bitrix_sessid_get(), Array("del_id", "sessid", "success", "hide_id")));
		}
		$arResult["POST"][$arPost["ID"]] = $arPost;
		$arResult["IDS"][] = $arPost["ID"];
		$db_user = CUser::GetById($GLOBALS["USER"]->GetId());
		$arResult["USER"] = $db_user->Fetch();
	}
/*******************************************************************
				CACHE
*******************************************************************/
	if ($PAGEN == null && $arParams["CACHE_TIME"] > 0)
	{
		$cache->StartDataCache($arParams["CACHE_TIME"], $cache_id, $cache_path);
		if (defined("BX_COMP_MANAGED_CACHE")) {
			$GLOBALS["CACHE_MANAGER"]->StartTagCache($cache_path);
			foreach ($arParams["FILTER"] as $key => $val)
			{
				if (strpos($key, "POST_PARAM_") !== false)
				{
					$tag = substr($key, (strpos($key, "POST_PARAM_") + 11));
					foreach ($arResult["POST"] as $post_id => $arPost)
					{
						if ($val["USER_ID"] > 0)
						{
							$GLOBALS["CACHE_MANAGER"]->RegisterTag($tag.$post_id."_".$val["USER_ID"]);
							$GLOBALS["CACHE_MANAGER"]->RegisterTag($tag."_USER_".$val["USER_ID"]);
						}
						else
						{
							$GLOBALS["CACHE_MANAGER"]->RegisterTag($tag.$post_id);
						}
					}
				}
			}
			$GLOBALS["CACHE_MANAGER"]->EndTagCache();
		}

		$cache->EndDataCache(array(
			"POST" => $arResult["POST"],
			"IDS" => $arResult["IDS"],
			"userCache" => $arResult["userCache"],
			"NAV_RESULT" => $arResult["NAV_RESULT"],
			"NAV_STRING" => $arResult["NAV_STRING"],
			"USER" => $arResult["USER"]));
	}
/*******************************************************************
				/ CACHE
*******************************************************************/
}

if($arParams["SHOW_RATING"] == "Y" && !empty($arResult["IDS"]))
	$arResult["RATING"] = CRatings::GetRatingVoteResult('BLOG_POST', $arResult["IDS"]);
$this->IncludeComponentTemplate();
?>