%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /home/bitrix/www/bitrix/components/bitrix/socialnetwork.log.ex/
Upload File :
Create Path :
Current File : //home/bitrix/www/bitrix/components/bitrix/socialnetwork.log.ex/component.php

<?
if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die();
/** @var CBitrixComponent $this */
/** @var array $arParams */
/** @var array $arResult */
/** @var string $componentPath */
/** @var string $componentName */
/** @var string $componentTemplate */
/** @global CDatabase $DB */
/** @global CUser $USER */
/** @global CMain $APPLICATION */
/** @global CCacheManager $CACHE_MANAGER */
/** @global CUserTypeManager $USER_FIELD_MANAGER */
global $CACHE_MANAGER, $USER_FIELD_MANAGER;

use Bitrix\Main\Loader;
use \Bitrix\Socialnetwork\UserToGroupTable;

require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/components/bitrix/socialnetwork.log.ex/include.php");

CPageOption::SetOptionString("main", "nav_page_in_session", "N");

if (!CModule::IncludeModule("socialnetwork"))
{
	ShowError(GetMessage("SONET_MODULE_NOT_INSTALL"));
	return;
}

$arResult["isExtranetSite"] = (CModule::IncludeModule('extranet') && CExtranet::IsExtranetSite());

$folderUsers = COption::GetOptionString("socialnetwork", "user_page", false, SITE_ID);
$folderUsers = (
	$folderUsers
		? $folderUsers
		: ($arResult["isExtranetSite"] ? SITE_DIR."contacts/personal/" : SITE_DIR."company/personal/")
);

$pathToUser = COption::GetOptionString("main", "TOOLTIP_PATH_TO_USER", false, SITE_ID);
$pathToUser = ($pathToUser ? $pathToUser : $folderUsers."user/#user_id#/");

$folderWorkgroups = COption::GetOptionString("socialnetwork", "workgroups_page", false, SITE_ID);
$folderWorkgroups = ($folderWorkgroups ? $folderWorkgroups : SITE_DIR."workgroups/");

$pathToUserBlogPost = COption::GetOptionString("socialnetwork", "userblogpost_page", false, SITE_ID);
$pathToUserBlogPost = ($pathToUserBlogPost ? $pathToUserBlogPost : $folderUsers."user/#user_id#/blog/#post_id#/");

$pathToLogEntry = COption::GetOptionString("socialnetwork", "log_entry_page", false, SITE_ID);
$pathToLogEntry = ($pathToLogEntry ? $pathToLogEntry : $folderUsers."personal/log/#log_id#/");

$pathToSmile = COption::GetOptionString("socialnetwork", "smile_page", false, SITE_ID);
$pathToSmile = ($pathToSmile ? $pathToSmile : "/bitrix/images/socialnetwork/smile/");

$pathToMessagesChat = COption::GetOptionString("main", "TOOLTIP_PATH_TO_MESSAGES_CHAT", false, SITE_ID);
$pathToMessagesChat = ($pathToMessagesChat ? $pathToMessagesChat : $folderUsers."messages/chat/#user_id#/");

$pathToVideoCall = COption::GetOptionString("main", "TOOLTIP_PATH_TO_VIDEO_CALL", false, SITE_ID);
$pathToVideoCall = ($pathToVideoCall ? $pathToVideoCall : $folderUsers."video/#user_id#/");

if (
	!array_key_exists("CHECK_PERMISSIONS_DEST", $arParams) 
	|| strLen($arParams["CHECK_PERMISSIONS_DEST"]) <= 0
)
{
	$arParams["CHECK_PERMISSIONS_DEST"] = "N";
}

if (
	!array_key_exists("USE_FOLLOW", $arParams) 
	|| strLen($arParams["USE_FOLLOW"]) <= 0
)
{
	$arParams["USE_FOLLOW"] = "Y";
}

if(defined("DisableSonetLogFollow") && DisableSonetLogFollow === true)
	$arParams["USE_FOLLOW"] = "N";

if(!$USER->IsAuthorized())
{
	$arParams["USE_FOLLOW"] = "N";
}

if(isset($arParams["DISPLAY"]))
{
	$arParams["USE_FOLLOW"] = "N";
}

if(!IsModuleInstalled("crm"))
{
	$arParams["IS_CRM"] = "N";
}

$arParams["PUBLIC_MODE"] = (isset($arParams["PUBLIC_MODE"]) ? $arParams["PUBLIC_MODE"] : "N");

$arResult["CAN_DELETE"] = CSocNetUser::IsCurrentUserModuleAdmin(SITE_ID, false);
$arResult["ENTITIES_CORRESPONDENCE"] = array();

// activation rating
CRatingsComponentsMain::GetShowRating($arParams);
if (
	!array_key_exists("RATING_TYPE", $arParams) 
	|| strlen($arParams["RATING_TYPE"]) <= 0
)
{
	$arParams["RATING_TYPE"] = COption::GetOptionString("main", "rating_vote_template", COption::GetOptionString("main", "rating_vote_type", "standart") == "like"? "like": "standart");
	if ($arParams["RATING_TYPE"] == "like_graphic")
		$arParams["RATING_TYPE"] = "like";
	else if ($arParams["RATING_TYPE"] == "standart")
		$arParams["RATING_TYPE"] = "standart_text";
}
else
{
	if ($arParams["RATING_TYPE"] == "like_graphic")
		$arParams["RATING_TYPE"] = "like";
	else if ($arParams["RATING_TYPE"] == "standart")
		$arParams["RATING_TYPE"] = "standart_text";
}

if (
	!array_key_exists("USER_VAR", $arParams)
	|| strLen($arParams["USER_VAR"]) <= 0
)
{
	$arParams["USER_VAR"] = "user_id";
}

if (
	!array_key_exists("GROUP_VAR", $arParams)
	|| strLen($arParams["GROUP_VAR"]) <= 0
)
{
	$arParams["GROUP_VAR"] = "group_id";
}

if (
	!array_key_exists("PAGE_VAR", $arParams)
	|| strLen($arParams["PAGE_VAR"]) <= 0
)
{
	$arParams["PAGE_VAR"] = "page";
}

$arParams["PATH_TO_USER"] = (array_key_exists("PATH_TO_USER", $arParams) && strlen(trim($arParams["PATH_TO_USER"])) > 0 ? trim($arParams["PATH_TO_USER"]) : $pathToUser);
$arParams["PATH_TO_USER_MICROBLOG"] = (array_key_exists("PATH_TO_USER_MICROBLOG", $arParams) && strlen(trim($arParams["PATH_TO_USER_MICROBLOG"])) > 0 ? trim($arParams["PATH_TO_USER_MICROBLOG"]) : $folderUsers."user/#user_id#/blog/");
$arParams["PATH_TO_USER_BLOG_POST"] = $arParams["PATH_TO_USER_MICROBLOG_POST"] = (array_key_exists("PATH_TO_USER_BLOG_POST", $arParams) && strlen(trim($arParams["PATH_TO_USER_BLOG_POST"])) > 0 ? trim($arParams["PATH_TO_USER_BLOG_POST"]) : $pathToUserBlogPost);
$arParams["PATH_TO_USER_BLOG_POST_EDIT"] = (array_key_exists("PATH_TO_USER_BLOG_POST_EDIT", $arParams) && strlen(trim($arParams["PATH_TO_USER_BLOG_POST_EDIT"])) > 0 ? trim($arParams["PATH_TO_USER_BLOG_POST_EDIT"]) : $folderUsers."user/#user_id#/blog/edit/#post_id#/");
$arParams["PATH_TO_USER_BLOG_POST_IMPORTANT"] = (array_key_exists("PATH_TO_USER_BLOG_POST_IMPORTANT", $arParams) && strlen(trim($arParams["PATH_TO_USER_BLOG_POST_IMPORTANT"])) > 0 ? trim($arParams["PATH_TO_USER_BLOG_POST_IMPORTANT"]) : $folderUsers."user/#user_id#/blog/important/");

$arParams["PATH_TO_GROUP"] = (array_key_exists("PATH_TO_GROUP", $arParams) && strlen(trim($arParams["PATH_TO_GROUP"])) > 0 ? trim($arParams["PATH_TO_GROUP"]) : $folderWorkgroups."group/#group_id#/");
$arParams["PATH_TO_GROUP_MICROBLOG"] = (array_key_exists("PATH_TO_GROUP_MICROBLOG", $arParams) && strlen(trim($arParams["PATH_TO_GROUP_MICROBLOG"])) > 0 ? trim($arParams["PATH_TO_GROUP_MICROBLOG"]) : $folderWorkgroups."group/#group_id#/blog/");
$arParams["PATH_TO_GROUP_BLOG_POST"] = $arParams["PATH_TO_GROUP_MICROBLOG_POST"] = (array_key_exists("PATH_TO_GROUP_BLOG_POST", $arParams) && strlen(trim($arParams["PATH_TO_GROUP_BLOG_POST"])) > 0 ? trim($arParams["PATH_TO_GROUP_BLOG_POST"]) : $folderWorkgroups."group/#group_id#/blog/#post_id#/");

$arParams["PATH_TO_LOG_ENTRY"] = (array_key_exists("PATH_TO_LOG_ENTRY", $arParams) && strlen(trim($arParams["PATH_TO_LOG_ENTRY"])) > 0 ? trim($arParams["PATH_TO_LOG_ENTRY"]) : $pathToLogEntry);
$arParams["PATH_TO_MESSAGES_CHAT"] = (array_key_exists("PATH_TO_MESSAGES_CHAT", $arParams) && strlen(trim($arParams["PATH_TO_MESSAGES_CHAT"])) > 0 ? trim($arParams["PATH_TO_MESSAGES_CHAT"]) : $pathToMessagesChat);
$arParams["PATH_TO_VIDEO_CALL"] = (array_key_exists("PATH_TO_VIDEO_CALL", $arParams) && strlen(trim($arParams["PATH_TO_VIDEO_CALL"])) > 0 ? trim($arParams["PATH_TO_VIDEO_CALL"]) : $pathToVideoCall);
$arParams["PATH_TO_SMILE"] = (array_key_exists("PATH_TO_SMILE", $arParams) && strlen(trim($arParams["PATH_TO_SMILE"])) > 0 ? trim($arParams["PATH_TO_SMILE"]) : $pathToSmile);

$arResult["PATH_TO_LOG_TAG"] = $folderUsers."log/?TAG=#tag#";
if (SITE_TEMPLATE_ID == 'bitrix24')
{
	$arResult["PATH_TO_LOG_TAG"] .= "&apply_filter=Y";
}

$arParams["LOG_ID"] = IntVal($arParams["LOG_ID"]);
if ($arParams["LOG_ID"] > 0)
{
	$arParams["HIDE_EDIT_FORM"] = "Y";
	$arParams["SHOW_EVENT_ID_FILTER"] = "N";
}

$arParams["GROUP_ID"] = IntVal($arParams["GROUP_ID"]);
if ($arParams["GROUP_ID"] <= 0)
{
	if (
		!empty($_REQUEST["TO_CODE"])
		&& !empty($_REQUEST["TO_CODE"]["SG"])
		&& is_array($_REQUEST["TO_CODE"]["SG"])
	)
	{
		preg_match('/^SG(\d+)$/', $_REQUEST["TO_CODE"]["SG"][0], $matches);
		if (!empty($matches))
		{
			$arParams["GROUP_ID"] = $matches[1];
		}
	}
	else
	{
		$arParams["GROUP_ID"] = IntVal($_REQUEST["flt_group_id"]);
	}
}

