403Webshell
Server IP : 80.87.202.40  /  Your IP : 216.73.216.169
Web Server : Apache
System : Linux rospirotorg.ru 5.14.0-539.el9.x86_64 #1 SMP PREEMPT_DYNAMIC Thu Dec 5 22:26:13 UTC 2024 x86_64
User : bitrix ( 600)
PHP Version : 8.2.27
Disable Function : NONE
MySQL : OFF |  cURL : ON |  WGET : ON |  Perl : ON |  Python : OFF |  Sudo : ON |  Pkexec : ON
Directory :  /home/bitrix/ext_www/rospirotorg.ru/bitrix/components/bitrix/socialnetwork.log.entry/

Upload File :
current_dir [ Writeable] document_root [ Writeable]

 

Command :


[ Back ]     

Current File : /home/bitrix/ext_www/rospirotorg.ru/bitrix/components/bitrix/socialnetwork.log.entry/include.php
<?php

if (!defined('B_PROLOG_INCLUDED') || B_PROLOG_INCLUDED !== true)
{
	die();
}

use Bitrix\Socialnetwork\Component\LogList;

/** @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 */

if (!function_exists('__SLTransportSort'))
{
	function __SLTransportSort($a, $b)
	{
		$arPattern = array("M", "X", "D", "E");
		$a_key = array_search($a, $arPattern);
		$b_key = array_search($b, $arPattern);

		if ($a_key == $b_key)
			return 0;

		return ($a_key < $b_key) ? -1 : 1;
	}
}

if (!function_exists('__SLEGetTransport'))
{
	function __SLEGetTransport($arFields, $arCurrentUserSubscribe)
	{
		$arTransport = array();

		$entityType = ($arFields["ENTITY_TYPE"] ?? '');
		$entityId = ($arFields["ENTITY_ID"] ?? '');
		$eventId = ($arFields["EVENT_ID"] ?? '');

		if (array_key_exists($entityType."_".$entityId."_".$eventId."_N_N", $arCurrentUserSubscribe["TRANSPORT"]))
			$arTransport[] = $arCurrentUserSubscribe["TRANSPORT"][$arFields["ENTITY_TYPE"]."_".$entityId."_".$eventId."_N_N"];

		if (array_key_exists($entityType."_".$entityId."_all_N_N", $arCurrentUserSubscribe["TRANSPORT"]))
			$arTransport[] = $arCurrentUserSubscribe["TRANSPORT"][$arFields["ENTITY_TYPE"]."_".$entityId."_all_N_N"];

		$bHasLogEventCreatedBy = CSocNetLogTools::HasLogEventCreatedBy($eventId);
		if ($bHasLogEventCreatedBy)
		{
			if ($eventId)
			{
				if (array_key_exists("U_".$arFields["USER_ID"]."_all_N_Y", $arCurrentUserSubscribe["TRANSPORT"]))
					$arTransport[] = $arCurrentUserSubscribe["TRANSPORT"]["U_".$arFields["USER_ID"]."_all_N_Y"];
				elseif (array_key_exists("U_".$arFields["USER_ID"]."_all_Y_Y", $arCurrentUserSubscribe["TRANSPORT"]))
					$arTransport[] = $arCurrentUserSubscribe["TRANSPORT"]["U_".$arFields["USER_ID"]."_all_Y_Y"];
			}
		}

		if (
			!array_key_exists($entityType."_".$entityId."_".$eventId."_N_N", $arCurrentUserSubscribe["TRANSPORT"])
			&& !array_key_exists($entityType."_".$entityId."_all_N_N", $arCurrentUserSubscribe["TRANSPORT"])
			)
		{
			if (array_key_exists($entityType."_0_".$eventId."_N_N", $arCurrentUserSubscribe["TRANSPORT"]))
				$arTransport[] = $arCurrentUserSubscribe["TRANSPORT"][$arFields["ENTITY_TYPE"]."_0_".$eventId."_N_N"];
			elseif (array_key_exists($entityType."_0_all_N_N", $arCurrentUserSubscribe["TRANSPORT"]))
				$arTransport[] = $arCurrentUserSubscribe["TRANSPORT"][$arFields["ENTITY_TYPE"]."_0_all_N_N"];
			else
				$arTransport[] = "N";
		}

		$arTransport = array_unique($arTransport);
		usort($arTransport, "__SLTransportSort");

		return $arTransport;
	}
}

