Your IP : 172.28.240.42


Current Path : /var/www/html/clients/e-nkama.ru/e-nkama_bitrix/bitrix/components/bitrix/socialnetwork.log/
Upload File :
Current File : /var/www/html/clients/e-nkama.ru/e-nkama_bitrix/bitrix/components/bitrix/socialnetwork.log/ajax.php

<?

define("NO_KEEP_STATISTIC", true);
define("BX_STATISTIC_BUFFER_USED", false);
define("NO_LANG_FILES", true);
define("NOT_CHECK_PERMISSIONS", true);
define("BX_PUBLIC_TOOLS", true);

$site_id = trim($_REQUEST["site"]);
define("SITE_ID", $site_id);

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;
	}
}

require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/bx_root.php");

$action = trim($_REQUEST["action"]);
$entity_type = trim($_REQUEST["et"]);
$entity_id = $_REQUEST["eid"];
$cb_id = $_REQUEST["cb_id"];
$event_id = trim($_REQUEST["evid"]);
if (array_key_exists("transport", $_REQUEST))
	$transport = trim($_REQUEST["transport"]);
if (array_key_exists("visible", $_REQUEST))
	$visible = trim($_REQUEST["visible"]);

$lng = trim($_REQUEST["lang"]);
if (!is_array($_REQUEST["ls"]))
	$ls = trim($_REQUEST["ls"]);
$ls_arr = $_REQUEST["ls_arr"];

require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_before.php");

$rsSite = CSite::GetByID($site_id);
if ($arSite = $rsSite->Fetch())
	define("LANGUAGE_ID", $arSite["LANGUAGE_ID"]);
else
	define("LANGUAGE_ID", "en");

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

__IncludeLang(dirname(__FILE__)."/lang/".$lng."/ajax.php");	

if(CModule::IncludeModule("compression"))
	CCompress::Disable2048Spaces();