if (empty($arParams["DESTINATION"]))
{
	$arParams["DESTINATION"] = array();
	if (
		!empty($_REQUEST["TO_CODE"])
		&& !empty($_REQUEST["TO_CODE"])
		&& is_array($_REQUEST["TO_CODE"])
	)
	{
		foreach($_REQUEST["TO_CODE"] as $codeGroup => $arCode)
		{
			foreach($arCode as $key => $code)
			{
				$arParams["DESTINATION"][] = $code;
			}
		}
	}
}

if ($arParams["GROUP_ID"] > 0)
{
	$arParams["ENTITY_TYPE"] = SONET_ENTITY_GROUP;
}
else
{
	if (
		!empty($_REQUEST["TO_CODE"])
		&& !empty($_REQUEST["TO_CODE"]["U"])
		&& is_array($_REQUEST["TO_CODE"]["U"])
	)
	{
		preg_match('/^U(\d+)$/', $_REQUEST["TO_CODE"]["U"][0], $matches);
		if (!empty($matches))
		{
			$arParams["TO_USER_ID"] = $matches[1];
		}
	}
	else
	{
		$arParams["TO_USER_ID"] = IntVal($_REQUEST["flt_to_user_id"]);
	}
}

$arParams["USER_ID"] = IntVal($arParams["USER_ID"]);
if ($arParams["USER_ID"] <= 0)
{
	$arParams["USER_ID"] = IntVal($_REQUEST["flt_user_id"]);
}

if (
	!empty($_REQUEST["CREATED_BY_CODE"])
	&& !empty($_REQUEST["CREATED_BY_CODE"]["U"])
	&& is_array($_REQUEST["CREATED_BY_CODE"]["U"])
)
{
	preg_match('/^U(\d+)$/', $_REQUEST["CREATED_BY_CODE"]["U"][0], $matches);
	if (!empty($matches))
	{
		$arParams["CREATED_BY_ID"] = $matches[1];
	}
}
else
{
	if (is_array($_REQUEST["flt_created_by_id"]))
	{
		$_REQUEST["flt_created_by_id"] = $_REQUEST["flt_created_by_id"][0];
	}

	preg_match('/^(\d+)$/', $_REQUEST["flt_created_by_id"], $matches);
	if (count($matches) > 0)
	{
		$arParams["CREATED_BY_ID"] = $_REQUEST["flt_created_by_id"];
	}
	else
	{
		$arFoundUsers = CSocNetUser::SearchUser($_REQUEST["flt_created_by_id"], false);
		if (
			is_array($arFoundUsers)
			&& count($arFoundUsers) > 0
		)
		{
			$arParams["CREATED_BY_ID"] = key($arFoundUsers);
		}
	}
}

$arParams["NAME_TEMPLATE"] = $arParams["NAME_TEMPLATE"] ? $arParams["NAME_TEMPLATE"] : CSite::GetNameFormat();
$arParams["NAME_TEMPLATE_WO_NOBR"] = str_replace(
	array("#NOBR#", "#/NOBR#"),
	array("", ""),
	$arParams["NAME_TEMPLATE"]
);
$bUseLogin = $arParams['SHOW_LOGIN'] != "N" ? true : false;

if (StrLen($arParams["ENTITY_TYPE"]) <= 0)
	$arParams["ENTITY_TYPE"] = Trim($_REQUEST["flt_entity_type"]);

$arParams["TAG"] = (isset($_REQUEST["TAG"]) ? trim($_REQUEST["TAG"]) : "");
$arParams["FIND"] = (isset($_REQUEST["FIND"]) ? trim($_REQUEST["FIND"]) : "");

$arParams["AVATAR_SIZE_COMMON"] = (isset($arParams["AVATAR_SIZE_COMMON"]) && intval($arParams["AVATAR_SIZE_COMMON"]) > 0) ? intval($arParams["AVATAR_SIZE_COMMON"]) : 100;
$arParams["AVATAR_SIZE"] = (isset($arParams["AVATAR_SIZE"]) && intval($arParams["AVATAR_SIZE"]) > 0) ? intval($arParams["AVATAR_SIZE"]) : 100;
$arParams["AVATAR_SIZE_COMMENT"] = (isset($arParams["AVATAR_SIZE_COMMENT"]) && intval($arParams["AVATAR_SIZE_COMMENT"]) > 0) ? intval($arParams["AVATAR_SIZE_COMMENT"]) : 100;

$arParams["USE_COMMENTS"] = (isset($arParams["USE_COMMENTS"]) ? $arParams["USE_COMMENTS"] : "N");
$arParams["COMMENTS_IN_EVENT"] = (isset($arParams["COMMENTS_IN_EVENT"]) && intval($arParams["COMMENTS_IN_EVENT"]) > 0 ? $arParams["COMMENTS_IN_EVENT"] : "3");
$arParams["DESTINATION_LIMIT"] = (isset($arParams["DESTINATION_LIMIT"]) ? intval($arParams["DESTINATION_LIMIT"]) : 100);
$arParams["DESTINATION_LIMIT_SHOW"] = (isset($arParams["DESTINATION_LIMIT_SHOW"]) ? intval($arParams["DESTINATION_LIMIT_SHOW"]) : 3);

CSocNetLogComponent::processDateTimeFormatParams($arParams);

$arResult["AJAX_CALL"] = array_key_exists("logajax", $_REQUEST);
$arResult["bReload"] = ($arResult["AJAX_CALL"] && $_REQUEST["RELOAD"] == "Y");

$arResult["SHOW_UNREAD"] = $arParams["SHOW_UNREAD"] = (
	$USER->IsAuthorized()
	&& $arParams["LOG_ID"] <= 0
		? "Y"
		: "N"
);
$arParams["SET_LOG_COUNTER"] = (
	$arResult["SHOW_UNREAD"] == "Y"
	&& (
		!$arResult["AJAX_CALL"]
		|| $arResult["bReload"]
	)
	? "Y"
	: "N"
);
$arParams["SET_LOG_PAGE_CACHE"] = ($arParams["LOG_ID"] <= 0 ? "Y" : "N");

$arParams["COMMENT_PROPERTY"] = array("UF_SONET_COM_FILE");
if (IsModuleInstalled("webdav") || IsModuleInstalled("disk"))
	$arParams["COMMENT_PROPERTY"][] = "UF_SONET_COM_DOC";

$arParams["COMMENT_PROPERTY"][] = "UF_SONET_COM_URL_PRV";

$arPresetFilters = $arResultPresetFilters = false;
$arResult["currentUserId"] = intval($USER->getId());

if (
	$USER->IsAuthorized()
	&& $arParams["SHOW_EVENT_ID_FILTER"] != "N"
)
{
	$arPresetFilters = CUserOptions::GetOption("socialnetwork", "~log_filter_".SITE_ID, $arResult["currentUserId"]);
	if (!is_array($arPresetFilters))
	{
		$arPresetFilters = CUserOptions::GetOption("socialnetwork", "~log_filter", $arResult["currentUserId"]);
	}
}

$bGetComments = (
	array_key_exists("log_filter_submit", $_REQUEST) 
	&& array_key_exists("flt_comments", $_REQUEST) 
	&& $_REQUEST["flt_comments"] == "Y"
);

if ($_REQUEST["preset_filter_top_id"] == "clearall")
{
	$preset_filter_top_id = false;
}
elseif(array_key_exists("preset_filter_top_id", $_REQUEST) && strlen($_REQUEST["preset_filter_top_id"]) > 0)
{
	$preset_filter_top_id = $_REQUEST["preset_filter_top_id"];
}

if ($_REQUEST["preset_filter_id"] == "clearall")
{
	$preset_filter_id = false;
}
elseif(array_key_exists("preset_filter_id", $_REQUEST) && strlen($_REQUEST["preset_filter_id"]) > 0)
{
	$preset_filter_id = $_REQUEST["preset_filter_id"];
}

if (
	is_array($arPresetFilters)
	&& $arParams["SHOW_EVENT_ID_FILTER"] != "N"
	&& $arParams["IS_CRM"] != "Y"
)
{
	if(array_key_exists("preset_filter_id", $_REQUEST))
	{
		CUserOptions::DeleteOption("socialnetwork", "~log_".$arParams["ENTITY_TYPE"]."_".($arParams["ENTITY_TYPE"] == SONET_ENTITY_GROUP ? $arParams["GROUP_ID"] : $arParams["USER_ID"]));
	}

	$arResultPresetFilters = CSocNetLogComponent::ConvertPresetToFilters($arPresetFilters, $arParams);

	// to filter component
	$oLFC = new CSocNetLogComponent(array(
		"arItems" => $arResultPresetFilters
	));
	AddEventHandler("socialnetwork", "OnBeforeSonetLogFilterFill", Array($oLFC, "OnBeforeSonetLogFilterFill"));	
}

if (!is_array($arResultPresetFiltersTop))
{
	$arResultPresetFiltersTop = array();
}
if (!is_array($arResultPresetFilters))
{
	$arResultPresetFilters = array();
}

$db_events = GetModuleEvents("socialnetwork", "OnSonetLogFilterProcess");
while ($arEvent = $db_events->Fetch())
{
	$arEventResult = ExecuteModuleEventEx($arEvent, array($preset_filter_top_id, $preset_filter_id, $arResultPresetFiltersTop, $arResultPresetFilters));
	if (is_array($arEventResult))
	{
		if (array_key_exists("GET_COMMENTS", $arEventResult))
		{
			$bGetComments = $arEventResult["GET_COMMENTS"];
		}
		if (array_key_exists("PARAMS", $arEventResult) && is_array($arEventResult["PARAMS"]))
		{
			foreach($arEventResult["PARAMS"] as $key => $value)
			{
				$arParams[$key] = $value;
			}
		}
	}
}

if ($arParams["SHOW_EVENT_ID_FILTER"] != "N")
{
	$arEventResult = CSocNetLogComponent::OnSonetLogFilterProcess($preset_filter_top_id, $preset_filter_id, $arResultPresetFiltersTop, $arResultPresetFilters);
	if (is_array($arEventResult))
	{
		if (array_key_exists("GET_COMMENTS", $arEventResult))
		{
			$bGetComments = $arEventResult["GET_COMMENTS"];
		}
		if (array_key_exists("PARAMS", $arEventResult) && is_array($arEventResult["PARAMS"]))
		{
			foreach($arEventResult["PARAMS"] as $key => $value)
			{
				$arParams[$key] = $value;
			}
		}
	}
}