if (!function_exists('__SLEGetLogRecord'))
{
	function __SLEGetLogRecord($logId, $arParams, $arCurrentUserSubscribe)
	{
		global $APPLICATION, $CACHE_MANAGER, $USER_FIELD_MANAGER, $DB, $USER;

		static
			$isExtranetInstalled,
			$isExtranetUser,
			$arUserIdVisible,
			$arAvailableExtranetUserID,

			$bCurrentUserIsAdmin,
			$arSocNetFeaturesSettings;

		if (!$isExtranetInstalled)
		{
			$isExtranetInstalled = (CModule::IncludeModule("extranet") ? "Y" : "N");
			$isExtranetUser = ($isExtranetInstalled == "Y" && !CExtranet::IsIntranetUser() ? "Y" : "N");
			$isExtranetAdmin = ($isExtranetInstalled == "Y" && CExtranet::IsExtranetAdmin() ? "Y" : "N");
			$bCurrentUserIsAdmin = CSocNetUser::IsCurrentUserModuleAdmin();
			$arSocNetFeaturesSettings = CSocNetAllowed::GetAllowedFeatures();

			if ($isExtranetUser == "Y")
			{
				$arUserIdVisible = CExtranet::GetMyGroupsUsersSimple(SITE_ID);
			}
			elseif (
				$isExtranetInstalled == "Y"
				&& $isExtranetUser != "Y"
			)
			{
				if (
					$isExtranetAdmin == "Y"
					&& $bCurrentUserIsAdmin
				)
				{
					$arAvailableExtranetUserID = CExtranet::GetMyGroupsUsers(SITE_ID);
				}
				else
				{
					$arAvailableExtranetUserID = CExtranet::GetMyGroupsUsersSimple(CExtranet::GetExtranetSiteID());
				}
			}
		}

		$cacheTime = 31536000;
		$arEvent = array();

		$cache = new \CPHPCache;

		$cachedFields = [];
		$arKeys = array(
			"AVATAR_SIZE",
			"DESTINATION_LIMIT",
			"CHECK_PERMISSIONS_DEST",
			"NAME_TEMPLATE",
			"NAME_TEMPLATE_WO_NOBR",
			"SHOW_LOGIN",
			"DATE_TIME_FORMAT",
			"PATH_TO_USER",
			"PATH_TO_GROUP",
			"PATH_TO_CONPANY_DEPARTMENT"
		);
		foreach($arKeys as $param_key)
		{
			$cachedFields[$param_key] = (array_key_exists($param_key, $arParams) ? $arParams[$param_key] : false);
		}

		$cacheId = implode('_', [
			'log_post',
			$logId,
			md5(serialize($cachedFields)),
			SITE_TEMPLATE_ID,
			SITE_ID,
			LANGUAGE_ID,
			FORMAT_DATETIME,
			\CTimeZone::getOffset()
		]);
		$cachePath = '/sonet/log/' . (int)((int)$logId / 1000) . '/' . $logId . '/entry/';

		if ($cache->InitCache($cacheTime, $cacheId, $cachePath))
		{
			$arCacheVars = $cache->GetVars();
			$arEvent["FIELDS_FORMATTED"] = $arCacheVars["FIELDS_FORMATTED"];

			if (
				is_array($arEvent["FIELDS_FORMATTED"])
				&& array_key_exists("CACHED_CSS_PATH", $arEvent["FIELDS_FORMATTED"])
			)
			{
				if (
					!is_array($arEvent["FIELDS_FORMATTED"]["CACHED_CSS_PATH"])
					&& $arEvent["FIELDS_FORMATTED"]["CACHED_CSS_PATH"] <> ''
				)
				{
					$APPLICATION->SetAdditionalCSS($arEvent["FIELDS_FORMATTED"]["CACHED_CSS_PATH"]);
				}
				elseif(is_array($arEvent["FIELDS_FORMATTED"]["CACHED_CSS_PATH"]))
				{
					foreach($arEvent["FIELDS_FORMATTED"]["CACHED_CSS_PATH"] as $css_path)
					{
						$APPLICATION->SetAdditionalCSS($css_path);
					}
				}
			}

			if (
				is_array($arEvent["FIELDS_FORMATTED"])
				&& array_key_exists("CACHED_JS_PATH", $arEvent["FIELDS_FORMATTED"])
			)
			{
				if (
					!is_array($arEvent["FIELDS_FORMATTED"]["CACHED_JS_PATH"])
					&& $arEvent["FIELDS_FORMATTED"]["CACHED_JS_PATH"] !== ''
				)
				{
					$APPLICATION->AddHeadScript($arEvent["FIELDS_FORMATTED"]["CACHED_JS_PATH"]);
				}
				elseif(is_array($arEvent["FIELDS_FORMATTED"]["CACHED_JS_PATH"]))
				{
					foreach($arEvent["FIELDS_FORMATTED"]["CACHED_JS_PATH"] as $js_path)
					{
						$APPLICATION->AddHeadScript($js_path);
					}
				}
			}
		}
		else
		{
			$cache->StartDataCache($cacheTime, $cacheId, $cachePath);

			$arFilter = array(
				"ID" => $logId
			);

			$arListParams = array(
				"CHECK_RIGHTS" => "N",
				"USE_FOLLOW" => "N",
				"USE_SUBSCRIBE" => "N"
			);

			$arSelect = array(
				"ID", "TMP_ID", "ENTITY_TYPE", "ENTITY_ID", "USER_ID", "EVENT_ID", "LOG_DATE", "LOG_UPDATE", "TITLE_TEMPLATE", "TITLE", "MESSAGE", "TEXT_MESSAGE", "URL", "MODULE_ID", "CALLBACK_FUNC", "EXTERNAL_ID", "SITE_ID", "PARAMS",
				"COMMENTS_COUNT", "ENABLE_COMMENTS", "SOURCE_ID",
				"GROUP_NAME", "GROUP_OWNER_ID", "GROUP_INITIATE_PERMS", "GROUP_VISIBLE", "GROUP_OPENED", "GROUP_IMAGE_ID",
				"USER_NAME", "USER_LAST_NAME", "USER_SECOND_NAME", "USER_LOGIN", "USER_PERSONAL_PHOTO", "USER_PERSONAL_GENDER",
				"CREATED_BY_NAME", "CREATED_BY_LAST_NAME", "CREATED_BY_SECOND_NAME", "CREATED_BY_LOGIN", "CREATED_BY_PERSONAL_PHOTO", "CREATED_BY_PERSONAL_GENDER",
				"RATING_TYPE_ID", "RATING_ENTITY_ID",
				"SOURCE_TYPE"
			);

			$dbEvent = CSocNetLog::GetList(
				array(),
				$arFilter,
				false,
				false,
				$arSelect,
				$arListParams
			);

			if ($arEvent = $dbEvent->GetNext())
			{
				$stub = (
					\Bitrix\Main\ModuleManager::isModuleInstalled('bitrix24')
					&& (
						(
							in_array($arEvent["EVENT_ID"], array("timeman_entry", "report"))
							&& !IsModuleInstalled("timeman")
						)
						|| (
							in_array($arEvent["EVENT_ID"], array("tasks"))
							&& !IsModuleInstalled("tasks")
						)
						|| (
							in_array($arEvent["EVENT_ID"], array("lists_new_element"))
							&& !IsModuleInstalled("lists")
						)
					)
				);

				if (defined("BX_COMP_MANAGED_CACHE"))
				{
					$CACHE_MANAGER->StartTagCache($cachePath);
					$CACHE_MANAGER->RegisterTag("USER_NAME_".intval($arEvent["USER_ID"]));
					$CACHE_MANAGER->RegisterTag("SONET_LOG_".intval($arEvent["ID"]));

					if ($arEvent["ENTITY_TYPE"] == SONET_ENTITY_GROUP)
					{
						$CACHE_MANAGER->RegisterTag("sonet_group_".$arEvent["ENTITY_ID"]);
					}
				}

				$arEvent["EVENT_ID_FULLSET"] = CSocNetLogTools::FindFullSetEventIDByEventID($arEvent["EVENT_ID"]);

				if ($arEvent["ENTITY_TYPE"] == SONET_ENTITY_GROUP)
				{
					static $arSiteWorkgroupsPage;

					if (
						!$arSiteWorkgroupsPage
						&& (
							IsModuleInstalled("extranet")
							|| (
								is_set($arEvent["URL"])
								&& (mb_strpos($arEvent["URL"], "#GROUPS_PATH#") !== false)
							)
						)
					)
					{
						$rsSite = CSite::GetList("sort", "desc", Array("ACTIVE" => "Y"));
						while($arSite = $rsSite->Fetch())
						{
							$arSiteWorkgroupsPage[$arSite["ID"]] = COption::GetOptionString("socialnetwork", "workgroups_page", $arSite["DIR"]."workgroups/", $arSite["ID"]);
						}
					}

					if (
						is_set($arEvent["URL"])
						&& isset($arSiteWorkgroupsPage[SITE_ID])
					)
					{
						$arEvent["URL"] = str_replace("#GROUPS_PATH#", $arSiteWorkgroupsPage[SITE_ID], $arEvent["URL"]);
					}
				}

				if ($stub)
				{
					$arEvent["FIELDS_FORMATTED"] = SocialnetworkLogEntry::formatStubEvent($arEvent, $arParams);
				}
				else
				{
					$arEventTmp = CSocNetLogTools::FindLogEventByID($arEvent["EVENT_ID"], false);

					if (
						$arEventTmp
						&& isset($arEventTmp["CLASS_FORMAT"])
						&& isset($arEventTmp["METHOD_FORMAT"])
					)
					{
						$contentId = \Bitrix\Socialnetwork\Livefeed\Provider::getContentId($arEvent);
						if (!empty($contentId['ENTITY_TYPE']))
						{
							if ($postProvider = \Bitrix\Socialnetwork\Livefeed\Provider::getProvider($contentId['ENTITY_TYPE']))
							{
								$sourceAdditonalData = $postProvider->getAdditionalData(array(
									'id' => array($arEvent["SOURCE_ID"])
								));

								if (
									!empty($sourceAdditonalData)
									&& isset($sourceAdditonalData[$arEvent["SOURCE_ID"]])
								)
								{
									$arEvent['ADDITIONAL_DATA'] = $sourceAdditonalData[$arEvent["SOURCE_ID"]];
								}
							}
						}

						$arEvent["UF"] = $USER_FIELD_MANAGER->GetUserFields("SONET_LOG", $arEvent["ID"], LANGUAGE_ID);
						$arEvent["FIELDS_FORMATTED"] = call_user_func(array($arEventTmp["CLASS_FORMAT"], $arEventTmp["METHOD_FORMAT"]), $arEvent, $arParams);

						if (is_array($arEvent["FIELDS_FORMATTED"]))
						{
							if (
								isset($arEvent["FIELDS_FORMATTED"]["EVENT_FORMATTED"])
								&& is_array($arEvent["FIELDS_FORMATTED"]["EVENT_FORMATTED"])
								&& isset($arEvent["FIELDS_FORMATTED"]["EVENT_FORMATTED"]["MESSAGE"])
							)
							{
								if (in_array($arEvent["EVENT_ID"], array('calendar')))
								{
									$arEvent["FIELDS_FORMATTED"]["EVENT_FORMATTED"]["MESSAGE"] = htmlspecialcharsback($arEvent["FIELDS_FORMATTED"]["EVENT_FORMATTED"]["MESSAGE"]);
								}
								else
								{
									$arEvent["FIELDS_FORMATTED"]["EVENT_FORMATTED"]["MESSAGE"] = CSocNetTextParser::closetags(htmlspecialcharsback($arEvent["FIELDS_FORMATTED"]["EVENT_FORMATTED"]["MESSAGE"]));
								}
							}

							if (
								isset($arEvent["FIELDS_FORMATTED"]["EVENT_FORMATTED"])
								&& is_array($arEvent["FIELDS_FORMATTED"]["EVENT_FORMATTED"])
							)
							{
								$arFields2Cache = array(
									"URL",
									"STYLE",
									"DESTINATION",
									"DESTINATION_MORE",
									"TITLE_24",
									"TITLE_24_2",
									"TITLE_24_2_STYLE",
									"IS_IMPORTANT",
									"MESSAGE",
									"FOOTER_MESSAGE",
									"MESSAGE_TITLE_24",
									"DATETIME_FORMATTED",
									"LOG_DATE_FORMAT",
									"MENU",
									"COMMENT_URL"
								);
								foreach ($arEvent["FIELDS_FORMATTED"]["EVENT_FORMATTED"] as $field => $value)
								{
									if (!in_array($field, $arFields2Cache))
									{
										unset($arEvent["FIELDS_FORMATTED"]["EVENT_FORMATTED"][$field]);
									}
								}
							}

							if (
								isset($arEvent["FIELDS_FORMATTED"]["EVENT"])
								&& is_array($arEvent["FIELDS_FORMATTED"]["EVENT"])
							)
							{
								$arFields2Cache = array(
									"ID",
									"URL",
									"USER_ID",
									"ENTITY_TYPE",
									"ENTITY_ID",
									"EVENT_ID",
									"EVENT_ID_FULLSET",
									"TITLE",
									"MESSAGE",
									"SOURCE_ID",
									"PARAMS",
									"RATING_TYPE_ID",
									"RATING_ENTITY_ID"
								);
								foreach ($arEvent["FIELDS_FORMATTED"]["EVENT"] as $field => $value)
								{
									if (!in_array($field, $arFields2Cache))
									{
										unset($arEvent["FIELDS_FORMATTED"]["EVENT"][$field]);
									}
								}
							}
							if (
								isset($arEvent["FIELDS_FORMATTED"]["CREATED_BY"])
								&& is_array($arEvent["FIELDS_FORMATTED"]["CREATED_BY"])
							)
							{
								$arFields2Cache = array(
									"TOOLTIP_FIELDS",
									"FORMATTED",
									"URL",
									"IS_EXTRANET",
									"IS_COLLAB",
								);
								foreach ($arEvent["FIELDS_FORMATTED"]["CREATED_BY"] as $field => $value)
								{
									if (!in_array($field, $arFields2Cache))
									{
										unset($arEvent["FIELDS_FORMATTED"]["CREATED_BY"][$field]);
									}
								}

								if (
									isset($arEvent["FIELDS_FORMATTED"]["CREATED_BY"]["TOOLTIP_FIELDS"])
									&& is_array($arEvent["FIELDS_FORMATTED"]["CREATED_BY"]["TOOLTIP_FIELDS"])
								)
								{
									$arFields2Cache = array(
										"ID",
										"PATH_TO_SONET_USER_PROFILE",
										"NAME",
										"LAST_NAME",
										"SECOND_NAME",
										"LOGIN",
										"EMAIL",
										"PERSONAL_GENDER"
									);
									foreach ($arEvent["FIELDS_FORMATTED"]["CREATED_BY"]["TOOLTIP_FIELDS"] as $field => $value)
									{
										if (!in_array($field, $arFields2Cache))
										{
											unset($arEvent["FIELDS_FORMATTED"]["CREATED_BY"]["TOOLTIP_FIELDS"][$field]);
										}
									}
								}
							}

							if (
								isset($arEvent["FIELDS_FORMATTED"]["ENTITY"])
								&& is_array($arEvent["FIELDS_FORMATTED"]["ENTITY"])
							)
							{
								$arFields2Cache = array(
									"TOOLTIP_FIELDS",
									"FORMATTED",
									"URL"
								);
								foreach ($arEvent["FIELDS_FORMATTED"]["ENTITY"] as $field => $value)
								{
									if (!in_array($field, $arFields2Cache))
									{
										unset($arEvent["FIELDS_FORMATTED"]["ENTITY"][$field]);
									}
								}

								if (
									isset($arEvent["FIELDS_FORMATTED"]["ENTITY"]["TOOLTIP_FIELDS"])
									&& is_array($arEvent["FIELDS_FORMATTED"]["ENTITY"]["TOOLTIP_FIELDS"])
								)
								{
									$arFields2Cache = array(
										"ID",
										"PATH_TO_SONET_USER_PROFILE",
										"NAME",
										"LAST_NAME",
										"SECOND_NAME",
										"LOGIN",
										"EMAIL",
										"PERSONAL_GENDER"
									);
									foreach ($arEvent["FIELDS_FORMATTED"]["ENTITY"]["TOOLTIP_FIELDS"] as $field => $value)
									{
										if (!in_array($field, $arFields2Cache))
										{
											unset($arEvent["FIELDS_FORMATTED"]["ENTITY"]["TOOLTIP_FIELDS"][$field]);
										}
									}
								}
							}

							$arEvent["FIELDS_FORMATTED"]["EVENT_FORMATTED"]["UF"] = $arEvent["UF"];

							$arEvent["FIELDS_FORMATTED"]["TAGS"] = array();
							$res = \Bitrix\Socialnetwork\LogTagTable::getList(array(
								'filter' => array(
									'LOG_ID' => $logId,
								),
								'select' => array('NAME')
							));

							while($logTagFields = $res->fetch())
							{
								$arEvent["FIELDS_FORMATTED"]["TAGS"][] = array(
									'NAME' => $logTagFields['NAME'],
									'URL' => \CComponentEngine::makePathFromTemplate($arParams["PATH_TO_LOG_TAG"], array("tag" => urlencode($logTagFields["NAME"])))
								);
							}
						}
					}
				}

				if (is_array($arEvent["FIELDS_FORMATTED"]))
				{
					$dateFormated = FormatDate(
						$DB->DateFormatToPHP(FORMAT_DATE),
						MakeTimeStamp
						(
							isset($arEvent["FIELDS_FORMATTED"]["EVENT_FORMATTED"])
							&& isset($arEvent["FIELDS_FORMATTED"]["EVENT_FORMATTED"]["LOG_DATE_FORMAT"])
								? $arEvent["FIELDS_FORMATTED"]["EVENT_FORMATTED"]["LOG_DATE_FORMAT"]
								: (
							array_key_exists("LOG_DATE_FORMAT", $arEvent)
								? $arEvent["LOG_DATE_FORMAT"]
								: $arEvent["LOG_DATE"]
							)
						)
					);

					$timeFormated = FormatDateFromDB(
						(
						isset($arEvent["FIELDS_FORMATTED"]["EVENT_FORMATTED"])
						&& isset($arEvent["FIELDS_FORMATTED"]["EVENT_FORMATTED"]["LOG_DATE_FORMAT"])
							? $arEvent["FIELDS_FORMATTED"]["EVENT_FORMATTED"]["LOG_DATE_FORMAT"]
							: (
						array_key_exists("LOG_DATE_FORMAT", $arEvent)
							? $arEvent["LOG_DATE_FORMAT"]
							: $arEvent["LOG_DATE"]
						)
						),
						(
						mb_stripos($arParams["DATE_TIME_FORMAT"], 'a')
						|| (
							$arParams["DATE_TIME_FORMAT"] == 'FULL'
							&& IsAmPmMode()
						) !== false
							? (mb_strpos(FORMAT_DATETIME, 'TT') !== false ? 'H:MI TT' : 'H:MI T')
							: 'HH:MI'
						)
					);
					$dateTimeFormated = FormatDate(
						(
						!empty($arParams["DATE_TIME_FORMAT"])
							? ($arParams["DATE_TIME_FORMAT"] == "FULL"
							? $DB->DateFormatToPHP(str_replace(":SS", "", FORMAT_DATETIME))
							: $arParams["DATE_TIME_FORMAT"]
						)
							: $DB->DateFormatToPHP(FORMAT_DATETIME)
						),
						MakeTimeStamp(
							isset($arEvent["FIELDS_FORMATTED"]["EVENT_FORMATTED"])
							&& isset($arEvent["FIELDS_FORMATTED"]["EVENT_FORMATTED"]["LOG_DATE_FORMAT"])
								? $arEvent["FIELDS_FORMATTED"]["EVENT_FORMATTED"]["LOG_DATE_FORMAT"]
								: (
							array_key_exists("LOG_DATE_FORMAT", $arEvent)
								? $arEvent["LOG_DATE_FORMAT"]
								: $arEvent["LOG_DATE"]
							)
						)
					);

					if (strcasecmp(LANGUAGE_ID, 'EN') !== 0 && strcasecmp(LANGUAGE_ID, 'DE') !== 0)
					{
						$dateTimeFormated = mb_strtolower($dateTimeFormated);
						$dateFormated = mb_strtolower($dateFormated);
						$timeFormated =  mb_strtolower($timeFormated);
					}
					// strip current year
					if (!empty($arParams['DATE_TIME_FORMAT']) && ($arParams['DATE_TIME_FORMAT'] == 'j F Y G:i' || $arParams['DATE_TIME_FORMAT'] == 'j F Y g:i a'))
					{
						$dateTimeFormated = ltrim($dateTimeFormated, '0');
						$curYear = date('Y');
						$dateTimeFormated = str_replace(array('-'.$curYear, '/'.$curYear, ' '.$curYear, '.'.$curYear), '', $dateTimeFormated);
					}

					$arEvent["MESSAGE_FORMAT"] = htmlspecialcharsback($arEvent["MESSAGE"]);
					if ($arEvent["CALLBACK_FUNC"] <> '')
					{
						if ($arEvent["MODULE_ID"] <> '')
							CModule::IncludeModule($arEvent["MODULE_ID"]);

						$arEvent["MESSAGE_FORMAT"] = call_user_func($arEvent["CALLBACK_FUNC"], $arEvent);
					}

					$arEvent["FIELDS_FORMATTED"]["LOG_TIME_FORMAT"] = $timeFormated;
					$arEvent["FIELDS_FORMATTED"]["LOG_UPDATE_TS"] = MakeTimeStamp($arEvent["LOG_UPDATE"]);

					$arEvent["FIELDS_FORMATTED"]["LOG_DATE_TS"] = MakeTimeStamp($arEvent["LOG_DATE"]);
					$arEvent["FIELDS_FORMATTED"]["LOG_DATE_DAY"] = ConvertTimeStamp(MakeTimeStamp($arEvent["LOG_DATE"]), "SHORT");
					$arEvent["FIELDS_FORMATTED"]["LOG_UPDATE_DAY"] = ConvertTimeStamp(MakeTimeStamp($arEvent["LOG_UPDATE"]), "SHORT");
					$arEvent["FIELDS_FORMATTED"]["COMMENTS_COUNT"] = $arEvent["COMMENTS_COUNT"];
					$arEvent["FIELDS_FORMATTED"]["TMP_ID"] = $arEvent["TMP_ID"];

					$arEvent["FIELDS_FORMATTED"]["DATETIME_FORMATTED"] = $dateTimeFormated;

					$arCommentEvent = CSocNetLogTools::FindLogCommentEventByLogEventID($arEvent["EVENT_ID"]);
					if (
						!array_key_exists("HAS_COMMENTS", $arEvent["FIELDS_FORMATTED"])
						|| $arEvent["FIELDS_FORMATTED"]["HAS_COMMENTS"] != "N"
					)
					{
						$arEvent["FIELDS_FORMATTED"]["HAS_COMMENTS"] = (
							$arCommentEvent
							&& (
								!array_key_exists('ENABLE_COMMENTS', $arEvent)
								|| $arEvent['ENABLE_COMMENTS'] !== 'N'
							)
								? 'Y'
								: 'N'
						);
					}
				}

				$arEvent['FIELDS_FORMATTED']['closedWorkgroupsOnly'] = false;

				if (\Bitrix\Main\Config\Option::get('socialnetwork', 'work_with_closed_groups', 'N') !== 'Y')
				{
					$groupIdList = [];
					$res = \Bitrix\Socialnetwork\LogRightTable::getList([
						'filter' => [
							'=LOG_ID' => $logId,
						],
						'select' => [ 'GROUP_CODE' ],
					]);
					while ($logRightsFields = $res->fetch())
					{
						if (!preg_match('/^SG(\d+)/', $logRightsFields['GROUP_CODE'], $matches))
						{
							continue;
						}
						$groupIdList[] = (int)$matches[1];
					}
					if (!empty($groupIdList))
					{
						$arEvent['FIELDS_FORMATTED']['closedWorkgroupsOnly'] = true;

						$res = \Bitrix\Socialnetwork\WorkgroupTable::getList([
							'filter' => [
								'ID' => $groupIdList,
								'=CLOSED' => 'N',
							],
							'select' => [ 'ID' ]
						]);
						if ($res->fetch())
						{
							$arEvent['FIELDS_FORMATTED']['closedWorkgroupsOnly'] = false;
						}
					}
				}
			}

			$arCacheData = [
				'FIELDS_FORMATTED' => $arEvent['FIELDS_FORMATTED'],
			];
			$cache->EndDataCache($arCacheData);
			if(defined("BX_COMP_MANAGED_CACHE"))
			{
				$CACHE_MANAGER->EndTagCache();
			}
		}

		if (!is_array($arEvent["FIELDS_FORMATTED"]))
		{
			return false;
		}

		$feature = CSocNetLogTools::FindFeatureByEventID($arEvent["FIELDS_FORMATTED"]["EVENT"]["EVENT_ID"]);

		if (
			$feature
			&& (
				!array_key_exists($feature, $arSocNetFeaturesSettings)
				|| (
					array_key_exists("allowed", $arSocNetFeaturesSettings[$feature])
					&& is_array($arSocNetFeaturesSettings[$feature]["allowed"])
					&& !in_array($arEvent["FIELDS_FORMATTED"]["EVENT"]["ENTITY_TYPE"], $arSocNetFeaturesSettings[$feature]["allowed"])
				)
			)
		)
		{
			return false;
		}

		if (!array_key_exists("COMMENTS_PARAMS", $arEvent["FIELDS_FORMATTED"]))
		{
			$arEvent["FIELDS_FORMATTED"]["COMMENTS_PARAMS"] = \Bitrix\Socialnetwork\ComponentHelper::getLFCommentsParams([
				"ID" => $arEvent["FIELDS_FORMATTED"]["EVENT"]["ID"],
				"EVENT_ID" => $arEvent["FIELDS_FORMATTED"]["EVENT"]["EVENT_ID"],
				"ENTITY_TYPE" => $arEvent["FIELDS_FORMATTED"]["EVENT"]["ENTITY_TYPE"],
				"ENTITY_ID" => $arEvent["FIELDS_FORMATTED"]["EVENT"]["ENTITY_ID"],
				"SOURCE_ID" => $arEvent["FIELDS_FORMATTED"]["EVENT"]["SOURCE_ID"],
				"PARAMS" => $arEvent["FIELDS_FORMATTED"]["EVENT"]["PARAMS"]
			]);
		}

		foreach (GetModuleEvents("socialnetwork", "OnSonetLogEntryMenuCreate", true) as $arModuleEvent) // add menu items
		{
			if (!array_key_exists("FIELDS_FORMATTED", $arEvent))
			{
				$arEvent["FIELDS_FORMATTED"] = array();
			}

			if (!array_key_exists("MENU", $arEvent["FIELDS_FORMATTED"]))
			{
				$arEvent["FIELDS_FORMATTED"]["MENU"] = array();
			}

			$arMenuItems = ExecuteModuleEventEx($arModuleEvent, array($arEvent));
			if (!empty($arMenuItems))
			{
				$arEvent["FIELDS_FORMATTED"]["MENU"] = array_merge($arEvent["FIELDS_FORMATTED"]["MENU"], $arMenuItems);
			}
		}

		if (is_array($arCurrentUserSubscribe))
		{
			$arEvent["FIELDS_FORMATTED"]["TRANSPORT"] = __SLEGetTransport($arEvent, $arCurrentUserSubscribe);
		}

		$arCommentEvent = CSocNetLogTools::FindLogCommentEventByLogEventID($arEvent["FIELDS_FORMATTED"]["EVENT"]["EVENT_ID"]);

		if (!$USER->IsAuthorized())
		{
			$arEvent["FIELDS_FORMATTED"]["CAN_ADD_COMMENTS"] = "N";
		}
		elseif (
			$arCommentEvent
			&& array_key_exists("OPERATION_ADD", $arCommentEvent)
			&& $arCommentEvent["OPERATION_ADD"] == "log_rights"
		)
		{
			$arEvent["FIELDS_FORMATTED"]["CAN_ADD_COMMENTS"] = (CSocNetLogRights::CheckForUser($arEvent["FIELDS_FORMATTED"]["EVENT"]["ID"], $USER->GetID()) ? "Y" : "N");
		}
		else
		{
			$array_key = $arEvent["FIELDS_FORMATTED"]["EVENT"]["ENTITY_TYPE"]."_".$arEvent["FIELDS_FORMATTED"]["EVENT"]["ENTITY_ID"]."_".$arEvent["FIELDS_FORMATTED"]["EVENT"]["EVENT_ID"];
			if (array_key_exists($array_key, LogList::$canCurrentUserAddComments))
			{
				$arEvent["FIELDS_FORMATTED"]["CAN_ADD_COMMENTS"] = (LogList::$canCurrentUserAddComments[$array_key] == "Y" && $arEvent["FIELDS_FORMATTED"]["HAS_COMMENTS"] == "Y" ? "Y" : "N");
			}
			else
			{
				if (
					$feature
					&& $arCommentEvent
					&& array_key_exists("OPERATION_ADD", $arCommentEvent)
					&& $arCommentEvent["OPERATION_ADD"] <> ''
				)
				{
					LogList::$canCurrentUserAddComments[$array_key] = (
						CSocNetFeaturesPerms::CanPerformOperation(
								$USER->GetID(),
								$arEvent["FIELDS_FORMATTED"]["EVENT"]["ENTITY_TYPE"],
								$arEvent["FIELDS_FORMATTED"]["EVENT"]["ENTITY_ID"],
								($feature == "microblog" ? "blog" : $feature),
								$arCommentEvent["OPERATION_ADD"],
								$bCurrentUserIsAdmin
						)
							? "Y"
							: "N"
					);
				}
				else
				{
					LogList::$canCurrentUserAddComments[$array_key] = "Y";
				}

				$arEvent["FIELDS_FORMATTED"]["CAN_ADD_COMMENTS"] = (
					LogList::$canCurrentUserAddComments[$array_key] == "Y"
					&& $arEvent["FIELDS_FORMATTED"]["HAS_COMMENTS"] == "Y"
						? "Y"
						: "N"
				);
			}
		}

		if (
			$arEvent['FIELDS_FORMATTED']['CAN_ADD_COMMENTS'] === 'Y'
			&& (
				isset($arEvent['FIELDS_FORMATTED']['closedWorkgroupsOnly'])
				&& $arEvent['FIELDS_FORMATTED']['closedWorkgroupsOnly']
			)
		)
		{
			$arEvent['FIELDS_FORMATTED']['CAN_ADD_COMMENTS'] = 'N';
		}

		$arEvent["FIELDS_FORMATTED"]["FAVORITES"] = $arParams["EVENT"]["FAVORITES"] ?? null;
		$arEvent["FIELDS_FORMATTED"]["PINNED"] = $arParams["EVENT"]["PINNED"];

		if ($arParams['USE_FOLLOW'] === 'Y')
		{
			$arEvent["FIELDS_FORMATTED"]["EVENT"]["FOLLOW"] = $arParams["EVENT"]["FOLLOW"] ?? null;
			$arEvent["FIELDS_FORMATTED"]["EVENT"]["DATE_FOLLOW_X1"] = ($arParams["EVENT"]["DATE_FOLLOW_X1"] ?? '');
			$arEvent["FIELDS_FORMATTED"]["EVENT"]["DATE_FOLLOW"] = $arParams["EVENT"]["DATE_FOLLOW"] ?? null;
		}

		if (
			($arParams['CHECK_PERMISSIONS_DEST'] ?? null) === 'N'
			&& !$bCurrentUserIsAdmin
			&& is_object($GLOBALS["USER"])
			&& is_array($arEvent["FIELDS_FORMATTED"]["EVENT_FORMATTED"])
			&& (
				(
					array_key_exists("DESTINATION", $arEvent["FIELDS_FORMATTED"]["EVENT_FORMATTED"])
					&& is_array($arEvent["FIELDS_FORMATTED"]["EVENT_FORMATTED"]["DESTINATION"])
				)
				|| (
					array_key_exists("DESTINATION_CODE", $arEvent["FIELDS_FORMATTED"]["EVENT_FORMATTED"])
					&& is_array($arEvent["FIELDS_FORMATTED"]["EVENT_FORMATTED"]["DESTINATION_CODE"])
				)
			)
		)
		{
			$arEvent['FIELDS_FORMATTED']['EVENT_FORMATTED']['DESTINATION_HIDDEN'] = 0;

			$arGroupID = CSocNetLogTools::GetAvailableGroups();

			if (
				array_key_exists("DESTINATION", $arEvent["FIELDS_FORMATTED"]["EVENT_FORMATTED"])
				&& is_array($arEvent["FIELDS_FORMATTED"]["EVENT_FORMATTED"]["DESTINATION"])
			)
			{
				foreach($arEvent["FIELDS_FORMATTED"]["EVENT_FORMATTED"]["DESTINATION"] as $key => $arDestination)
				{
					if (
						isset($arDestination['TYPE'], $arDestination['ID'])
						&& (
							(
								$arDestination['TYPE'] === "SG"
								&& !in_array((int)$arDestination['ID'], $arGroupID)
							)
							|| (
								in_array($arDestination["TYPE"], array("CRMCOMPANY", "CRMLEAD", "CRMCONTACT", "CRMDEAL"))
								&& (
									!isset($arDestination["CRM_USER_ID"])
									|| $arDestination["CRM_USER_ID"] != $USER->GetId()
								)
								&& (
									!CModule::IncludeModule("crm")
									|| (
										in_array($arDestination["TYPE"], array("CRMCOMPANY", "CRMLEAD", "CRMCONTACT"))
										&& !\Bitrix\Crm\Service\Container::getInstance()->getUserPermissions()->item()->canRead(
											CCrmLiveFeedEntity::ResolveEntityTypeID($arDestination["TYPE"]),
											$arDestination["ID"]
										)
									)
									|| (
										$arDestination['TYPE'] === 'CRMDEAL'
										&& !CCrmDeal::CheckReadPermission($arDestination["ID"])
									)
								)
							)
							|| (
								in_array($arDestination["TYPE"], array("DR", "D"))
								&& $isExtranetUser === 'Y'
							)
							|| (
								$arDestination['TYPE'] === 'U'
								&& $arDestination["ID"] != $USER->GetId()
								&& isset($arUserIdVisible)
								&& is_array($arUserIdVisible)
								&& !in_array((int)$arDestination['ID'], $arUserIdVisible)
							)
							|| (
								$arDestination['TYPE'] === 'U'
								&& $arDestination["ID"] != $USER->GetId()
								&& isset($arDestination["IS_EXTRANET"])
								&& $arDestination['IS_EXTRANET'] === 'Y'
								&& isset($arAvailableExtranetUserID)
								&& is_array($arAvailableExtranetUserID)
								&& !in_array((int)$arDestination['ID'], $arAvailableExtranetUserID)
							)
						)
					)
					{
						unset($arEvent["FIELDS_FORMATTED"]["EVENT_FORMATTED"]["DESTINATION"][$key]);
						$arEvent["FIELDS_FORMATTED"]["EVENT_FORMATTED"]["DESTINATION_HIDDEN"]++;
					}
					elseif (
						isset($arParams["PUBLIC_MODE"])
						&& $arParams['PUBLIC_MODE'] === 'Y'
						&& !empty($arDestination["URL"])
					)
					{
						$arEvent["FIELDS_FORMATTED"]["EVENT_FORMATTED"]["DESTINATION"][$key]["URL"] = "";
					}
				}

				if (
					intval($arParams["DESTINATION_LIMIT_SHOW"]) > 0
					&& count($arEvent["FIELDS_FORMATTED"]["EVENT_FORMATTED"]["DESTINATION"]) > $arParams["DESTINATION_LIMIT_SHOW"]
				)
				{
					$arEvent["FIELDS_FORMATTED"]["EVENT_FORMATTED"]["DESTINATION_MORE"] = count($arEvent["FIELDS_FORMATTED"]["EVENT_FORMATTED"]["DESTINATION"]) - $arParams["DESTINATION_LIMIT_SHOW"];
					$arEvent["FIELDS_FORMATTED"]["EVENT_FORMATTED"]["DESTINATION"] = array_slice($arEvent["FIELDS_FORMATTED"]["EVENT_FORMATTED"]["DESTINATION"], 0, $arParams["DESTINATION_LIMIT_SHOW"]);
				}
			}
			elseif (
				array_key_exists("DESTINATION_CODE", $arEvent["FIELDS_FORMATTED"]["EVENT_FORMATTED"])
				&& is_array($arEvent["FIELDS_FORMATTED"]["EVENT_FORMATTED"]["DESTINATION_CODE"])
			)
			{
				foreach($arEvent["FIELDS_FORMATTED"]["EVENT_FORMATTED"]["DESTINATION_CODE"] as $key => $right_tmp)
				{
					if (
						preg_match('/^SG(\d+)$/', $right_tmp, $matches)
						&& !in_array(intval($matches[1]), $arGroupID)
					)
					{
						unset($arEvent["FIELDS_FORMATTED"]["EVENT_FORMATTED"]["DESTINATION_CODE"][$key]);
						$arEvent["FIELDS_FORMATTED"]["EVENT_FORMATTED"]["DESTINATION_HIDDEN"]++;
					}
				}
			}
		}

		if (
			$arParams["SHOW_RATING"] == "Y"
			&& $arEvent["FIELDS_FORMATTED"]["EVENT"]["RATING_TYPE_ID"] <> ''
			&& intval($arEvent["FIELDS_FORMATTED"]["EVENT"]["RATING_ENTITY_ID"]) > 0
		)
		{
			$arEvent["FIELDS_FORMATTED"]["RATING"] = CRatings::GetRatingVoteResult($arEvent["FIELDS_FORMATTED"]["EVENT"]["RATING_TYPE_ID"], $arEvent["FIELDS_FORMATTED"]["EVENT"]["RATING_ENTITY_ID"]);
		}

		if (
			in_array($arEvent["FIELDS_FORMATTED"]["EVENT"]["EVENT_ID"], array("tasks", "crm_activity_add"))
			&& CModule::IncludeModule('tasks')
		)
		{
			$url = CTaskNotifications::getNotificationPath(
				array('ID' => $USER->GetId()),
				$arEvent["FIELDS_FORMATTED"]["EVENT"]['SOURCE_ID'],
				false
			);
			$arEvent["FIELDS_FORMATTED"]["EVENT_FORMATTED"]["MESSAGE"] = preg_replace('/(<a href=")#USER_PERSONAL_TASK_URL#(">)/', '$1'.$url.'$2', $arEvent["FIELDS_FORMATTED"]["EVENT_FORMATTED"]["MESSAGE"]);
		}

		return $arEvent["FIELDS_FORMATTED"];
	}
}

?>

Youez - 2016 - github.com/yon3zu
LinuXploit