if(CModule::IncludeModule("socialnetwork"))
{
	$bCurrentUserIsAdmin = CSocNetUser::IsCurrentUserModuleAdmin();

	// write and close session to prevent lock;
	session_write_close();

	$arData = array();

	if (!$GLOBALS["USER"]->IsAuthorized())
		$arData[0] = "*";
	elseif (!check_bitrix_sessid())
		$arData[0] = "*";
	elseif ($action == "get_data")
	{
		if
		(
			intval($entity_id) > 0
			&& array_key_exists($entity_type, $GLOBALS["arSocNetAllowedSubscribeEntityTypesDesc"])
			&& array_key_exists("CLASS_DESC_GET", $GLOBALS["arSocNetAllowedSubscribeEntityTypesDesc"][$entity_type])
			&& array_key_exists("METHOD_DESC_GET", $GLOBALS["arSocNetAllowedSubscribeEntityTypesDesc"][$entity_type])
		)
			$arEntityTmp = call_user_func(
				array(
					$GLOBALS["arSocNetAllowedSubscribeEntityTypesDesc"][$entity_type]["CLASS_DESC_GET"],
					$GLOBALS["arSocNetAllowedSubscribeEntityTypesDesc"][$entity_type]["METHOD_DESC_GET"]
				),
				$entity_id
			);
		else
			$arEntityTmp = array();

		if (intval($cb_id) > 0)
			$arCreatedByTmp = call_user_func(
				array(
					$GLOBALS["arSocNetAllowedSubscribeEntityTypesDesc"][SONET_SUBSCRIBE_ENTITY_USER]["CLASS_DESC_GET"],
					$GLOBALS["arSocNetAllowedSubscribeEntityTypesDesc"][SONET_SUBSCRIBE_ENTITY_USER]["METHOD_DESC_GET"]
				),
				$cb_id
			);
		else
			$arCreatedByTmp = array();

		$is_my = false;

		if (
			array_key_exists($entity_type, $GLOBALS["arSocNetAllowedSubscribeEntityTypesDesc"])
			&& array_key_exists("CLASS_MY_BY_ID", $GLOBALS["arSocNetAllowedSubscribeEntityTypesDesc"][$entity_type])
			&& array_key_exists("METHOD_MY_BY_ID", $GLOBALS["arSocNetAllowedSubscribeEntityTypesDesc"][$entity_type])
		)
			$is_my = call_user_func(
				array(
					$GLOBALS["arSocNetAllowedSubscribeEntityTypesDesc"][$entity_type]["CLASS_MY_BY_ID"],
					$GLOBALS["arSocNetAllowedSubscribeEntityTypesDesc"][$entity_type]["METHOD_MY_BY_ID"]
				),
				$entity_id
			);

		$arSubscribe = array();

		$arFilter = array(
			"USER_ID" 		=> $GLOBALS["USER"]->GetID(), 
			"ENTITY_TYPE" 	=> $entity_type,
			"ENTITY_ID" 	=> $entity_id,
			"ENTITY_CB" 	=> "N"
		);

		$dbResultTmp = CSocNetLogEvents::GetList(
				array(),
				$arFilter
			);

		while($arSubscribesTmp = $dbResultTmp->Fetch())
		{
			if ($arSubscribesTmp["EVENT_ID"] == $event_id)
				$arSubscribe["EVENT"] = array(
									"TRANSPORT" 			=> $arSubscribesTmp["TRANSPORT"],
									"VISIBLE" 				=> $arSubscribesTmp["VISIBLE"],
									"TRANSPORT_INHERITED"	=> false,
									"VISIBLE_INHERITED"		=> false
								);
			elseif ($arSubscribesTmp["EVENT_ID"] == 'all')
				$arSubscribe["ALL"] = array(
									"TRANSPORT" 			=> $arSubscribesTmp["TRANSPORT"],
									"VISIBLE" 				=> $arSubscribesTmp["VISIBLE"],
									"TRANSPORT_INHERITED"	=> false,
									"VISIBLE_INHERITED"		=> false
								);	
			else
				continue;
		}

		$arFilter = array(
			"USER_ID" 		=> $GLOBALS["USER"]->GetID(), 
			"ENTITY_TYPE" 	=> SONET_SUBSCRIBE_ENTITY_USER,
			"ENTITY_ID" 	=> $cb_id,
			"ENTITY_CB" 	=> "Y"
		);

		$dbResultTmp = CSocNetLogEvents::GetList(
				array(),
				$arFilter
			);

		while($arSubscribesTmp = $dbResultTmp->Fetch())
		{
			if ($arSubscribesTmp["EVENT_ID"] == $event_id)
				$arSubscribe["CB_EVENT"] = array(
					"TRANSPORT" => $arSubscribesTmp["TRANSPORT"],
					"VISIBLE" => $arSubscribesTmp["VISIBLE"],
					"TRANSPORT_INHERITED" => false,
					"VISIBLE_INHERITED" => false
				);
			elseif ($arSubscribesTmp["EVENT_ID"] == 'all')
					$arSubscribe["CB_ALL"] = array(
						"TRANSPORT" => $arSubscribesTmp["TRANSPORT"],
						"VISIBLE" => $arSubscribesTmp["VISIBLE"],
						"TRANSPORT_INHERITED" => false,
						"VISIBLE_INHERITED" => false
					);
			else
				continue;
		}

		$arFilter = array(
			"USER_ID" => $GLOBALS["USER"]->GetID(), 
			"ENTITY_TYPE" => $entity_type,
			"ENTITY_ID" => 0
		);

		$dbResultTmp = CSocNetLogEvents::GetList(
				array(),
				$arFilter
			);

		while($arSubscribesTmp = $dbResultTmp->Fetch())
		{
			if ($is_my && $arSubscribesTmp["ENTITY_MY"] == "Y")
			{
				if ($arSubscribesTmp["EVENT_ID"] == $event_id)
					$arSubscribe["COMMON_EVENT_MY"] = array(
								"TRANSPORT" 			=> $arSubscribesTmp["TRANSPORT"],
								"VISIBLE" 				=> $arSubscribesTmp["VISIBLE"],
								"TRANSPORT_INHERITED"	=> false,
								"VISIBLE_INHERITED"		=> false
							);
				elseif ($arSubscribesTmp["EVENT_ID"] == 'all')
					$arSubscribe["COMMON_ALL_MY"] = array(
								"TRANSPORT" 			=> $arSubscribesTmp["TRANSPORT"],
								"VISIBLE" 				=> $arSubscribesTmp["VISIBLE"],
								"TRANSPORT_INHERITED"	=> false,
								"VISIBLE_INHERITED"		=> false
							);
				else
					continue;
			}
			elseif ($arSubscribesTmp["ENTITY_MY"] == "N")
			{
				if ($arSubscribesTmp["EVENT_ID"] == $event_id)
					$arSubscribe["COMMON_EVENT"] = array(
								"TRANSPORT" 			=> $arSubscribesTmp["TRANSPORT"],
								"VISIBLE" 				=> $arSubscribesTmp["VISIBLE"],
								"TRANSPORT_INHERITED"	=> false,
								"VISIBLE_INHERITED"		=> false
							);
				elseif ($arSubscribesTmp["EVENT_ID"] == 'all')
					$arSubscribe["COMMON_ALL"] = array(
								"TRANSPORT" 			=> $arSubscribesTmp["TRANSPORT"],
								"VISIBLE" 				=> $arSubscribesTmp["VISIBLE"],
								"TRANSPORT_INHERITED"	=> false,
								"VISIBLE_INHERITED"		=> false
							);
				else
					continue;
			}
		}

		$arTmp = array("TRANSPORT", "VISIBLE");
		foreach ($arTmp as $strTmp)
		{
		
			if ($strTmp == "TRANSPORT")
				$value_default = "N";
			elseif ($strTmp == "VISIBLE")
				$value_default = "Y";

			if (
				!array_key_exists("EVENT", $arSubscribe)
				|| !array_key_exists($strTmp, $arSubscribe["EVENT"])
				|| $arSubscribe["EVENT"][$strTmp] == "I"
			)
			{
				if (
					array_key_exists("ALL", $arSubscribe)
					&& array_key_exists($strTmp, $arSubscribe["ALL"])
					&& $arSubscribe["ALL"][$strTmp] != "I"
				)
				{
					$arSubscribe["EVENT"][$strTmp] = $arSubscribe["ALL"][$strTmp];
					$arSubscribe["EVENT"][$strTmp."_INHERITED"] = true;
				}
				elseif (
					$is_my 
					&& array_key_exists("COMMON_EVENT_MY", $arSubscribe)
					&& array_key_exists($strTmp, $arSubscribe["COMMON_EVENT_MY"])
					&& $arSubscribe["COMMON_EVENT_MY"][$strTmp] != "I"
				)
				{
					$arSubscribe["EVENT"][$strTmp] = $arSubscribe["COMMON_EVENT_MY"][$strTmp];
					$arSubscribe["EVENT"][$strTmp."_INHERITED"] = true;
				}
				elseif (
					$is_my 
					&& array_key_exists("COMMON_ALL_MY", $arSubscribe)
					&& array_key_exists($strTmp, $arSubscribe["COMMON_ALL_MY"])
					&& $arSubscribe["COMMON_ALL_MY"][$strTmp] != "I"
				)
				{
					$arSubscribe["EVENT"][$strTmp] = $arSubscribe["COMMON_ALL_MY"][$strTmp];
					$arSubscribe["EVENT"][$strTmp."_INHERITED"] = true;
				}
				elseif (
					array_key_exists("COMMON_EVENT", $arSubscribe)
					&& array_key_exists($strTmp, $arSubscribe["COMMON_EVENT"])
					&& $arSubscribe["COMMON_EVENT"][$strTmp] != "I"
				)
				{
					$arSubscribe["EVENT"][$strTmp] = $arSubscribe["COMMON_EVENT"][$strTmp];
					$arSubscribe["EVENT"][$strTmp."_INHERITED"] = true;
				}
				elseif (
					array_key_exists("COMMON_ALL", $arSubscribe)
					&& array_key_exists($strTmp, $arSubscribe["COMMON_ALL"])
					&& $arSubscribe["COMMON_ALL"][$strTmp] != "I"
				)
				{
					$arSubscribe["EVENT"][$strTmp] = $arSubscribe["COMMON_ALL"][$strTmp];
					$arSubscribe["EVENT"][$strTmp."_INHERITED"] = true;
				}
				else
				{
					$arSubscribe["EVENT"][$strTmp] = $value_default;
					$arSubscribe["EVENT"][$strTmp."_INHERITED"] = true;
				}
			}
			
			if (
				!array_key_exists("ALL", $arSubscribe)
				|| !array_key_exists($strTmp, $arSubscribe["ALL"])
				|| $arSubscribe["ALL"][$strTmp] == "I"
			)
			{
				if (
					$is_my 
					&& array_key_exists("COMMON_ALL_MY", $arSubscribe)
					&& array_key_exists($strTmp, $arSubscribe["COMMON_ALL_MY"])
					&& $arSubscribe["COMMON_ALL_MY"][$strTmp] != "I"
				)
				{
					$arSubscribe["ALL"][$strTmp] = $arSubscribe["COMMON_ALL_MY"][$strTmp];
					$arSubscribe["ALL"][$strTmp."_INHERITED"] = true;
				}
				elseif (
					array_key_exists("COMMON_ALL", $arSubscribe)
					&& array_key_exists($strTmp, $arSubscribe["COMMON_ALL"])
					&& $arSubscribe["COMMON_ALL"][$strTmp] != "I"
				)
				{
					$arSubscribe["ALL"][$strTmp] = $arSubscribe["COMMON_ALL"][$strTmp];
					$arSubscribe["ALL"][$strTmp."_INHERITED"] = true;
				}
				else
				{
					$arSubscribe["ALL"][$strTmp] = $value_default;
					$arSubscribe["ALL"][$strTmp."_INHERITED"] = true;
				}
			}

			if (
				$is_my 
				&& 
				(
					!array_key_exists("COMMON_EVENT_MY", $arSubscribe)
					|| !array_key_exists($strTmp, $arSubscribe["COMMON_EVENT_MY"])
					|| $arSubscribe["COMMON_EVENT_MY"][$strTmp] == "I"
				)
			)
			{
				if (
					array_key_exists("COMMON_ALL_MY", $arSubscribe)
					&& array_key_exists($strTmp, $arSubscribe["COMMON_ALL_MY"])
					&& $arSubscribe["COMMON_ALL_MY"][$strTmp] != "I"
				)
				{
					$arSubscribe["COMMON_EVENT_MY"][$strTmp] = $arSubscribe["COMMON_ALL_MY"][$strTmp];
					$arSubscribe["COMMON_EVENT_MY"][$strTmp."_INHERITED"] = true;
				}
				elseif (
					array_key_exists("COMMON_EVENT", $arSubscribe)
					&& array_key_exists($strTmp, $arSubscribe["COMMON_EVENT"])
					&& $arSubscribe["COMMON_EVENT"][$strTmp] != "I"
				)
				{
					$arSubscribe["COMMON_EVENT_MY"][$strTmp] = $arSubscribe["COMMON_EVENT"][$strTmp];
					$arSubscribe["COMMON_EVENT_MY"][$strTmp."_INHERITED"] = true;
				}
				elseif (
					array_key_exists("COMMON_ALL", $arSubscribe)
					&& array_key_exists($strTmp, $arSubscribe["COMMON_ALL"])
					&& $arSubscribe["COMMON_ALL"][$strTmp] != "I"
				)
				{
					$arSubscribe["COMMON_EVENT_MY"][$strTmp] = $arSubscribe["COMMON_ALL"][$strTmp];
					$arSubscribe["COMMON_EVENT_MY"][$strTmp."_INHERITED"] = true;
				}
				else
				{
					$arSubscribe["COMMON_EVENT_MY"][$strTmp] = $value_default;
					$arSubscribe["COMMON_EVENT_MY"][$strTmp."_INHERITED"] = true;
				}
			}
			
			if (
				$is_my 
				&& 
				(
					!array_key_exists("COMMON_ALL_MY", $arSubscribe)
					|| !array_key_exists($strTmp, $arSubscribe["COMMON_ALL_MY"])
					|| $arSubscribe["COMMON_ALL_MY"][$strTmp] == "I"
				)
			)
			{
				if (
					array_key_exists("COMMON_ALL", $arSubscribe)
					&& array_key_exists($strTmp, $arSubscribe["COMMON_ALL"])
					&& $arSubscribe["COMMON_ALL"][$strTmp] != "I"
				)
				{
					$arSubscribe["COMMON_ALL_MY"][$strTmp] = $arSubscribe["COMMON_ALL"][$strTmp];
					$arSubscribe["COMMON_ALL_MY"][$strTmp."_INHERITED"] = true;
				}
				else
				{
					$arSubscribe["COMMON_ALL_MY"][$strTmp] = $value_default;
					$arSubscribe["COMMON_ALL_MY"][$strTmp."_INHERITED"] = true;
				}
			}		
			
			if (
				!array_key_exists("COMMON_EVENT", $arSubscribe)
				|| !array_key_exists($strTmp, $arSubscribe["COMMON_EVENT"])
				|| $arSubscribe["COMMON_EVENT"][$strTmp] == "I"
			)
			{
				if (
					array_key_exists("COMMON_ALL", $arSubscribe)
					&& array_key_exists($strTmp, $arSubscribe["COMMON_ALL"])
					&& $arSubscribe["COMMON_ALL"][$strTmp] != "I"
				)
				{
					$arSubscribe["COMMON_EVENT"][$strTmp] = $arSubscribe["COMMON_ALL"][$strTmp];
					$arSubscribe["COMMON_EVENT"][$strTmp."_INHERITED"] = true;
				}
				else
				{
					$arSubscribe["COMMON_EVENT"][$strTmp] = $value_default;
					$arSubscribe["COMMON_EVENT"][$strTmp."_INHERITED"] = true;
				}
			}
			
			if (
				!array_key_exists("COMMON_ALL", $arSubscribe)
				|| !array_key_exists($strTmp, $arSubscribe["COMMON_ALL"])
				|| $arSubscribe["COMMON_ALL"][$strTmp] == "I"
			)
			{
				$arSubscribe["COMMON_ALL"][$strTmp] = $value_default;
				$arSubscribe["COMMON_ALL"][$strTmp."_INHERITED"] = true;
			}
		
		}
		
		$fullset_event_id = CSocNetLogTools::FindFullSetEventIDByEventID($event_id);
		if ($fullset_event_id)
			$arEvent = CSocNetLogTools::FindLogEventByID($fullset_event_id, $entity_type);
		else
			$arEvent = CSocNetLogTools::FindLogEventByID($event_id, $entity_type);

		if (!$arEvent)
		{
			$arEvent = CSocNetLogTools::FindLogEventByCommentID($event_id);
			if ($arEvent)
			{
				$fullset_event_id = CSocNetLogTools::FindFullSetEventIDByEventID($arEvent["EVENT_ID"]);
				if ($fullset_event_id)
					$arEvent = CSocNetLogTools::FindLogEventByID($fullset_event_id, $entity_type);
			}
		}

		if ($arEvent)
		{
			$arSubscribe["EVENT"]["TITLE"] = $arEvent["ENTITIES"][$entity_type]["TITLE_SETTINGS"];

			if (
				array_key_exists("NAME_FORMATTED", $arEntityTmp)
				&& strlen($arEntityTmp["NAME_FORMATTED"]) > 0
			)
			{
				$arSubscribe["EVENT"]["TITLE_1"] = str_replace(
						array("#TITLE#"),
						array(array_key_exists("~NAME_FORMATTED", $arEntityTmp) ? $arEntityTmp["~NAME_FORMATTED"] : $arEntityTmp["NAME_FORMATTED"]),
						$arEvent["ENTITIES"][$entity_type]["TITLE_SETTINGS_1"]
					);
				$arSubscribe["EVENT"]["TITLE_2"] = str_replace(
						array("#TITLE#"),
						array(array_key_exists("~NAME_FORMATTED", $arEntityTmp) ? $arEntityTmp["~NAME_FORMATTED"] : $arEntityTmp["NAME_FORMATTED"]),
						$arEvent["ENTITIES"][$entity_type]["TITLE_SETTINGS_2"]
					);
			}
		}

		if (
			array_key_exists($entity_type, $GLOBALS["arSocNetAllowedSubscribeEntityTypesDesc"])
			&& array_key_exists("TITLE_SETTINGS_ALL", $GLOBALS["arSocNetAllowedSubscribeEntityTypesDesc"][$entity_type])
			&& strlen($GLOBALS["arSocNetAllowedSubscribeEntityTypesDesc"][$entity_type]["TITLE_SETTINGS_ALL"]) > 0
		)
			$arSubscribe["ALL"]["TITLE"] = $GLOBALS["arSocNetAllowedSubscribeEntityTypesDesc"][$entity_type]["TITLE_SETTINGS_ALL"];

		if (
			array_key_exists($entity_type, $GLOBALS["arSocNetAllowedSubscribeEntityTypesDesc"])
			&& array_key_exists("TITLE_SETTINGS_ALL_1", $GLOBALS["arSocNetAllowedSubscribeEntityTypesDesc"][$entity_type])
			&& strlen($GLOBALS["arSocNetAllowedSubscribeEntityTypesDesc"][$entity_type]["TITLE_SETTINGS_ALL_1"]) > 0
			&& array_key_exists("NAME_FORMATTED", $arEntityTmp)
			&& strlen($arEntityTmp["NAME_FORMATTED"]) > 0
		)
		{
			$arSubscribe["ALL"]["TITLE_1"] = str_replace(
					array("#TITLE#"),
					array(array_key_exists("~NAME_FORMATTED", $arEntityTmp) ? $arEntityTmp["~NAME_FORMATTED"] : $arEntityTmp["NAME_FORMATTED"]),
					$GLOBALS["arSocNetAllowedSubscribeEntityTypesDesc"][$entity_type]["TITLE_SETTINGS_ALL_1"]
				);
			$arSubscribe["ALL"]["TITLE_2"] = str_replace(
					array("#TITLE#"),
					array(array_key_exists("~NAME_FORMATTED", $arEntityTmp) ? $arEntityTmp["~NAME_FORMATTED"] : $arEntityTmp["NAME_FORMATTED"]),
					$GLOBALS["arSocNetAllowedSubscribeEntityTypesDesc"][$entity_type]["TITLE_SETTINGS_ALL_2"]
				);
		}

		if (CSocNetLogTools::HasLogEventCreatedBy($event_id))
		{
			foreach ($arTmp as $strTmp)
			{
				if ($strTmp == "TRANSPORT")
					$value_default = "N";
				elseif ($strTmp == "VISIBLE")
					$value_default = "Y";
				
				if (
					!array_key_exists("CB_EVENT", $arSubscribe)
					|| !array_key_exists($strTmp, $arSubscribe["CB_EVENT"])
					|| $arSubscribe["CB_EVENT"][$strTmp] == "I"
				)
				{
					if (
						array_key_exists("CB_ALL", $arSubscribe)
						&& array_key_exists($strTmp, $arSubscribe["CB_ALL"])
						&& $arSubscribe["CB_ALL"][$strTmp] != "I"
					)
					{
						$arSubscribe["CB_EVENT"][$strTmp] = $arSubscribe["CB_ALL"][$strTmp];
						$arSubscribe["CB_EVENT"][$strTmp."_INHERITED"] = true;
					}
					else
					{
						$arSubscribe["CB_EVENT"][$strTmp] = $value_default;
						$arSubscribe["CB_EVENT"][$strTmp."_INHERITED"] = true;
					}
				}
				
				if (
					!array_key_exists("CB_ALL", $arSubscribe)
					|| !array_key_exists($strTmp, $arSubscribe["CB_ALL"])
					|| $arSubscribe["CB_ALL"][$strTmp] == "I"				
				)
				{
					$arSubscribe["CB_ALL"][$strTmp] = $value_default;
					$arSubscribe["CB_ALL"][$strTmp."_INHERITED"] = true;
				}
			}
			
			$arSubscribe["CB_ALL"]["TITLE"]	= GetMessage("SUBSCRIBE_CB_ALL");

			if (
				array_key_exists("NAME_FORMATTED", $arCreatedByTmp)
				&& strlen($arCreatedByTmp["NAME_FORMATTED"]) > 0
			)
			{
				$arSubscribe["CB_ALL"]["TITLE_1"] = str_replace(
						array("#TITLE#"),
						array(array_key_exists("~NAME_FORMATTED", $arCreatedByTmp) ? $arCreatedByTmp["~NAME_FORMATTED"] : $arCreatedByTmp["NAME_FORMATTED"]),
						GetMessage("SUBSCRIBE_CB_ALL_1")
					);
					
				$arSubscribe["CB_ALL"]["TITLE_2"] = str_replace(
						array("#TITLE#"),
						array(array_key_exists("~NAME_FORMATTED", $arCreatedByTmp) ? $arCreatedByTmp["~NAME_FORMATTED"] : $arCreatedByTmp["NAME_FORMATTED"]),
						GetMessage("SUBSCRIBE_CB_ALL_2")
					);					
			}
		}
		else
		{
			if (array_key_exists("CB_EVENT", $arSubscribe))
				unset($arSubscribe["CB_EVENT"]);
			if (array_key_exists("CB_ALL", $arSubscribe))
				unset($arSubscribe["CB_ALL"]);
		}

		$arSubscribe["SITE_ID"] = (
			array_key_exists($entity_type, $GLOBALS["arSocNetAllowedSubscribeEntityTypesDesc"])
			&& array_key_exists("HAS_SITE_ID", $GLOBALS["arSocNetAllowedSubscribeEntityTypesDesc"][$entity_type])
			&& $GLOBALS["arSocNetAllowedSubscribeEntityTypesDesc"][$entity_type]["HAS_SITE_ID"] == "Y"
			&& strlen($site_id) > 0 
			? 
				$site_id 
			: 
				false
		);
								
		$arResult["Subscription"] = $arSubscribe;

		$arResult["Transport"] = array(
			0 => array("Key" => "N", "Value" => GetMessage("SUBSCRIBE_TRANSPORT_NONE")),
			1 => array("Key" => "M", "Value" => GetMessage("SUBSCRIBE_TRANSPORT_MAIL")),
//			3 => array("Key" => "D", "Value" => GetMessage("SUBSCRIBE_TRANSPORT_DIGEST")),
//			4 => array("Key" => "E", "Value" => GetMessage("SUBSCRIBE_TRANSPORT_DIGEST_WEEK"))
		);
		
		if (CBXFeatures::IsFeatureEnabled("WebMessenger"))
			$arResult["Transport"][] = array("Key" => "X", "Value" => GetMessage("SUBSCRIBE_TRANSPORT_XMPP"));
		
		$arResult["Visible"] = array(
			0 => array("Key" => "Y", "Value" => GetMessage("SUBSCRIBE_VISIBLE_Y")),
			1 => array("Key" => "N", "Value" => GetMessage("SUBSCRIBE_VISIBLE_N")),
		);		

	}
	elseif ($action == "get_transport")
	{
		$arCurrentUserSubscribe = array(
				"TRANSPORT" => array()
			);

		$arFilter = array(
			"USER_ID" 		=> $GLOBALS["USER"]->GetID(), 
		);

		$dbResultTmp = CSocNetLogEvents::GetList(
				array(),
				$arFilter
			);

		while($arSubscribesTmp = $dbResultTmp->Fetch())
			if ($arSubscribesTmp["TRANSPORT"] != "I")
				$arCurrentUserSubscribe["TRANSPORT"][$arSubscribesTmp["ENTITY_TYPE"]."_".$arSubscribesTmp["ENTITY_ID"]."_".$arSubscribesTmp["EVENT_ID"]."_".$arSubscribesTmp["ENTITY_MY"]."_".$arSubscribesTmp["ENTITY_CB"]] = $arSubscribesTmp["TRANSPORT"];

		if (
			array_key_exists($entity_type, $GLOBALS["arSocNetAllowedSubscribeEntityTypesDesc"])
			&& array_key_exists("HAS_MY", $GLOBALS["arSocNetAllowedSubscribeEntityTypesDesc"][$entity_type])
			&& $GLOBALS["arSocNetAllowedSubscribeEntityTypesDesc"][$entity_type]["HAS_MY"] == "Y"
			&& array_key_exists("CLASS_MY", $GLOBALS["arSocNetAllowedSubscribeEntityTypesDesc"][$entity_type])
			&& array_key_exists("METHOD_MY", $GLOBALS["arSocNetAllowedSubscribeEntityTypesDesc"][$entity_type])
			&& strlen($GLOBALS["arSocNetAllowedSubscribeEntityTypesDesc"][$entity_type]["CLASS_MY"]) > 0
			&& strlen($GLOBALS["arSocNetAllowedSubscribeEntityTypesDesc"][$entity_type]["METHOD_MY"]) > 0
			&& method_exists($GLOBALS["arSocNetAllowedSubscribeEntityTypesDesc"][$entity_type]["CLASS_MY"], $GLOBALS["arSocNetAllowedSubscribeEntityTypesDesc"][$entity_type]["METHOD_MY"])
		)
			$arMyEntities = call_user_func(array(
				$GLOBALS["arSocNetAllowedSubscribeEntityTypesDesc"][$entity_type]["CLASS_MY"], 
				$GLOBALS["arSocNetAllowedSubscribeEntityTypesDesc"][$entity_type]["METHOD_MY"]
			));

		if (array_key_exists($entity_type."_".$entity_id."_".$event_id."_N_N", $arCurrentUserSubscribe["TRANSPORT"]))
			$arTransport[] = $arCurrentUserSubscribe["TRANSPORT"][$entity_type."_".$entity_id."_".$event_id."_N_N"];

		if (array_key_exists($entity_type."_".$entity_id."_all_N_N", $arCurrentUserSubscribe["TRANSPORT"]))
			$arTransport[] = $arCurrentUserSubscribe["TRANSPORT"][$entity_type."_".$entity_id."_all_N_N"];

		if (CSocNetTools::HasLogEventCreatedBy($event_id))
		{			
			if ($event_id)
			{
				if (array_key_exists("U_".$cb_id."_all_N_Y", $arCurrentUserSubscribe["TRANSPORT"]))
					$arTransport[] = $arCurrentUserSubscribe["TRANSPORT"]["U_".$cb_id."_all_N_Y"];
				elseif (array_key_exists("U_".$cb_id."_all_Y_Y", $arCurrentUserSubscribe["TRANSPORT"]))
					$arTransport[] = $arCurrentUserSubscribe["TRANSPORT"]["U_".$cb_id."_all_Y_Y"];
			}
		}

		if (
			!array_key_exists($entity_type."_".$entity_id."_".$event_id."_N_N", $arCurrentUserSubscribe["TRANSPORT"])
			&& !array_key_exists($entity_type."_".$entity_id."_all_N_N", $arCurrentUserSubscribe["TRANSPORT"])
		)
		{
			if 
			(
				array_key_exists($entity_id, $arMyEntities)
				&& array_key_exists($entity_type."_0_".$entity_id."_Y_N", $arCurrentUserSubscribe["TRANSPORT"])
			)
				$arTransport[] = $arCurrentUserSubscribe["TRANSPORT"][$entity_type."_0_".$event_id."_Y_N"];
			elseif 
			(
				array_key_exists($entity_id, $arMyEntities)
				&& array_key_exists($entity_type."_0_all_Y_N", $arCurrentUserSubscribe["TRANSPORT"])
			)
				$arTransport[] = $arCurrentUserSubscribe["TRANSPORT"][$entity_type."_0_all_Y_N"];
			elseif (array_key_exists($entity_type."_0_".$event_id."_N_N", $arCurrentUserSubscribe["TRANSPORT"]))
				$arTransport[] = $arCurrentUserSubscribe["TRANSPORT"][$entity_type."_0_".$event_id."_N_N"];
			elseif (array_key_exists($entity_type."_0_all_N_N", $arCurrentUserSubscribe["TRANSPORT"]))
				$arTransport[] = $arCurrentUserSubscribe["TRANSPORT"][$entity_type."_0_all_N_N"];
			else
				$arTransport[] = "N";
		}

		$arTransport = array_unique($arTransport);
		usort($arTransport, "__SLTransportSort");
		
		$arResult = $arTransport;
	}
	elseif ($action == "set")
	{
		$arFields = false;

		if (in_array($ls, array("EVENT", "ALL")))
		{
			$arFields = array(
				"USER_ID" 		=> $GLOBALS["USER"]->GetID(),
				"ENTITY_TYPE" 	=> $entity_type,
				"ENTITY_ID" 	=> $entity_id,
				"ENTITY_CB" 	=> "N"
			);
			
			if($ls == "EVENT")
				$arEventID = CSocNetLogTools::FindFullSetByEventID($event_id);
			else
				$arEventID = array("all");

		}
		elseif (in_array($ls, array("CB_ALL")))
		{
			$arFields = array(
				"USER_ID" 		=> $GLOBALS["USER"]->GetID(),
				"ENTITY_TYPE" 	=> SONET_SUBSCRIBE_ENTITY_USER,
				"ENTITY_ID" 	=> $cb_id,
				"ENTITY_CB" 	=> "Y"
			);

			$arEventID = array("all");
		}
		
		if ($arFields && (strlen($transport) > 0 || strlen($visible) > 0))
		{
			if (
				$arFields["ENTITY_CB"] != "Y"
				&& array_key_exists($entity_type, $GLOBALS["arSocNetAllowedSubscribeEntityTypesDesc"])
				&& array_key_exists("HAS_SITE_ID", $GLOBALS["arSocNetAllowedSubscribeEntityTypesDesc"][$entity_type])
				&& $GLOBALS["arSocNetAllowedSubscribeEntityTypesDesc"][$entity_type]["HAS_SITE_ID"] == "Y"
				&& strlen($site_id) > 0
			)
				$arFieldsVal["SITE_ID"] = $site_id;
			else
				$arFieldsVal["SITE_ID"] = false;

			if (strlen($transport) > 0)
				$arFieldsVal["TRANSPORT"] = $transport;

			if (strlen($visible) > 0)
				$arFieldsVal["VISIBLE"] = $visible;

			foreach($arEventID as $event_id)
			{
				$arFields["EVENT_ID"] = $event_id;
				
				$dbResultTmp = CSocNetLogEvents::GetList(
									array(),
									$arFields,
									false, 
									false, 
									array("ID", "TRANSPORT", "VISIBLE")
								);

				$arFieldsSet = array_merge($arFields, $arFieldsVal);

				if ($arResultTmp = $dbResultTmp->Fetch())
				{
					if ($arFieldsVal["TRANSPORT"] == "I")
					{
						if ($arResultTmp["VISIBLE"] == "I")
							CSocNetLogEvents::Delete($arResultTmp["ID"]);
						else
							$idTmp = CSocNetLogEvents::Update($arResultTmp["ID"], $arFieldsSet);
					}
					elseif ($arFieldsVal["VISIBLE"] == "I")
					{
						if ($arResultTmp["TRANSPORT"] == "I")
							CSocNetLogEvents::Delete($arResultTmp["ID"]);
						else
							$idTmp = CSocNetLogEvents::Update($arResultTmp["ID"], $arFieldsSet);
					}
					else
							$idTmp = CSocNetLogEvents::Update($arResultTmp["ID"], $arFieldsSet);
				}	
				elseif(
					$arFieldsVal["TRANSPORT"] != "I"
					&& $arFieldsVal["VISIBLE"] != "I"
				)
				{
					if (!array_key_exists("TRANSPORT", $arFieldsSet))
						$arFieldsSet["TRANSPORT"] = "I";
					if (!array_key_exists("VISIBLE", $arFieldsSet))
						$arFieldsSet["VISIBLE"] = "I";
						
					$idTmp = CSocNetLogEvents::Add($arFieldsSet);
				}
			}
		}
	}
	elseif ($action == "set_transport_arr")
	{
		$arFields = false;

		if (is_array($ls_arr))
		{
			foreach($ls_arr as $ls => $transport)
			{
				$ls = trim($ls);

				if (in_array($ls, array("EVENT", "ALL")))
				{
					$arFields = array(
						"USER_ID" 		=> $GLOBALS["USER"]->GetID(),
						"ENTITY_TYPE" 	=> $entity_type,
						"ENTITY_ID" 	=> $entity_id,
						"ENTITY_CB" 	=> "N"
					);

					if($ls == "EVENT")
						$arEventID = CSocNetLogTools::FindFullSetByEventID($event_id);					
					else
						$arEventID = array("all");

				}
				elseif (in_array($ls, array("CB_ALL")))
				{
					$arFields = array(
						"USER_ID" 		=> $GLOBALS["USER"]->GetID(),
						"ENTITY_TYPE" 	=> SONET_SUBSCRIBE_ENTITY_USER,
						"ENTITY_ID" 	=> $cb_id,
						"ENTITY_CB" 	=> "Y"
					);

					$arEventID = array("all");
				}
				
				if ($arFields && (strlen($transport) > 0 || strlen($visible) > 0))
				{
					if (
						$arFields["ENTITY_CB"] != "Y"
						&& array_key_exists($entity_type, $GLOBALS["arSocNetAllowedSubscribeEntityTypesDesc"])
						&& array_key_exists("HAS_SITE_ID", $GLOBALS["arSocNetAllowedSubscribeEntityTypesDesc"][$entity_type])
						&& $GLOBALS["arSocNetAllowedSubscribeEntityTypesDesc"][$entity_type]["HAS_SITE_ID"] == "Y"
						&& strlen($site_id) > 0
					)
						$arFieldsVal["SITE_ID"] = $site_id;
					else
						$arFieldsVal["SITE_ID"] = false;

					if (strlen($transport) > 0)
						$arFieldsVal["TRANSPORT"] = $transport;

					if (strlen($visible) > 0)
						$arFieldsVal["VISIBLE"] = $visible;
				
					foreach($arEventID as $event_id)
					{
						$arFields["EVENT_ID"] = $event_id;
						
						$dbResultTmp = CSocNetLogEvents::GetList(
							array(),
							$arFields,
							false, 
							false, 
							array("ID", "TRANSPORT", "VISIBLE")
						);

						$arFieldsSet = array_merge($arFields, $arFieldsVal);

						if ($arResultTmp = $dbResultTmp->Fetch())
						{
							if ($arFieldsVal["TRANSPORT"] == "I")
							{
								if ($arResultTmp["VISIBLE"] == "I")
									CSocNetLogEvents::Delete($arResultTmp["ID"]);
								else
									$idTmp = CSocNetLogEvents::Update($arResultTmp["ID"], $arFieldsSet);
							}
							elseif ($arFieldsVal["VISIBLE"] == "I")
							{
								if ($arResultTmp["TRANSPORT"] == "I")
									CSocNetLogEvents::Delete($arResultTmp["ID"]);
								else
									$idTmp = CSocNetLogEvents::Update($arResultTmp["ID"], $arFieldsSet);
							}
							else
									$idTmp = CSocNetLogEvents::Update($arResultTmp["ID"], $arFieldsSet);
						}	
						elseif(
							$arFieldsVal["TRANSPORT"] != "I"
							&& $arFieldsVal["VISIBLE"] != "I"
						)
						{
							if (!array_key_exists("TRANSPORT", $arFieldsSet))
								$arFieldsSet["TRANSPORT"] = "I";
							if (!array_key_exists("VISIBLE", $arFieldsSet))
								$arFieldsSet["VISIBLE"] = "I";
								
							$idTmp = CSocNetLogEvents::Add($arFieldsSet);
						}
					}
				}
			}
		}
	}
	elseif ($action == "add_comment")
	{
		$log_id = $_REQUEST["log_id"];
		if ($arLog = CSocNetLog::GetByID($log_id))
		{
			$arCommentEvent = CSocNetLogTools::FindLogCommentEventByLogEventID($arLog["EVENT_ID"]);
			if ($arCommentEvent)
			{
				$feature = CSocNetLogTools::FindFeatureByEventID($arCommentEvent["EVENT_ID"]);

				if ($feature && array_key_exists("OPERATION_ADD", $arCommentEvent) && strlen($arCommentEvent["OPERATION_ADD"]) > 0)
					$bCanAddComments = CSocNetFeaturesPerms::CanPerformOperation($GLOBALS["USER"]->GetID(), $arLog["ENTITY_TYPE"], $arLog["ENTITY_ID"], ($feature == "microblog" ? "blog" : $feature), $arCommentEvent["OPERATION_ADD"], $bCurrentUserIsAdmin);
				else
					$bCanAddComments = true;

				if ($bCanAddComments)
				{
					// add source object and get source_id, $source_url
					$arParams = array(
						"PATH_TO_SMILE" => $_REQUEST["p_smile"],
						"PATH_TO_USER_BLOG_POST" => $_REQUEST["p_ubp"],
						"PATH_TO_GROUP_BLOG_POST" => $_REQUEST["p_gbp"],
						"BLOG_ALLOW_POST_CODE" => $_REQUEST["bapc"]					
					);
					$parser = new logTextParser(LANGUAGE_ID, $arParams["PATH_TO_SMILE"]);

					$comment_text = $_REQUEST["message"];
					CUtil::decodeURIComponent($comment_text);
					$comment_text = Trim($comment_text);

					if (strlen($comment_text) > 0)
					{
						$arFields = array(
							"ENTITY_TYPE" => $arLog["ENTITY_TYPE"],
							"ENTITY_ID" => $arLog["ENTITY_ID"],
							"EVENT_ID" => $arCommentEvent["EVENT_ID"],
							"=LOG_DATE" => $GLOBALS["DB"]->CurrentTimeFunction(),
							"MESSAGE" => $parser->convert($comment_text, array(), array("SMILES" => "N")),
							"TEXT_MESSAGE" => $comment_text,
							"URL" => $source_url,
							"MODULE_ID" => false,
							"SOURCE_ID" => $source_id,
							"LOG_ID" => $arLog["TMP_ID"],
							"USER_ID" => $GLOBALS["USER"]->GetID(),
							"PATH_TO_USER_BLOG_POST" => $arParams["PATH_TO_USER_BLOG_POST"],
							"PATH_TO_GROUP_BLOG_POST" => $arParams["PATH_TO_GROUP_BLOG_POST"],
							"BLOG_ALLOW_POST_CODE" => $arParams["BLOG_ALLOW_POST_CODE"]
						);

						$comment = CSocNetLogComments::Add($arFields, true);
						if (!is_array($comment) && intval($comment) > 0)
							$arResult["commentID"] = $comment;
						elseif (is_array($comment) &&  array_key_exists("MESSAGE", $comment) && strlen($comment["MESSAGE"]) > 0)
							$arResult["strMessage"] = $comment["MESSAGE"];
					}
					else
						$arResult["strMessage"] = GetMessage("SONET_LOG_COMMENT_EMPTY");
				}
				else
					$arResult["strMessage"] = GetMessage("SONET_LOG_COMMENT_NO_PERMISSIONS");
			}
		}
	}
	elseif ($action == "get_comment")
	{
		$comment_id = $_REQUEST["cid"];

		if ($arComment = CSocNetLogComments::GetByID($comment_id))
		{
			$arResult["arComment"] = $arComment;

			$arDateTmp = ParseDateTime((array_key_exists("LOG_DATE_FORMAT", $arComment) ? $arComment["LOG_DATE_FORMAT"] : $arComment["LOG_DATE"]), CSite::GetDateFormat('FULL'));
			$day = IntVal($arDateTmp["DD"]);
			$month = IntVal($arDateTmp["MM"]);
			$year = IntVal($arDateTmp["YYYY"]);
			$dateFormated = $day.' '.ToLower(GetMessage('MONTH_'.$month.'_S')).' '.$year;
			$timeFormated = $arDateTmp["HH"].':'.$arDateTmp["MI"];

			if (intval($arComment["USER_ID"]) > 0)
			{
				$arParams = array(
					"PATH_TO_USER" => $_REQUEST["p_user"],
					"NAME_TEMPLATE" => $_REQUEST["nt"],
					"SHOW_LOGIN" => $_REQUEST["sl"],
					"AVATAR_SIZE" => $_REQUEST["as"]
				);

				$arUser = array(
					"ID" => $arComment["USER_ID"],				
					"NAME" => $arComment["~CREATED_BY_NAME"],
					"LAST_NAME" => $arComment["~CREATED_BY_LAST_NAME"],
					"SECOND_NAME" => $arComment["~CREATED_BY_SECOND_NAME"],
					"LOGIN" => $arComment["~CREATED_BY_LOGIN"],
					"PERSONAL_PHOTO" => $arComment["~CREATED_BY_PERSONAL_PHOTO"],
					"PERSONAL_GENDER" => $arComment["~CREATED_BY_PERSONAL_GENDER"],
				);
				$bUseLogin = $arParams["SHOW_LOGIN"] != "N" ? true : false;
				$arCreatedBy = array(
					"FORMATTED" => CUser::FormatName($arParams["NAME_TEMPLATE"], $arUser, $bUseLogin),
					"URL" => CComponentEngine::MakePathFromTemplate($arParams["PATH_TO_USER"], array("user_id" => $arComment["USER_ID"], "id" => $arComment["USER_ID"]))
				);

			}
			else
				$arCreatedBy = array("FORMATTED" => GetMessage("SONET_C73_CREATED_BY_ANONYMOUS"));
			
			$arTmpCommentEvent = array(
				"LOG_DATE" => $arComment["LOG_DATE"],
				"LOG_DATE_FORMAT" => $arComment["LOG_DATE_FORMAT"],
				"LOG_DATE_DAY" => ConvertTimeStamp(MakeTimeStamp($arComment["LOG_DATE"]), "SHORT"),
				"LOG_TIME_FORMAT" => $timeFormated,
				"MESSAGE" => $arComment["MESSAGE"],
				"MESSAGE_FORMAT" => $arComment["~MESSAGE"],
				"CREATED_BY" => $arCreatedBy,
				"AVATAR_SRC" => CSocNetLogTools::FormatEvent_CreateAvatar($arUser, $arParams, "")
			);

			$arResult["arCommentFormatted"] = $arTmpCommentEvent;			
		}
	}
	elseif ($action == "get_comments")
	{
		$arResult["arComments"] = array();

		$log_tmp_id = $_REQUEST["logid"];
		
		if (intval($log_tmp_id) > 0)
		{
			$arParams = array(
				"PATH_TO_USER" => $_REQUEST["p_user"],
				"NAME_TEMPLATE" => $_REQUEST["nt"],
				"SHOW_LOGIN" => $_REQUEST["sl"],
				"AVATAR_SIZE" => $_REQUEST["as"],
				"PATH_TO_SMILE" => $_REQUEST["p_smile"]
			);

			$arFilter = array("LOG_ID" => $log_tmp_id);
			$arListParams = array("USE_SUBSCRIBE" => "N");

			$dbComments = CSocNetLogComments::GetList(
								array("LOG_DATE" => "ASC"),
								$arFilter,
								false,
								false,
								array(),
								$arListParams
							);

			while($arComments = $dbComments->GetNext())
				__SLGetLogCommentRecord($arComments, $arParams, false, false, &$arTmpComments, false);
			
			$arResult["arComments"] = $arTmpComments;
		}
	}
	echo CUtil::PhpToJSObject($arResult);
}

define('PUBLIC_AJAX_MODE', true);
require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/epilog_after.php");
?>