if (
	array_key_exists("flt_date_datesel", $_REQUEST)
	&& strlen($_REQUEST["flt_date_datesel"]) > 0
)
{
	switch($_REQUEST["flt_date_datesel"])
	{
		case "today":
			$arParams["LOG_DATE_FROM"] = $arParams["LOG_DATE_TO"] = ConvertTimeStamp();
			break;
		case "yesterday":
			$arParams["LOG_DATE_FROM"] = $arParams["LOG_DATE_TO"] = ConvertTimeStamp(time()-86400);
			break;
		case "week":
			$day = date("w");
			if($day == 0)
				$day = 7;
			$arParams["LOG_DATE_FROM"] = ConvertTimeStamp(time()-($day-1)*86400);
			$arParams["LOG_DATE_TO"] = ConvertTimeStamp(time()+(7-$day)*86400);
			break;
		case "week_ago":
			$day = date("w");
			if($day == 0)
				$day = 7;
			$arParams["LOG_DATE_FROM"] = ConvertTimeStamp(time()-($day-1+7)*86400);
			$arParams["LOG_DATE_TO"] = ConvertTimeStamp(time()-($day)*86400);
			break;
		case "month":
			$arParams["LOG_DATE_FROM"] = ConvertTimeStamp(mktime(0, 0, 0, date("n"), 1));
			$arParams["LOG_DATE_TO"] = ConvertTimeStamp(mktime(0, 0, 0, date("n")+1, 0));
			break;
		case "month_ago":
			$arParams["LOG_DATE_FROM"] = ConvertTimeStamp(mktime(0, 0, 0, date("n")-1, 1));
			$arParams["LOG_DATE_TO"] = ConvertTimeStamp(mktime(0, 0, 0, date("n"), 0));
			break;
		case "days":
			$arParams["LOG_DATE_FROM"] = ConvertTimeStamp(time() - intval($_REQUEST["flt_date_days"])*86400);
			$arParams["LOG_DATE_TO"] = "";
			break;
		case "exact":
			$arParams["LOG_DATE_FROM"] = $arParams["LOG_DATE_TO"] = $_REQUEST["flt_date_from"];
			break;
		case "after":
			$arParams["LOG_DATE_FROM"] = $_REQUEST["flt_date_from"];
			$arParams["LOG_DATE_TO"] = "";
			break;
		case "before":
			$arParams["LOG_DATE_FROM"] = "";
			$arParams["LOG_DATE_TO"] = $_REQUEST["flt_date_to"];
			break;
		case "interval":
			$arParams["LOG_DATE_FROM"] = $_REQUEST["flt_date_from"];
			$arParams["LOG_DATE_TO"] = $_REQUEST["flt_date_to"];
			break;
	}
}
elseif (array_key_exists("flt_date_datesel", $_REQUEST))
{
	$arParams["LOG_DATE_FROM"] = "";
	$arParams["LOG_DATE_TO"] = "";
}
else
{
	if (array_key_exists("flt_date_from", $_REQUEST))
		$arParams["LOG_DATE_FROM"] = trim($_REQUEST["flt_date_from"]);

	if (array_key_exists("flt_date_to", $_REQUEST))
		$arParams["LOG_DATE_TO"] = trim($_REQUEST["flt_date_to"]);
}

$arParams["LOG_CNT"] = (array_key_exists("LOG_CNT", $arParams) && intval($arParams["LOG_CNT"]) > 0 ? $arParams["LOG_CNT"] : 0);
$arParams["AUTH"] = ((StrToUpper($arParams["AUTH"]) == "Y") ? "Y" : "N");

$arPrevPageLogID = false;
if (array_key_exists("pplogid", $_REQUEST))
{
	$arPrevPageLogID = explode("|", trim($_REQUEST["pplogid"]));
	if (is_array($arPrevPageLogID))
	{
		foreach($arPrevPageLogID as $key => $val)
		{
			preg_match('/^(\d+)$/', $val, $matches);
			if (count($matches) <= 0)
				unset($arPrevPageLogID[$key]);
		}
		$arPrevPageLogID = array_unique($arPrevPageLogID);
	}
}

$arParams["PAGE_SIZE"] = intval($arParams["PAGE_SIZE"]);
if($arParams["PAGE_SIZE"] <= 0)
{
	$arParams["PAGE_SIZE"] = 20;
}

$arParams["PAGER_TITLE"] = trim($arParams["PAGER_TITLE"]);

$parent = $this->GetParent();
if (is_object($parent) && strlen($parent->__name) > 0)
{
	if(strlen($arParams["BLOG_IMAGE_MAX_WIDTH"]) <= 0)
		$arParams["BLOG_IMAGE_MAX_WIDTH"] = $parent->arParams["BLOG_IMAGE_MAX_WIDTH"];
	if(strlen($arParams["BLOG_IMAGE_MAX_HEIGHT"]) <= 0)
		$arParams["BLOG_IMAGE_MAX_HEIGHT"] = $parent->arParams["BLOG_IMAGE_MAX_HEIGHT"];
	if(strlen($arParams["BLOG_COMMENT_ALLOW_IMAGE_UPLOAD"]) <= 0)
		$arParams["BLOG_COMMENT_ALLOW_IMAGE_UPLOAD"] = $parent->arParams["BLOG_COMMENT_ALLOW_IMAGE_UPLOAD"];
	if(strlen($arParams["BLOG_ALLOW_POST_CODE"]) <= 0)
		$arParams["BLOG_ALLOW_POST_CODE"] = $parent->arParams["BLOG_ALLOW_POST_CODE"];
	if(strlen($arParams["BLOG_COMMENT_ALLOW_VIDEO"]) <= 0)
		$arParams["BLOG_COMMENT_ALLOW_VIDEO"] = $parent->arParams["BLOG_COMMENT_ALLOW_VIDEO"];
	$arParams["BLOG_GROUP_ID"] = $parent->arParams["BLOG_GROUP_ID"];
	if(isset($parent->arParams["BLOG_USE_CUT"]))
		$arParams["BLOG_USE_CUT"] = $parent->arParams["BLOG_USE_CUT"];

	$arParams["PHOTO_USER_IBLOCK_TYPE"] = $parent->arParams["PHOTO_USER_IBLOCK_TYPE"];
	$arParams["PHOTO_USER_IBLOCK_ID"] = $parent->arParams["PHOTO_USER_IBLOCK_ID"];
	$arParams["PHOTO_GROUP_IBLOCK_TYPE"] = $parent->arParams["PHOTO_GROUP_IBLOCK_TYPE"];
	$arParams["PHOTO_GROUP_IBLOCK_ID"] = $parent->arParams["PHOTO_GROUP_IBLOCK_ID"];
	$arParams["PHOTO_MAX_VOTE"] = $parent->arParams["PHOTO_MAX_VOTE"];
	$arParams["PHOTO_USE_COMMENTS"] = $parent->arParams["PHOTO_USE_COMMENTS"];
	$arParams["PHOTO_COMMENTS_TYPE"] = $parent->arParams["PHOTO_COMMENTS_TYPE"];
	$arParams["PHOTO_FORUM_ID"] = $parent->arParams["PHOTO_FORUM_ID"];
	$arParams["PHOTO_BLOG_URL"] = $parent->arParams["PHOTO_BLOG_URL"];
	$arParams["PHOTO_USE_CAPTCHA"] = $parent->arParams["PHOTO_USE_CAPTCHA"];

	if (
		(
			strlen($arParams["PHOTO_GROUP_IBLOCK_TYPE"]) <= 0
			|| intval($arParams["PHOTO_GROUP_IBLOCK_ID"]) <= 0
		)
		&& CModule::IncludeModule("iblock"))
	{
		$ttl = 60*60*24;
		$cache_id = 'sonet_group_photo_iblock_'.SITE_ID;
		$cache_dir = '/bitrix/sonet_group_photo_iblock';
		$obCache = new CPHPCache;

		if($obCache->InitCache($ttl, $cache_id, $cache_dir))
		{
			$cacheData = $obCache->GetVars();
			$arParams["PHOTO_GROUP_IBLOCK_TYPE"] = $cacheData["PHOTO_GROUP_IBLOCK_TYPE"];
			$arParams["PHOTO_GROUP_IBLOCK_ID"] = $cacheData["PHOTO_GROUP_IBLOCK_ID"];
			unset($cacheData);
		}
		else
		{
			$rsIBlockType = CIBlockType::GetByID("photos");
			if ($arIBlockType = $rsIBlockType->Fetch())
			{
				$rsIBlock = CIBlock::GetList(
					array("SORT" => "ASC"),
					array(
						"IBLOCK_TYPE" => $arIBlockType["ID"],
						"CODE" => array("group_photogallery", "group_photogallery_".SITE_ID),
						"ACTIVE" => "Y",
						"SITE_ID" => SITE_ID
					)
				);
				if ($arIBlock = $rsIBlock->Fetch())
				{
					$arParams["PHOTO_GROUP_IBLOCK_TYPE"] = $arIBlock["IBLOCK_TYPE_ID"];
					$arParams["PHOTO_GROUP_IBLOCK_ID"] = $arIBlock["ID"];
				}
			}

			if ($obCache->StartDataCache())
			{
				$obCache->EndDataCache(array(
					"PHOTO_GROUP_IBLOCK_TYPE" => $arParams["PHOTO_GROUP_IBLOCK_TYPE"],
					"PHOTO_GROUP_IBLOCK_ID" => $arParams["PHOTO_GROUP_IBLOCK_ID"]
				));
			}
		}
		unset($obCache);
	}

	$arParams["PHOTO_COUNT"] = $parent->arParams["LOG_PHOTO_COUNT"];
	$arParams["PHOTO_THUMBNAIL_SIZE"] = $parent->arParams["LOG_PHOTO_THUMBNAIL_SIZE"];

	$arParams["FORUM_ID"] = $parent->arParams["FORUM_ID"];

	// parent of 2nd level
	$parent = $parent->GetParent();
	if (is_object($parent) && strlen($parent->__name) > 0)
	{
		if(strlen($arParams["BLOG_IMAGE_MAX_WIDTH"]) <= 0)
			$arParams["BLOG_IMAGE_MAX_WIDTH"] = $parent->arParams["BLOG_IMAGE_MAX_WIDTH"];
		if(strlen($arParams["BLOG_IMAGE_MAX_HEIGHT"]) <= 0)
			$arParams["BLOG_IMAGE_MAX_HEIGHT"] = $parent->arParams["BLOG_IMAGE_MAX_HEIGHT"];
		if(strlen($arParams["BLOG_COMMENT_ALLOW_IMAGE_UPLOAD"]) <= 0)
			$arParams["BLOG_COMMENT_ALLOW_IMAGE_UPLOAD"] = $parent->arParams["BLOG_COMMENT_ALLOW_IMAGE_UPLOAD"];
		if(strlen($arParams["BLOG_ALLOW_POST_CODE"]) <= 0)
			$arParams["BLOG_ALLOW_POST_CODE"] = $parent->arParams["BLOG_ALLOW_POST_CODE"];
		if(strlen($arParams["BLOG_COMMENT_ALLOW_VIDEO"]) <= 0)
			$arParams["BLOG_COMMENT_ALLOW_VIDEO"] = $parent->arParams["BLOG_COMMENT_ALLOW_VIDEO"];
		if(intval($arParams["BLOG_GROUP_ID"]) <= 0)
			$arParams["BLOG_GROUP_ID"] = $parent->arParams["BLOG_GROUP_ID"];
		if(isset($parent->arParams["BLOG_USE_CUT"]))
			$arParams["BLOG_USE_CUT"] = $parent->arParams["BLOG_USE_CUT"];

		if(strlen($arParams["PHOTO_USER_IBLOCK_TYPE"]) <= 0)
			$arParams["PHOTO_USER_IBLOCK_TYPE"] = $parent->arParams["PHOTO_USER_IBLOCK_TYPE"];
		if(intval($arParams["PHOTO_USER_IBLOCK_ID"]) <= 0)
			$arParams["PHOTO_USER_IBLOCK_ID"] = $parent->arParams["PHOTO_USER_IBLOCK_ID"];
		if(strlen($arParams["PHOTO_GROUP_IBLOCK_TYPE"]) <= 0)
			$arParams["PHOTO_GROUP_IBLOCK_TYPE"] = $parent->arParams["PHOTO_GROUP_IBLOCK_TYPE"];
		if(intval($arParams["PHOTO_GROUP_IBLOCK_ID"]) <= 0)
			$arParams["PHOTO_GROUP_IBLOCK_ID"] = $parent->arParams["PHOTO_GROUP_IBLOCK_ID"];
		if(intval($arParams["PHOTO_MAX_VOTE"]) <= 0)
			$arParams["PHOTO_MAX_VOTE"] = $parent->arParams["PHOTO_MAX_VOTE"];
		if(strlen($arParams["PHOTO_USE_COMMENTS"]) <= 0)
			$arParams["PHOTO_USE_COMMENTS"] = $parent->arParams["PHOTO_USE_COMMENTS"];
		if(strlen($arParams["PHOTO_COMMENTS_TYPE"]) <= 0)
			$arParams["PHOTO_COMMENTS_TYPE"] = $parent->arParams["PHOTO_COMMENTS_TYPE"];
		if(intval($arParams["PHOTO_FORUM_ID"]) <= 0)
			$arParams["PHOTO_FORUM_ID"] = $parent->arParams["PHOTO_FORUM_ID"];
		if(strlen($arParams["PHOTO_BLOG_URL"]) <= 0)
			$arParams["PHOTO_BLOG_URL"] = $parent->arParams["PHOTO_BLOG_URL"];
		if(strlen($arParams["PHOTO_USE_CAPTCHA"]) <= 0)
			$arParams["PHOTO_USE_CAPTCHA"] = $parent->arParams["PHOTO_USE_CAPTCHA"];

		if(intval($arParams["PHOTO_COUNT"]) <= 0)
			$arParams["PHOTO_COUNT"] = $parent->arParams["LOG_PHOTO_COUNT"];
		if(intval($arParams["PHOTO_THUMBNAIL_SIZE"]) <= 0)
			$arParams["PHOTO_THUMBNAIL_SIZE"] = $parent->arParams["LOG_PHOTO_THUMBNAIL_SIZE"];

		if(intval($arParams["FORUM_ID"]) <= 0)
			$arParams["FORUM_ID"] = $parent->arParams["FORUM_ID"];
	}
}

if (intval($arParams["PHOTO_COUNT"]) <= 0)
	$arParams["PHOTO_COUNT"] = 6;
if (intval($arParams["PHOTO_THUMBNAIL_SIZE"]) <= 0)
	$arParams["PHOTO_THUMBNAIL_SIZE"] = 48;

if(
	$arResult["currentUserId"] > 0
	&& (
		(
			$arParams["ENTITY_TYPE"] != SONET_ENTITY_GROUP 
		) 
		|| 
		(
			CSocNetFeaturesPerms::CanPerformOperation($arResult["currentUserId"], SONET_ENTITY_GROUP, $arParams["GROUP_ID"], "blog", "full_post", CSocNetUser::IsCurrentUserModuleAdmin())
			|| CSocNetFeaturesPerms::CanPerformOperation($arResult["currentUserId"], SONET_ENTITY_GROUP, $arParams["GROUP_ID"], "blog", "write_post")
			|| CSocNetFeaturesPerms::CanPerformOperation($arResult["currentUserId"], SONET_ENTITY_GROUP, $arParams["GROUP_ID"], "blog", "moderate_post")
			|| CSocNetFeaturesPerms::CanPerformOperation($arResult["currentUserId"], SONET_ENTITY_GROUP, $arParams["GROUP_ID"], "blog", "premoderate_post")
		)
	)
)
{
	$arResult["MICROBLOG_USER_ID"] = $arResult["currentUserId"];
}

if (IsModuleInstalled("photogallery"))
{
	if (strlen($arParams["PHOTO_USER_IBLOCK_TYPE"]) <= 0)
	{
		$arParams["PHOTO_USER_IBLOCK_TYPE"] = "photos";
	}

	if (
		intval($arParams["PHOTO_USER_IBLOCK_ID"]) <= 0
		&& CModule::IncludeModule("iblock")
	)
	{
		$dbRes = CIBlock::GetList(
			array(),
			array(
				"SITE_ID" => SITE_ID,
				"=CODE" => "user_photogallery"
			)
		);
		if ($arRes = $dbRes->Fetch())
		{
			$arParams["PHOTO_USER_IBLOCK_ID"] = $arRes["ID"];
		}
	}

	if (
		intval($arParams["PHOTO_FORUM_ID"]) <= 0
		&& CModule::IncludeModule("forum")
	)
	{
		$dbRes = CForumNew::GetListEx(
			array(),
			array(
				"SITE_ID" => SITE_ID,
				"XML_ID" => "PHOTOGALLERY_COMMENTS"
			)
		);
		if ($arRes = $dbRes->Fetch())
		{
			$arParams["PHOTO_FORUM_ID"] = $arRes["ID"];
		}
	}

	$arParams["PATH_TO_USER_PHOTO"] = (strlen($arParams["PATH_TO_USER_PHOTO"]) > 0 ? $arParams["PATH_TO_USER_PHOTO"] : $folderUsers."user/#user_id#/photo/");
	$arParams["PATH_TO_GROUP_PHOTO"] = (strlen($arParams["PATH_TO_GROUP_PHOTO"]) > 0 ? $arParams["PATH_TO_GROUP_PHOTO"] : $folderWorkgroups."group/#group_id#/photo/");
	$arParams["PATH_TO_USER_PHOTO_SECTION"] = (strlen($arParams["PATH_TO_USER_PHOTO_SECTION"]) > 0 ? $arParams["PATH_TO_USER_PHOTO_SECTION"] : $folderUsers."user/#user_id#/photo/album/#section_id#/");
	$arParams["PATH_TO_GROUP_PHOTO_SECTION"] = (strlen($arParams["PATH_TO_GROUP_PHOTO_SECTION"]) > 0 ? $arParams["PATH_TO_GROUP_PHOTO_SECTION"] : $folderWorkgroups."group/#group_id#/photo/album/#section_id#/");
	$arParams["PATH_TO_USER_PHOTO_ELEMENT"] = (strlen($arParams["PATH_TO_USER_PHOTO_ELEMENT"]) > 0 ? $arParams["PATH_TO_USER_PHOTO_ELEMENT"] : $folderUsers."user/#user_id#/photo/photo/#section_id#/#element_id#/");
	$arParams["PATH_TO_GROUP_PHOTO_ELEMENT"] = (strlen($arParams["PATH_TO_GROUP_PHOTO_ELEMENT"]) > 0 ? $arParams["PATH_TO_GROUP_PHOTO_ELEMENT"] : $folderWorkgroups."group/#group_id#/photo/#section_id#/#element_id#/");
}

$bCurrentUserIsAdmin = CSocNetUser::IsCurrentUserModuleAdmin();

$arResult["TZ_OFFSET"] = CTimeZone::GetOffset();
$arResult["FILTER_ID"] = "LIVEFEED".(!empty($arParams["GROUP_ID"]) ? '_SG'.$arParams["GROUP_ID"] : '');

CSocNetTools::InitGlobalExtranetArrays();

if (
	$USER->IsAuthorized()
	|| $arParams["AUTH"] == "Y" 
)
{
	$arResult["IS_FILTERED"] = false;

	if (
		$arParams["SET_TITLE"] == "Y"
		|| $arParams["SET_NAV_CHAIN"] != "N"
		|| $arParams["GROUP_ID"] > 0
	)
	{
		if ($arParams["ENTITY_TYPE"] == SONET_ENTITY_USER)
		{
			$rsUser = CUser::GetByID($arParams["USER_ID"]);
			if ($arResult["User"] = $rsUser->Fetch())
			{
				$strTitleFormatted = CUser::FormatName($arParams['NAME_TEMPLATE'], $arResult["User"], $bUseLogin);
			}
		}
		elseif ($arParams["ENTITY_TYPE"] == SONET_ENTITY_GROUP)
		{
			$arResult["Group"] = CSocNetGroup::GetByID($arParams["GROUP_ID"]);
			if (
				$arResult["Group"]['OPENED'] == 'Y'
				&& $USER->IsAuthorized()
				&& !$bCurrentUserIsAdmin
				&& !in_array(CSocNetUserToGroup::GetUserRole($arResult["currentUserId"], $arResult["Group"]["ID"]), array(SONET_ROLES_OWNER, SONET_ROLES_MODERATOR, SONET_ROLES_USER))
			)
			{
				$arResult["Group"]['READ_ONLY'] = 'Y';
			}
		}
	}

	if ($arParams["SET_TITLE"] == "Y")
	{
		$APPLICATION->SetTitle(GetMessage("SONET_C73_PAGE_TITLE"));
	}

	if ($arParams["SET_NAV_CHAIN"] != "N")
	{
		$APPLICATION->AddChainItem(GetMessage("SONET_C73_PAGE_TITLE"));
	}

	$arResult["Events"] = false;
	$arFilter = array();

	if ($arParams["LOG_ID"] > 0)
	{
		$arFilter["ID"] = $arParams["LOG_ID"];
	}

	if(isset($arParams["DISPLAY"]))
	{
		$arResult["SHOW_UNREAD"] = $arParams["SHOW_UNREAD"] = $arParams["SHOW_REFRESH"] = "N";

		$arParams["SHOW_EVENT_ID_FILTER"] = "N";
		if($arParams["DISPLAY"] === "forme")
		{
			$arAccessCodes = $USER->GetAccessCodes();
			foreach($arAccessCodes as $i => $code)
				if(!preg_match("/^(U|D|DR)/", $code)) //Users and Departments
					unset($arAccessCodes[$i]);
			$arFilter["LOG_RIGHTS"] = $arAccessCodes;
			$arFilter["!USER_ID"] = $arResult["currentUserId"];
			$arResult["IS_FILTERED"] = true;
			$arParams["SET_LOG_COUNTER"] = $arParams["SET_LOG_PAGE_CACHE"] = "N";
			$arResult["SHOW_UNREAD"] = $arParams["SHOW_UNREAD"] = "N";
			$arParams["USE_FOLLOW"] = "N";
		}
		elseif($arParams["DISPLAY"] === "mine")
		{
			$arFilter["USER_ID"] = $arResult["currentUserId"];
			$arResult["IS_FILTERED"] = true;
			$arParams["SET_LOG_COUNTER"] = $arParams["SET_LOG_PAGE_CACHE"] = "N";
			$arResult["SHOW_UNREAD"] = $arParams["SHOW_UNREAD"] = "N";
			$arParams["USE_FOLLOW"] = "N";
		}
		elseif($arParams["DISPLAY"] === "my")
		{
			$arAccessCodes = $USER->GetAccessCodes();
			foreach($arAccessCodes as $i => $code)
			{
				if(!preg_match("/^(U|D|DR)/", $code)) //Users and Departments
				{
					unset($arAccessCodes[$i]);
				}
			}
			$arFilter["LOG_RIGHTS"] = $arAccessCodes;
			$arParams["SET_LOG_PAGE_CACHE"] = "N";
			$arParams["USE_FOLLOW"] = "N";
		}
		elseif($arParams["DISPLAY"] > 0)
		{
			$arFilter["USER_ID"] = intval($arParams["DISPLAY"]);
			$arResult["IS_FILTERED"] = true;
			$arParams["SET_LOG_COUNTER"] = $arParams["SET_LOG_PAGE_CACHE"] = "N";
			$arResult["SHOW_UNREAD"] = $arParams["SHOW_UNREAD"] = "N";
			$arParams["USE_FOLLOW"] = "N";
		}
	}

	if (!empty($arParams["DESTINATION"]))
	{
		$arFilter["LOG_RIGHTS"] = $arParams["DESTINATION"];

		if (count($arParams["DESTINATION"]) == 1)
		{
			foreach($arParams["DESTINATION"] as $code)
			{
				if(preg_match("/^U(\d+)$/", $code, $matches))
				{
					$arFilter["!USER_ID"] =  $matches[1];
				}
			}
		}
	}
	elseif (intval($arParams["GROUP_ID"]) > 0)
	{
		$ENTITY_TYPE = SONET_ENTITY_GROUP;
		$ENTITY_ID = $arParams["GROUP_ID"];

		$arFilter["LOG_RIGHTS"] = "SG".intval($arParams["GROUP_ID"]);

		if (
			isset($arResult["Group"])
			&& $arResult["Group"]['OPENED'] == 'Y'
		)
		{
			$arFilter["LOG_RIGHTS_SG"] = "OSG".intval($arParams["GROUP_ID"]).'_'.($USER->IsAuthorized() ? SONET_ROLES_AUTHORIZED : SONET_ROLES_ALL);
		}
		$arParams["SET_LOG_PAGE_CACHE"] = "Y";
		$arParams["USE_FOLLOW"] = "N";
		$arParams["SET_LOG_COUNTER"] = "N";
		$arResult["SHOW_UNREAD"] = $arParams["SHOW_UNREAD"] = "N";
	}
	elseif (intval($arParams["TO_USER_ID"]) > 0)
	{
		$arFilter["LOG_RIGHTS"] = "U".$arParams["TO_USER_ID"];
		$arFilter["!USER_ID"] = $arParams["TO_USER_ID"];
		$arParams["SET_LOG_PAGE_CACHE"] = "N";
		$arParams["USE_FOLLOW"] = "N";

		$rsUsers = CUser::GetList(
			($by="ID"),
			($order="asc"),
			array(
				"ID" => $arParams["TO_USER_ID"]
			),
			array("FIELDS" => array("ID", "NAME", "LAST_NAME", "SECOND_NAME", "LOGIN"))
		);
		while($arUser = $rsUsers->Fetch())
		{
			$arResult["ToUser"] = array(
				"ID" => $arUser["ID"],
				"NAME" => CUser::FormatName($arParams['NAME_TEMPLATE'], $arUser, $bUseLogin)
			);
		}
	}
	elseif ($arParams["USER_ID"] > 0)
	{
		$ENTITY_TYPE = $arFilter["ENTITY_TYPE"] = SONET_ENTITY_USER;
		$ENTITY_ID = $arFilter["ENTITY_ID"] = $arParams["USER_ID"];
	}
	elseif (StrLen($arParams["ENTITY_TYPE"]) > 0)
	{
		$ENTITY_TYPE = $arFilter["ENTITY_TYPE"] = $arParams["ENTITY_TYPE"];
		$ENTITY_ID = 0;
	}
	elseif (strlen($arParams["TAG"]) > 0)
	{
		$arFilter["=TAG"] = $arParams["TAG"];

		$arParams["SET_LOG_COUNTER"] = $arParams["SET_LOG_PAGE_CACHE"] = "N";
		$arResult["SHOW_UNREAD"] = $arParams["SHOW_UNREAD"] = "N";
		$arParams["USE_FOLLOW"] = "N";
		$arResult["IS_FILTERED"] = true;
	}
	elseif (strlen($arParams["FIND"]) > 0)
	{
		$operation = \Bitrix\Socialnetwork\LogIndexTable::getEntity()->fullTextIndexEnabled("CONTENT") ? '*' : '*%';
		$arFilter[$operation."CONTENT"] = \Bitrix\Socialnetwork\Item\LogIndex::prepareToken($arParams["FIND"]);

		$arParams["SET_LOG_COUNTER"] = $arParams["SET_LOG_PAGE_CACHE"] = "N";
		$arResult["SHOW_UNREAD"] = $arParams["SHOW_UNREAD"] = "N";
		$arParams["USE_FOLLOW"] = "N";
		$arResult["IS_FILTERED"] = true;
	}
	else
	{
		$ENTITY_TYPE = "";
		$ENTITY_ID = 0;
	}

	if (isset($arParams["!EXACT_EVENT_ID"]))
	{
		$arFilter["!EVENT_ID"] = $arParams["!EXACT_EVENT_ID"];
		$arResult["IS_FILTERED"] = true;
		$arParams["SET_LOG_COUNTER"] = $arParams["SET_LOG_PAGE_CACHE"] = "N";
		$arResult["SHOW_UNREAD"] = $arParams["SHOW_UNREAD"] = "N";
		$arParams["USE_FOLLOW"] = "N";
	}
	if (isset($arParams["EXACT_EVENT_ID"]))
	{
		$arFilter["EVENT_ID"] = array($arParams["EXACT_EVENT_ID"]);
		$arResult["IS_FILTERED"] = true;
		$arParams["SET_LOG_COUNTER"] = $arParams["SET_LOG_PAGE_CACHE"] = "N";
		$arResult["SHOW_UNREAD"] = $arParams["SHOW_UNREAD"] = "N";
		$arParams["USE_FOLLOW"] = "N";
	}
	elseif (is_array($arParams["EVENT_ID"]))
	{
		if (!in_array("all", $arParams["EVENT_ID"]))
		{
			$event_id_fullset_tmp = array();
			foreach($arParams["EVENT_ID"] as $event_id_tmp)
				$event_id_fullset_tmp = array_merge($event_id_fullset_tmp, CSocNetLogTools::FindFullSetByEventID($event_id_tmp));
			$arFilter["EVENT_ID"] = array_unique($event_id_fullset_tmp);

			$arResult["IS_FILTERED"] = true;
			$arParams["SET_LOG_COUNTER"] = $arParams["SET_LOG_PAGE_CACHE"] = "N";
			$arResult["SHOW_UNREAD"] = $arParams["SHOW_UNREAD"] = "N";
			$arParams["USE_FOLLOW"] = "N";
		}
	}
	elseif ($arParams["EVENT_ID"])
	{
		$arFilter["EVENT_ID"] = CSocNetLogTools::FindFullSetByEventID($arParams["EVENT_ID"]);
		$arResult["IS_FILTERED"] = true;
		$arParams["SET_LOG_COUNTER"] = $arParams["SET_LOG_PAGE_CACHE"] = "N";
		$arResult["SHOW_UNREAD"] = $arParams["SHOW_UNREAD"] = "N";
		$arParams["USE_FOLLOW"] = "N";
	}
	elseif ($preset_filter_id == "extranet")
	{
		$arResult["IS_FILTERED"] = true;
		$arParams["SET_LOG_COUNTER"] = $arParams["SET_LOG_PAGE_CACHE"] = "N";
		$arResult["SHOW_UNREAD"] = $arParams["SHOW_UNREAD"] = "N";
		$arParams["USE_FOLLOW"] = "N";
	}

	if (IntVal($arParams["CREATED_BY_ID"]) > 0)
	{
		if ($bGetComments)
		{
			$arFilter["USER_ID|COMMENT_USER_ID"] = $arParams["CREATED_BY_ID"];
		}
		else
		{
			$arFilter["USER_ID"] = $arParams["CREATED_BY_ID"];
		}

		$arResult["IS_FILTERED"] = true;
		$arParams["SET_LOG_COUNTER"] = $arParams["SET_LOG_PAGE_CACHE"] = "N";
		$arResult["SHOW_UNREAD"] = $arParams["SHOW_UNREAD"] = "N";
		$arParams["USE_FOLLOW"] = "N";
		unset($arFilter["!USER_ID"]);
	}

	if (IntVal($arParams["GROUP_ID"]) > 0)
	{
		$arResult["IS_FILTERED"] = true;
	}

	if ($arParams["FLT_ALL"] == "Y")
		$arFilter["ALL"] = "Y";

	if (
		!$arFilter["EVENT_ID"]
		|| (is_array($arFilter["EVENT_ID"]) && count($arFilter["EVENT_ID"]) <= 0)
	)
	{
		unset($arFilter["EVENT_ID"]);
	}

	if (isset($arParams["FILTER_SITE_ID"]))
	{
		$arFilter["SITE_ID"] = $arParams["FILTER_SITE_ID"];
	}
	else
	{
		$arFilter["SITE_ID"] = (
			$arResult["isExtranetSite"]
				? SITE_ID
				: array(SITE_ID, false)
		);
	}

	if (
		array_key_exists("LOG_DATE_FROM", $arParams)
		&& strlen(trim($arParams["LOG_DATE_FROM"])) > 0
		&& MakeTimeStamp($arParams["LOG_DATE_FROM"], CSite::GetDateFormat("SHORT")) < time()+$arResult["TZ_OFFSET"]
	)
	{
		$arFilter[">=LOG_DATE"] = $arParams["LOG_DATE_FROM"];
		$arParams["SET_LOG_COUNTER"] = $arParams["SET_LOG_PAGE_CACHE"] = "N";
		$arResult["SHOW_UNREAD"] = $arParams["SHOW_UNREAD"] = "N";
		$arParams["USE_FOLLOW"] = "N";
		$arResult["IS_FILTERED"] = true;
	}
	else
	{
		unset($_REQUEST["flt_date_from"]);
	}

	if (
		array_key_exists("LOG_DATE_TO", $arParams)
		&& strlen(trim($arParams["LOG_DATE_TO"])) > 0
		&& MakeTimeStamp($arParams["LOG_DATE_TO"], CSite::GetDateFormat("SHORT")) < time()+$arResult["TZ_OFFSET"]
	)
	{
		$arFilter["<=LOG_DATE"] = ConvertTimeStamp(MakeTimeStamp($arParams["LOG_DATE_TO"], CSite::GetDateFormat("SHORT"))+86399, "FULL");
		$arParams["SET_LOG_COUNTER"] = $arParams["SET_LOG_PAGE_CACHE"] = "N";
		$arResult["SHOW_UNREAD"] = $arParams["SHOW_UNREAD"] = "N";
		$arParams["USE_FOLLOW"] = "N";
		$arResult["IS_FILTERED"] = true;
	}
	else
	{
		$arFilter["<=LOG_DATE"] = "NOW";
		unset($_REQUEST["flt_date_to"]);
	}

	if (
		SITE_TEMPLATE_ID === 'bitrix24'
		&& isset($_REQUEST['useBXMainFilter'])
		&& $_REQUEST['useBXMainFilter'] == 'Y'
		&& intval($arParams["LOG_ID"]) <= 0
	)
	{
		$filtered = false;
		$filterOption = new \Bitrix\Main\UI\Filter\Options($arResult["FILTER_ID"]);
		$filterData = $filterOption->getFilter();

		if (
			!empty($filterData["CREATED_BY_ID"])
			&& preg_match('/^U(\d+)$/', $filterData["CREATED_BY_ID"], $matches)
		)
		{
			$filtered = true;
			$arFilter["USER_ID"] = intval($matches[1]);

			if (intval($matches[1]) > 0)
			{
				\Bitrix\Main\FinderDestTable::merge(array(
					"CONTEXT" => "FEED_FILTER_CREATED_BY",
					"CODE" => 'U'.intval($matches[1])
				));
			}
		}

		if (!empty($filterData["TO"]))
		{
			if (preg_match('/^U(\d+)$/', $filterData["TO"], $matches))
			{
				$arFilter["LOG_RIGHTS"] = 'U'.intval($matches[1]);
				if (empty($arFilter["USER_ID"]))
				{
					$arFilter["!USER_ID"] = intval($matches[1]);
				}
			}
			elseif (preg_match('/^SG(\d+)$/', $filterData["TO"], $matches))
			{
				$arFilter["LOG_RIGHTS"] = 'SG'.intval($matches[1]);
			}
			elseif (preg_match('/^DR(\d+)$/', $filterData["TO"], $matches))
			{
				$arFilter["LOG_RIGHTS"] = 'DR'.intval($matches[1]);
			}
			elseif ($filterData["TO"] == 'UA')
			{
				$arFilter["LOG_RIGHTS"] = 'G2';
			}

			$filtered = !empty($arFilter["LOG_RIGHTS"]);

			if (!empty($arFilter["LOG_RIGHTS"]))
			{
				\Bitrix\Main\FinderDestTable::merge(array(
					"CONTEXT" => "FEED_FILTER_TO",
					"CODE" => $arFilter["LOG_RIGHTS"]
				));
			}
		}

		if (
			!empty($filterData["EXACT_EVENT_ID"])
			&& !is_array($filterData["EXACT_EVENT_ID"])
		)
		{
			$filtered = true;
			$arFilter["EVENT_ID"] = array($filterData["EXACT_EVENT_ID"]);
		}

		if (
			!empty($filterData["EVENT_ID"])
			&& is_array($filterData["EVENT_ID"])
		)
		{
			$filtered = true;
			$arFilter["EVENT_ID"] = array();
			foreach($filterData["EVENT_ID"] as $filterEventId)
			{
				// if specific blog_post event (important, vote, grat)
				if (in_array($filterEventId, array('blog_post_important', 'blog_post_grat', 'blog_post_vote')))
				{
					$arFilter["EVENT_ID"][] = $filterEventId;
				}
				else
				{
					$arFilter["EVENT_ID"] = array_merge($arFilter["EVENT_ID"], \CSocNetLogTools::findFullSetByEventID($filterEventId));
				}
			}
			$arFilter["EVENT_ID"] = array_unique($arFilter["EVENT_ID"]);
		}

		if (
			!empty($filterData["FAVORITES_USER_ID"])
			&& $filterData["FAVORITES_USER_ID"] == 'Y'
		)
		{
			$filtered = true;
			$arFilter[">FAVORITES_USER_ID"] = 0;
		}

		if (!empty($filterData["TAG"]))
		{
			$filterData["TAG"] = trim($filterData["TAG"]);
			if (!empty($filterData["TAG"]))
			{
				$filtered = true;
				$arFilter["=TAG"] = $filterData["TAG"];
			}
		}

		$filterContent = trim($filterData["FIND"]);
		if (!empty($filterContent))
		{
			$filtered = true;

			$operation = \Bitrix\Socialnetwork\LogIndexTable::getEntity()->fullTextIndexEnabled("CONTENT") ? '*' : '*%';
			$arFilter[$operation."CONTENT"] = \Bitrix\Socialnetwork\Item\LogIndex::prepareToken($filterContent);
		}

		if (
			!empty($filterData["EXTRANET"])
			&& $filterData["EXTRANET"] == 'Y'
			&& Loader::includeModule('extranet')
		)
		{
			$filtered = true;
			$arFilter["SITE_ID"] = \CExtranet::getExtranetSiteID();
			$arFilter["!EVENT_ID"] = array("lists_new_element", "tasks", "timeman_entry", "report", "crm_activity_add");
		}

		if (!empty($filterData["DATE_CREATE_from"]))
		{
			$filtered = true;
			if (!empty($filterContent))
			{
				$arFilter[">=CONTENT_DATE_CREATE"] = $filterData["DATE_CREATE_from"];
			}
			else
			{
				$arFilter[">=LOG_DATE"] = $filterData["DATE_CREATE_from"];
			}
		}

		if (!empty($filterData["DATE_CREATE_to"]))
		{
			$filtered = true;
			$dateCreateToValue = ConvertTimeStamp(MakeTimeStamp($filterData["DATE_CREATE_to"], CSite::getDateFormat("SHORT")) + 86399, "FULL");

			if (!empty($filterContent))
			{
				$arFilter["<=CONTENT_DATE_CREATE"] = $dateCreateToValue;
			}
			else
			{
				$arFilter["<=LOG_DATE"] = $dateCreateToValue;
			}
		}

		if ($filtered)
		{
			$arParams["SET_LOG_COUNTER"] = $arParams["SET_LOG_PAGE_CACHE"] = "N";
			$arResult["SHOW_UNREAD"] = $arParams["SHOW_UNREAD"] = "N";
			$arParams["USE_FOLLOW"] = "N";
			$arResult["IS_FILTERED"] = true;
		}
	}
	elseif (SITE_TEMPLATE_ID === 'bitrix24')
	{
		$filterOption = new \Bitrix\Main\UI\Filter\Options($arResult["FILTER_ID"]);
		$filterOption->reset();
	}

	if ($arParams["IS_CRM"] == "Y")
	{
		$arParams["CRM_ENTITY_TYPE"] = trim($arParams["CRM_ENTITY_TYPE"]);
		$arParams["CRM_ENTITY_ID"] = intval($arParams["CRM_ENTITY_ID"]);

		if (Loader::includeModule('crm'))
		{
			$arResult["CRM_ENTITY_TYPE_NAME"] = CCrmOwnerType::ResolveName(CCrmLiveFeedEntity::ResolveEntityTypeID($arParams['CRM_ENTITY_TYPE']));
			$arResult["CRM_ENTITY_ID"] = $arParams["CRM_ENTITY_ID"];
		}

		if (strlen($arParams["CRM_ENTITY_TYPE"]) > 0)
		{
			$arParams["SET_LOG_COUNTER"] = $arParams["SET_LOG_PAGE_CACHE"] = "N";
			$arResult["SHOW_UNREAD"] = $arParams["SHOW_UNREAD"] = "N";
		}
		elseif($preset_filter_top_id)
		{
			$arParams["SET_LOG_COUNTER"] = "N";
			$arResult["SHOW_UNREAD"] = $arParams["SHOW_UNREAD"] = "N";
		}
		$arParams["CRM_EXTENDED_MODE"] = ($arParams["CRM_EXTENDED_MODE"] == "Y" ? "Y" : "N");
	}

	if (intval($arParams["LOG_CNT"]) > 0)
	{
		$arNavStartParams = array("nTopCount" => $arParams["LOG_CNT"]);
		$arResult["PAGE_NUMBER"] = 1;
		$bFirstPage = true;
		$arParams["SHOW_NAV_STRING"] = "N";
		$arParams["SHOW_REFRESH"] = "N";
	}
	elseif (
		!$arResult["AJAX_CALL"]
		|| $arResult["bReload"]
	)
	{
		$arNavStartParams = array("nTopCount" => $arParams["PAGE_SIZE"]);
		$arResult["PAGE_NUMBER"] = 1;
		$bFirstPage = true;
	}
	else
	{
		if (intval($_REQUEST["PAGEN_".($GLOBALS["NavNum"] + 1)]) > 0)
		{
			$arResult["PAGE_NUMBER"] = intval($_REQUEST["PAGEN_".($GLOBALS["NavNum"] + 1)]);
		}

		$arNavStartParams = array(
			"nPageSize" => (intval($_REQUEST["pagesize"]) > 0 ? intval($_REQUEST["pagesize"]) : $arParams["PAGE_SIZE"]),
			"bShowAll" => false,
			"iNavAddRecords" => 1,
			"bSkipPageReset" => true,
			"nRecordCount" => 1000000
		);
	}

	if ($bGetComments)
	{
		$arOrder = (!empty($filterContent) ? array("CONTENT_LOG_UPDATE" => "DESC") : array("LOG_UPDATE" => "DESC"));
	}
	elseif ($arParams["USE_FOLLOW"] == "Y")
	{
		$arOrder = array("DATE_FOLLOW" => "DESC");
	}
	elseif ($arParams["USE_COMMENTS"] == "Y")
	{
		$arOrder = (!empty($filterContent) ? array("CONTENT_LOG_UPDATE" => "DESC") : array("LOG_UPDATE" => "DESC"));
	}
	else
	{
		$arOrder = array("LOG_DATE"	=> "DESC");
	}
	$arOrder["ID"] = "DESC";

	$events = GetModuleEvents("socialnetwork", "OnBuildSocNetLogOrder");
	while ($arEvent = $events->Fetch())
	{
		ExecuteModuleEventEx($arEvent, array(&$arOrder, $arParams));
	}

	if (
		(
			!isset($arParams["USE_FAVORITES"])
			|| $arParams["USE_FAVORITES"] != "N"
		)
		&& $arParams["FAVORITES"] == "Y"
	)
	{
		$arFilter[">FAVORITES_USER_ID"] = 0;
		$arParams["SET_LOG_COUNTER"] = $arParams["SET_LOG_PAGE_CACHE"] = "N";
		$arResult["SHOW_UNREAD"] = $arParams["SHOW_UNREAD"] = "N";
	}

	$arParams["NAME_TEMPLATE"] = $arParams["NAME_TEMPLATE_WO_NOBR"];

	if (intval($arParams["GROUP_ID"]) > 0)
	{
		$arResult["COUNTER_TYPE"] = "SG".intval($arParams["GROUP_ID"]);
	}
	elseif(
		$arParams["IS_CRM"] == "Y"
		&& (
			$arParams["SET_LOG_COUNTER"] != "N"
			|| $arParams["SET_LOG_PAGE_CACHE"] != "N"
		)
	)
	{
		$arResult["COUNTER_TYPE"] = (
			is_set($arParams["CUSTOM_DATA"])
			&& is_set($arParams["CUSTOM_DATA"]["CRM_PRESET_TOP_ID"])
			&& $arParams["CUSTOM_DATA"]["CRM_PRESET_TOP_ID"] == "all"
				? "CRM_**_ALL"
				: "CRM_**"
		);
	}
	elseif($arParams["EXACT_EVENT_ID"] == "blog_post")
	{
		$arResult["COUNTER_TYPE"] = "blog_post";
	}
	else
	{
		$arResult["COUNTER_TYPE"] = "**";
	}

	if (
		$arParams["LOG_ID"] <= 0
		&& (
			!$arResult["AJAX_CALL"]
			|| $arResult["bReload"]
		)
	)
	{
		$arResult["LAST_LOG_TS"] = CUserCounter::GetLastDate($arResult["currentUserId"], $arResult["COUNTER_TYPE"]);

		if($arResult["LAST_LOG_TS"] == 0)
		{
			$arResult["LAST_LOG_TS"] = 1;
		}
		else
		{
			//We substruct TimeZone offset in order to get server time
			//because of template compatibility
			$arResult["LAST_LOG_TS"] -= $arResult["TZ_OFFSET"];
		}
	}
	else
	{
		$arResult["LAST_LOG_TS"] = intval($_REQUEST["ts"]);
	}

	if ($arParams["IS_CRM"] == "Y")
	{
		$arListParams = array(
			"IS_CRM" => "Y",
			"CHECK_CRM_RIGHTS" => "Y"
		);

		$filterParams = array(
			"ENTITY_TYPE" => $arParams["CRM_ENTITY_TYPE"],
			"ENTITY_ID" => $arParams["CRM_ENTITY_ID"],
			"AFFECTED_TYPES" => array(),
			"OPTIONS" => array(
				"CUSTOM_DATA" => (
					isset($arParams["CUSTOM_DATA"])
					&& is_array($arParams["CUSTOM_DATA"])
						? $arParams["CUSTOM_DATA"]
						: array()
				)
			)
		);

		$events = GetModuleEvents("socialnetwork", "OnBuildSocNetLogFilter");
		while ($arEvent = $events->Fetch())
		{
			ExecuteModuleEventEx($arEvent, array(&$arFilter, &$filterParams, &$arParams));
		}

		$arListParams['CUSTOM_FILTER_PARAMS'] = $filterParams;
	}
	else
	{
		if (
			IsModuleInstalled('crm')
			&& $arParams["PUBLIC_MODE"] != "Y"
		)
		{
			$arFilter["!MODULE_ID"] = ( // can't use !@MODULE_ID because of null
				COption::GetOptionString("crm", "enable_livefeed_merge", "N") == "Y"
				|| (
					!empty($arFilter["LOG_RIGHTS"])
					&& !is_array($arFilter["LOG_RIGHTS"])
					&& preg_match('/^SG(\d+)$/', $arFilter["LOG_RIGHTS"], $matches)
				)
					? array('crm')
					: array('crm', 'crm_shared')
			);
		}

		$arListParams = array(
			"CHECK_RIGHTS" => "Y"
		);

		if (
			$arParams["LOG_ID"] <= 0
			&& (
				empty($filterData)
				|| empty($filterData['EVENT_ID'])
			)
		)
		{
			$arListParams["CHECK_VIEW"] = "Y";
		}
	}

	if (
		$arParams["USE_FOLLOW"] != "N"
		&& !IsModuleInstalled("intranet")
		&& isset($USER)
		&& is_object($USER)
		&& $USER->IsAuthorized()
	) // BSM
	{
		$arResult["USE_SMART_FILTER"] = "Y";
		$arListParams["MY_GROUPS_ONLY"] = (
			CSocNetLogSmartFilter::GetDefaultValue($arResult["currentUserId"]) == "Y"
				? "Y"
				: "N"
		);
	}

	if (
		$arResult["isExtranetSite"]
		|| $preset_filter_id == 'extranet'
		|| (
			!empty($filterData)
			&& !empty($filterData["EXTRANET"])
			&& $filterData["EXTRANET"] == 'Y'
		)
	)
	{
		$arListParams["MY_GROUPS_ONLY"] = "Y";
	}

	$arResult["MY_GROUPS_ONLY"] = (
		isset($arListParams["MY_GROUPS_ONLY"])
			? $arListParams["MY_GROUPS_ONLY"]
			: false
	);

	if (intval($_REQUEST["pagesize"]) > 0)
	{
		$arParams["SET_LOG_PAGE_CACHE"] = "N";
	}

	$bNeedSetLogPage = false;

	if ($arParams["SET_LOG_PAGE_CACHE"] == "Y")
	{
		$groupCode = (strlen($arResult["COUNTER_TYPE"]) > 0 ? $arResult["COUNTER_TYPE"] : "**");
		$rsLogPages = \Bitrix\Socialnetwork\LogPageTable::getList(array(
			'order' => array(),
			'filter' => array(
				"USER_ID" => $arResult["currentUserId"],
				"=SITE_ID" => SITE_ID,
				"=GROUP_CODE" => $groupCode,
				"PAGE_SIZE" => $arParams["PAGE_SIZE"],
				"PAGE_NUM" => $arResult["PAGE_NUMBER"]
			),
			'select' => array('PAGE_LAST_DATE', 'TRAFFIC_AVG', 'TRAFFIC_CNT', 'TRAFFIC_LAST_DATE')
		));

		if ($arLogPages = $rsLogPages->Fetch())
		{
			$dateLastPageStart = $arLogPages["PAGE_LAST_DATE"];
			$dateLastPageStartTS = MakeTimeStamp($arLogPages["PAGE_LAST_DATE"], CSite::GetDateFormat("FULL"));
			$arLastPageStart = array(
				'TRAFFIC_LAST_DATE_TS' => ($arLogPages["TRAFFIC_LAST_DATE"] ? MakeTimeStamp($arLogPages["TRAFFIC_LAST_DATE"], CSite::GetDateFormat("FULL")) : 0),
				'TRAFFIC_AVG' => intval($arLogPages['TRAFFIC_AVG']),
				'TRAFFIC_CNT' => intval($arLogPages['TRAFFIC_CNT'])
			);

			$arFilter[">=LOG_UPDATE"] = ConvertTimeStamp($dateLastPageStartTS - 60*60*24*4, "FULL");
		}
		elseif(
			$arResult["isExtranetSite"]
			&& !CSocNetUser::IsCurrentUserModuleAdmin()
		) // extranet user
		{
			$res = UserToGroupTable::getList(array(
				'order' => array(
					'GROUP_DATE_CREATE' => 'ASC'
				),
				'filter' => array(
					'USER_ID' => $arResult["currentUserId"],
					'@ROLE' => UserToGroupTable::getRolesMember()
				),
				'select' => array(
					'GROUP_DATE_CREATE' => 'GROUP.DATE_CREATE'
				)
			));
			if ($relation = $res->fetch())
			{
				$arFilter[">=LOG_UPDATE"] = $relation['GROUP_DATE_CREATE'];
			}
		}
		elseif (
			(
				$groupCode != '**'
				|| $arResult["MY_GROUPS_ONLY"] != 'Y'
			)
			&& $arResult["PAGE_NUMBER"] <= 1
		)
		{
			$rsLogPages = \Bitrix\Socialnetwork\LogPageTable::getList(array(
				'order' => array(
					'PAGE_LAST_DATE' => 'DESC'
				),
				'filter' => array(
					"=SITE_ID" => SITE_ID,
					"=GROUP_CODE" => $groupCode,
					"PAGE_SIZE" => $arParams["PAGE_SIZE"],
					"PAGE_NUM" => $arResult["PAGE_NUMBER"]
				),
				'select' => array('PAGE_LAST_DATE')
			));

			if ($arLogPages = $rsLogPages->Fetch())
			{
				$dateLastPageStart = $arLogPages["PAGE_LAST_DATE"];
				$arFilter[">=LOG_UPDATE"] = ConvertTimeStamp(MakeTimeStamp($arLogPages["PAGE_LAST_DATE"], CSite::GetDateFormat("FULL")) - 60*60*24*4, "FULL");
				$bNeedSetLogPage = true;
			}
		}
	}

	if ($bCurrentUserIsAdmin)
	{
		$arListParams["USER_ID"] = "A";
	}

	if ($arParams["USE_FOLLOW"] == "Y")
	{
		$arListParams["USE_FOLLOW"] = "Y";
	}
	else
	{
		$arListParams["USE_FOLLOW"] = "N";
		$arListParams["USE_SUBSCRIBE"] = "N";
	}

	$arSelectFields = array(
		"ID", "TMP_ID", "MODULE_ID",
		"LOG_DATE", "LOG_UPDATE", "DATE_FOLLOW",
		"ENTITY_TYPE", "ENTITY_ID", "EVENT_ID", "SOURCE_ID", "USER_ID", "FOLLOW",
		"RATING_TYPE_ID", "RATING_ENTITY_ID"
	);

	if (
		isset($arParams["USE_FAVORITES"])
		&& $arParams["USE_FAVORITES"] == "N"
	)
	{
		$arListParams["USE_FAVORITES"] = "N";
	}
	elseif ($arParams["FAVORITES"] == "Y")
	{
		$arSelectFields[] = "FAVORITES_USER_ID";
	}

	if ($DB->type == "MYSQL")
	{
		$arSelectFields[] = "LOG_DATE_TS";
	}

	$arTmpEventsNew = array();
	$arResult["arLogTmpID"] = array();
	$arActivity2Log = array();

	$arDiskUFEntity = array(
		"BLOG_POST" => array(),
		"SONET_LOG" => array()
	);

	$dbEventsID = __SLLogGetIds(
		$arOrder, $arFilter, $arNavStartParams, $arSelectFields, $arListParams, $bFirstPage,
		$arResult, $arActivity2Log, $arDiskUFEntity, $arTmpEventsNew
	);

	if (
		count($arResult["arLogTmpID"]) <= 0
		&& $bNeedSetLogPage // no log pages for user
	)
	{
		unset($dateLastPageStart);
		unset($arFilter[">=LOG_UPDATE"]);

		$dbEventsID = __SLLogGetIds(
			$arOrder, $arFilter, $arNavStartParams, $arSelectFields, $arListParams, $bFirstPage,
			$arResult, $arActivity2Log, $arDiskUFEntity, $arTmpEventsNew
		);
	}

	if (
		!empty($arResult["arLogTmpID"])
		&& $arResult["currentUserId"] > 0
		&& (
			!isset($arParams["USE_FAVORITES"])
			|| $arParams["USE_FAVORITES"] != "N"
		)
	)
	{
		$favLogIdList = array();
		$res = \Bitrix\Socialnetwork\LogFavoritesTable::getList(array(
			'filter' => array(
				'@LOG_ID' => $arResult["arLogTmpID"],
				'USER_ID' => $arResult["currentUserId"]
			),
			'select' => array('LOG_ID')
		));
		while($favEntry = $res->fetch())
		{
			$favLogIdList[] = $favEntry['LOG_ID'];
		}

		foreach($arTmpEventsNew as $key => $entry)
		{
			$arTmpEventsNew[$key]['FAVORITES_USER_ID'] = $arTmpEventsNew[$key]['!FAVORITES_USER_ID'] = (
				in_array($entry['ID'], $favLogIdList)
					? $arResult["currentUserId"]
					: 0
			);
		}
	}

	$cnt = count($arResult["arLogTmpID"]);

	if (
		isset($arDiskUFEntity)
		&& (
			!empty($arDiskUFEntity["SONET_LOG"])
			|| !empty($arDiskUFEntity["BLOG_POST"])
		)
	)
	{
		$events = GetModuleEvents("socialnetwork", "OnAfterFetchDiskUfEntity");
		while ($arEvent = $events->Fetch())
		{
			ExecuteModuleEventEx($arEvent, array($arDiskUFEntity));
		}
	}

	if (
		!empty($arActivity2Log)
		&& CModule::IncludeModule('crm')
		&& CModule::IncludeModule('tasks')
	)
	{
		$rsActivity = CCrmActivity::GetList(
			array(),
			array(
				"@ID" => array_keys($arActivity2Log),
				"TYPE_ID" => CCrmActivityType::Task,
				"CHECK_PERMISSIONS" => "N"
			),
			false,
			false,
			array("ID", "ASSOCIATED_ENTITY_ID")
		);
		while(
			($arActivity = $rsActivity->Fetch())
			&& (intval($arActivity["ASSOCIATED_ENTITY_ID"]) > 0)
		)
		{
			$taskItem = new CTaskItem(intval($arActivity["ASSOCIATED_ENTITY_ID"]), $arResult["currentUserId"]);
			if (!$taskItem->CheckCanRead())
			{
				unset($arActivity2Log[$arActivity["ID"]]);
			}
		}
	}

	if ($bFirstPage)
	{
		$last_date = $arTmpEventsNew[count($arTmpEventsNew)-1][($arParams["USE_FOLLOW"] == "Y" ? "DATE_FOLLOW" : "LOG_UPDATE")];
	}
	elseif (
		$dbEventsID
		&& $dbEventsID->NavContinue()
		&& $arEvents = $dbEventsID->GetNext()
	)
	{
		$next_page_date = ($arParams["USE_FOLLOW"] == "Y" ? $arEvents["DATE_FOLLOW"] : $arEvents["LOG_UPDATE"]);
		if (
			$USER->IsAuthorized()
			&& ($arResult["LAST_LOG_TS"] < MakeTimeStamp($next_page_date))
		)
		{
			$next_page_date = $arResult["LAST_LOG_TS"];
		}
	}

	if (
		$cnt == 0
		&& isset($dateLastPageStart)
		&& $USER->IsAuthorized()
		&& $arParams["SET_LOG_PAGE_CACHE"] == "Y"
	)
	{
		CSocNetLogPages::DeleteEx($arResult["currentUserId"], SITE_ID, $arParams["PAGE_SIZE"], (strlen($arResult["COUNTER_TYPE"]) > 0 ? $arResult["COUNTER_TYPE"] : "**"));
		$bNeedSetLogPage = true;
	}

	if (
		$cnt < $arParams["PAGE_SIZE"]
		&& 	isset($arFilter[">=LOG_UPDATE"])
	)
	{
		$arResult["NEXT_PAGE_SIZE"] = $cnt;
	}
	elseif (intval($_REQUEST["pagesize"]) > 0)
	{
		$arResult["NEXT_PAGE_SIZE"] = intval($_REQUEST["pagesize"]);
	}

	$bArActivity2LogEmpty = empty($arActivity2Log);
	$tasksNum = 0;
	foreach ($arTmpEventsNew as $key => $arTmpEvent)
	{
		if (
			$arTmpEvent["EVENT_ID"] == "crm_activity_add"
			&& !$bArActivity2LogEmpty
			&& !in_array($arTmpEvent["ID"], $arActivity2Log)
		)
		{
			unset($arTmpEventsNew[$key]);
		}
		elseif (
			!is_array($arPrevPageLogID)
			|| !in_array($arTmpEvent["ID"], $arPrevPageLogID)
		)
		{
			$arTmpEventsNew[$key]["EVENT_ID_FULLSET"] = CSocNetLogTools::FindFullSetEventIDByEventID($arTmpEvent["EVENT_ID"]);
			if ($arTmpEvent["EVENT_ID"] == 'tasks')
			{
				$tasksNum++;
			}

			if ($key == 0)
			{
				if ($arTmpEvent["DATE_FOLLOW"])
				{
					$dateFirstPageTS = MakeTimeStamp($arTmpEvent["DATE_FOLLOW"], CSite::GetDateFormat("FULL"));
				}
				elseif (
					$arParams["USE_FOLLOW"] == "N"
					&& $arTmpEvent["LOG_UPDATE"]
				)
				{
					$dateFirstPageTS = MakeTimeStamp($arTmpEvent["LOG_UPDATE"], CSite::GetDateFormat("FULL"));
				}
			}
		}
		else
		{
			unset($arTmpEventsNew[$key]);
		}
	}

	$arResult["Events"] = $arTmpEventsNew;

	if (
		$arParams["LOG_ID"] > 0
		&& count($arResult["Events"]) <= 0
	)
	{
		$arResult["FatalError"] = GetMessage("SONET_73_ENTRY_NOT_FOUND");
	}

	$contentIdList = array();
	foreach ($arResult["Events"] as $i => $eventFields)
	{
		if ($contentId = \Bitrix\Socialnetwork\Livefeed\Provider::getContentId($eventFields))
		{
			$contentIdList[] = $arResult["Events"][$i]['CONTENT_ID'] = $contentId['ENTITY_TYPE'].'-'.$contentId['ENTITY_ID'];
		}
	}

	$arResult["ContentViewData"] = (!empty($contentIdList)
		? \Bitrix\Socialnetwork\Item\UserContentView::getViewData(array(
			'contentId' => $contentIdList
		))
		: array()
	);

	if ($arTmpEvent["DATE_FOLLOW"])
	{
		$arResult["dateLastPageTS"] = MakeTimeStamp($arTmpEvent["DATE_FOLLOW"], CSite::GetDateFormat("FULL"));
	}
	elseif ($arParams["USE_FOLLOW"] == "N")
	{
		if (
			!empty($arOrder["LOG_DATE"])
			&& $arTmpEvent["LOG_DATE"]
		)
		{
			$arResult["dateLastPageTS"] = MakeTimeStamp($arTmpEvent["LOG_DATE"], CSite::GetDateFormat("FULL"));
		}
		elseif ($arTmpEvent["LOG_UPDATE"])
		{
			$arResult["dateLastPageTS"] = MakeTimeStamp($arTmpEvent["LOG_UPDATE"], CSite::GetDateFormat("FULL"));
		}
	}

	if (!empty($arResult["dateLastPageTS"]))
	{
		$dateLastPage = ConvertTimeStamp($arResult["dateLastPageTS"], "FULL");
	}

	$arResult["dateLastPageId"] = $arTmpEvent["ID"];

	$arResult["WORKGROUPS_PAGE"] = $folderWorkgroups;
	$arResult["LOG_COUNTER"] = $arResult["LOG_COUNTER_IMPORTANT"] = 0;

	if (
		$USER->IsAuthorized()
		&& $arParams["SET_LOG_COUNTER"] == "Y"
	)
	{
		$arCounters = CUserCounter::GetValues($arResult["currentUserId"], SITE_ID);

		if (isset($arCounters["BLOG_POST_IMPORTANT"]))
		{
			$arResult["LOG_COUNTER_IMPORTANT"] = intval($arCounters["BLOG_POST_IMPORTANT"]);
		}

		if (isset($arCounters[$arResult["COUNTER_TYPE"]]))
		{
			$arResult["LOG_COUNTER"] = intval($arCounters[$arResult["COUNTER_TYPE"]]);
		}
		else
		{
			$bEmptyCounter = true;
			$arResult["LOG_COUNTER"] = 0;
		}
	}

	if (
		$USER->IsAuthorized()
		&& IsModuleInstalled('tasks')
	)
	{
		$arResult["EXPERT_MODE"] = "N";

		$rs = \Bitrix\Socialnetwork\LogViewTable::getList(array(
			'order' => array(),
			'filter' => array(
				"USER_ID" => $arResult["currentUserId"],
				"EVENT_ID" => 'tasks'
			),
			'select' => array('TYPE')
		));
		if ($ar = $rs->Fetch())
		{
			$arResult["EXPERT_MODE"] = ($ar['TYPE'] == "N" ? "Y" : "N");
		}
	}

	if (
		$USER->IsAuthorized()
		&& $arParams["SET_LOG_PAGE_CACHE"] == "Y"
		&& $dateLastPage
		&& (
			!$dateLastPageStart
			|| $dateLastPageStart != $dateLastPage
			|| $bNeedSetLogPage
		)
	)
	{
		$groupCode = (strlen($arResult["COUNTER_TYPE"]) > 0 ? $arResult["COUNTER_TYPE"] : "**");

		$bNeedSetTraffic = CSocNetLogComponent::isSetTrafficNeeded(array(
			"PAGE_NUMBER" => $arResult["PAGE_NUMBER"],
			"GROUP_CODE" => $groupCode,
			"TRAFFIC_LAST_DATE_TS" => $arLastPageStart['TRAFFIC_LAST_DATE_TS']
		));

		CSocNetLogPages::Set(
			$arResult["currentUserId"],
			ConvertTimeStamp(MakeTimeStamp($dateLastPage, CSite::GetDateFormat("FULL")) - $arResult["TZ_OFFSET"], "FULL"),
			$arParams["PAGE_SIZE"],
			$arResult["PAGE_NUMBER"],
			SITE_ID,
			$groupCode,
			(
				$bNeedSetTraffic
					? ($arLastPageStart['TRAFFIC_AVG'] + $dateFirstPageTS - $arResult["dateLastPageTS"]) / ($arLastPageStart['TRAFFIC_CNT'] + 1)
					: false
			),
			(
				$bNeedSetTraffic
					? ($arLastPageStart['TRAFFIC_CNT'] + 1)
					: false
			)
		);

		if (
			$arResult["PAGE_NUMBER"] == 1
			&& IsModuleInstalled('tasks')
			&& $arResult["EXPERT_MODE"] != "Y"
		)
		{
			$arResult["EXPERT_MODE_SET"] = \Bitrix\Socialnetwork\LogViewTable::checkExpertModeAuto($arResult["currentUserId"], $tasksNum, $arParams["PAGE_SIZE"]);
			if ($arResult["EXPERT_MODE_SET"])
			{
				$arParams["SET_LOG_COUNTER"] = "N";
			}
		}
	}

	if (
		$USER->IsAuthorized()
		&& $arParams["SET_LOG_COUNTER"] == "Y"
		&& (
			intval($arResult["LOG_COUNTER"]) > 0
			|| $bEmptyCounter
		)
	)
	{
		CUserCounter::ClearByUser(
			$arResult["currentUserId"],
			array(SITE_ID, "**"),
			$arResult["COUNTER_TYPE"],
			true
		);

		if (intval($arResult["LOG_COUNTER_IMPORTANT"]) > 0)
		{
			CUserCounter::ClearByUser(
				$arResult["currentUserId"],
				SITE_ID,
				"BLOG_POST_IMPORTANT"
			);
		}

		$db_events = GetModuleEvents("socialnetwork", "OnSonetLogCounterClear");
		while ($arEvent = $db_events->Fetch())
		{
			ExecuteModuleEventEx($arEvent, array($arResult["COUNTER_TYPE"], intval($arResult["LAST_LOG_TS"])));
		}
	}
}
else
{
	$arResult["NEED_AUTH"] = "Y";
}

if (
	!isset($arResult["FatalError"])
	&& $USER->IsAuthorized()
	&& !$arResult["AJAX_CALL"]
)
{
	$cache = new CPHPCache;
	$cache_id = "log_form_comments".serialize($arParams["COMMENT_PROPERTY"]);
	$cache_path = "/sonet/log_form/comments";

	if(defined("BX_COMP_MANAGED_CACHE"))
		$ttl = 2592000;
	else
		$ttl = 600;

	if ($cache->InitCache($ttl, $cache_id, $cache_path))
	{
		$Vars = $cache->GetVars();
		$arResult["COMMENT_PROPERTIES"] = $Vars["comment_props"];
		$cache->Output();
	}
	else
	{
		$cache->StartDataCache($ttl, $cache_id, $cache_path);

		$arResult["COMMENT_PROPERTIES"] = array("SHOW" => "N");
		if (!empty($arParams["COMMENT_PROPERTY"]))
		{
			$arPostFields = $USER_FIELD_MANAGER->GetUserFields("SONET_COMMENT", 0, LANGUAGE_ID);

			if (count($arParams["COMMENT_PROPERTY"]) > 0)
			{
				foreach ($arPostFields as $FIELD_NAME => $arPostField)
				{
					if (!in_array($FIELD_NAME, $arParams["COMMENT_PROPERTY"]))
						continue;
					$arPostField["EDIT_FORM_LABEL"] = strLen($arPostField["EDIT_FORM_LABEL"]) > 0 ? $arPostField["EDIT_FORM_LABEL"] : $arPostField["FIELD_NAME"];
					$arPostField["~EDIT_FORM_LABEL"] = $arPostField["EDIT_FORM_LABEL"];
					$arPostField["EDIT_FORM_LABEL"] = htmlspecialcharsEx($arPostField["EDIT_FORM_LABEL"]);
					$arResult["COMMENT_PROPERTIES"]["DATA"][$FIELD_NAME] = $arPostField;
				}
			}
			if (!empty($arResult["COMMENT_PROPERTIES"]["DATA"]))
				$arResult["COMMENT_PROPERTIES"]["SHOW"] = "Y";
		}

		$cache->EndDataCache(array("comment_props" => $arResult["COMMENT_PROPERTIES"]));
	}
}

$arResult["bGetComments"] = $bGetComments;
$arResult["GET_COMMENTS"] = ($bGetComments ? "Y" : "N");

if (!isset($arResult["FatalError"]))
{
	if (CModule::IncludeModule("forum"))
	{
		$arResult["Smiles"] = COption::GetOptionInt("forum", "smile_gallery_id", 0);
	}
	else
	{
		if($CACHE_MANAGER->Read(604800, "b_sonet_smile_".LANGUAGE_ID))
		{
			$arResult["Smiles"] = $CACHE_MANAGER->Get("b_sonet_smile_".LANGUAGE_ID);
		}
		else
		{
			$arResult["Smiles"] = array();

			$rsSmile = CSocNetSmile::GetList(
				array("SORT" => "ASC"),
				array("SMILE_TYPE" => "S", "LANG_LID" => LANGUAGE_ID),
				false,
				false,
				array("ID", "IMAGE", "DESCRIPTION", "TYPING", "SMILE_TYPE", "SORT", "LANG_NAME")
			);
			while ($arSmile = $rsSmile->Fetch())
			{
				list($type) = explode(" ", $arSmile["TYPING"]);
				$arSmile["TYPE"] = str_replace("'", "\'", $type);
				$arSmile["TYPE"] = str_replace("\\", "\\\\", $arSmile["TYPE"]);
				$arSmile["NAME"] = $arSmile["LANG_NAME"];
				$arSmile["IMAGE"] = "/bitrix/images/socialnetwork/smile/".$arSmile["IMAGE"];

				$arResult["Smiles"][] = $arSmile;
			}

			$CACHE_MANAGER->Set("b_sonet_smile_".LANGUAGE_ID, $arResult["Smiles"]);
		}
	}
}

$this->IncludeComponentTemplate();
?>

Zerion Mini Shell 1.0