Your IP : 3.147.238.129


Current Path : /home/bitrix/ext_www/dev.shuft.com.ua/bitrix/components/bitrix/socialnetwork.log.ex/
Upload File :
Current File : /home/bitrix/ext_www/dev.shuft.com.ua/bitrix/components/bitrix/socialnetwork.log.ex/ajax.php

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

$site_id = (isset($_REQUEST["site"]) && is_string($_REQUEST["site"])) ? trim($_REQUEST["site"]): "";
$site_id = substr(preg_replace("/[^a-z0-9_]/i", "", $site_id), 0, 2);

define("SITE_ID", $site_id);

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

$action = (isset($_REQUEST["action"]) && is_string($_REQUEST["action"])) ? trim($_REQUEST["action"]): "";
$entity_type = (isset($_REQUEST["et"]) && is_string($_REQUEST["et"])) ? trim($_REQUEST["et"]): "";
$entity_id = isset($_REQUEST["eid"])? $_REQUEST["eid"]: "";
$cb_id = isset($_REQUEST["cb_id"])? $_REQUEST["cb_id"]: "";
$event_id = (isset($_REQUEST["evid"]) && is_string($_REQUEST["evid"])) ? trim($_REQUEST["evid"]): "";
$transport = (isset($_REQUEST["transport"]) && is_string($_REQUEST["transport"])) ? trim($_REQUEST["transport"]): "";

$lng = (isset($_REQUEST["lang"]) && is_string($_REQUEST["lang"])) ? trim($_REQUEST["lang"]): "";
$lng = substr(preg_replace("/[^a-z0-9_]/i", "", $lng), 0, 2);

$ls = isset($_REQUEST["ls"]) && !is_array($_REQUEST["ls"])? trim($_REQUEST["ls"]): "";
$ls_arr = isset($_REQUEST["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.ex/include.php");

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

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

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

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

	$arResult = array();

	if (in_array($action, array("get_comment", "get_comments")))
	{
		CSocNetTools::InitGlobalExtranetArrays();
	}

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

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

		$is_my = false;

		if (
			array_key_exists($entity_type, $arSocNetAllowedSubscribeEntityTypesDesc)
			&& array_key_exists("CLASS_MY_BY_ID", $arSocNetAllowedSubscribeEntityTypesDesc[$entity_type])
			&& array_key_exists("METHOD_MY_BY_ID", $arSocNetAllowedSubscribeEntityTypesDesc[$entity_type])
		)
			$is_my = call_user_func(
				array(
					$arSocNetAllowedSubscribeEntityTypesDesc[$entity_type]["CLASS_MY_BY_ID"],
					$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"],
					"TRANSPORT_INHERITED" => false
				);
			elseif ($arSubscribesTmp["EVENT_ID"] == 'all')
				$arSubscribe["ALL"] = array(
					"TRANSPORT" => $arSubscribesTmp["TRANSPORT"],
					"TRANSPORT_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"],
					"TRANSPORT_INHERITED" => false
				);
			elseif ($arSubscribesTmp["EVENT_ID"] == 'all')
					$arSubscribe["CB_ALL"] = array(
						"TRANSPORT" => $arSubscribesTmp["TRANSPORT"],
						"TRANSPORT_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"],
						"TRANSPORT_INHERITED" => false
					);
				elseif ($arSubscribesTmp["EVENT_ID"] == 'all')
					$arSubscribe["COMMON_ALL_MY"] = array(
						"TRANSPORT" => $arSubscribesTmp["TRANSPORT"],
						"TRANSPORT_INHERITED" => false
					);
				else
					continue;
			}
			elseif ($arSubscribesTmp["ENTITY_MY"] == "N")
			{
				if ($arSubscribesTmp["EVENT_ID"] == $event_id)
					$arSubscribe["COMMON_EVENT"] = array(
						"TRANSPORT" => $arSubscribesTmp["TRANSPORT"],
						"TRANSPORT_INHERITED" => false
					);
				elseif ($arSubscribesTmp["EVENT_ID"] == 'all')
					$arSubscribe["COMMON_ALL"] = array(
						"TRANSPORT" => $arSubscribesTmp["TRANSPORT"],
						"TRANSPORT_INHERITED" => false
					);
				else
					continue;
			}
		}

		$value_default = "N";
		$strTmp = "TRANSPORT";

		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, $arSocNetAllowedSubscribeEntityTypesDesc)
			&& array_key_exists("TITLE_SETTINGS_ALL", $arSocNetAllowedSubscribeEntityTypesDesc[$entity_type])
			&& strlen($arSocNetAllowedSubscribeEntityTypesDesc[$entity_type]["TITLE_SETTINGS_ALL"]) > 0
		)
		{
			$arSubscribe["ALL"]["TITLE"] = $arSocNetAllowedSubscribeEntityTypesDesc[$entity_type]["TITLE_SETTINGS_ALL"];
		}

		if (
			array_key_exists($entity_type, $arSocNetAllowedSubscribeEntityTypesDesc)
			&& array_key_exists("TITLE_SETTINGS_ALL_1", $arSocNetAllowedSubscribeEntityTypesDesc[$entity_type])
			&& strlen($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"]),
				$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"]),
				$arSocNetAllowedSubscribeEntityTypesDesc[$entity_type]["TITLE_SETTINGS_ALL_2"]
			);
		}

		if (CSocNetLogTools::HasLogEventCreatedBy($event_id))
		{
			$value_default = "N";
			$strTmp = "TRANSPORT";

			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, $arSocNetAllowedSubscribeEntityTypesDesc)
			&& array_key_exists("HAS_SITE_ID", $arSocNetAllowedSubscribeEntityTypesDesc[$entity_type])
			&& $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")),
		);

		if (CBXFeatures::IsFeatureEnabled("WebMessenger"))
			$arResult["Transport"][] = array("Key" => "X", "Value" => GetMessage("SUBSCRIBE_TRANSPORT_XMPP"));
	}
	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)
		{
			if (
				$arFields["ENTITY_CB"] != "Y"
				&& array_key_exists($entity_type, $arSocNetAllowedSubscribeEntityTypesDesc)
				&& array_key_exists("HAS_SITE_ID", $arSocNetAllowedSubscribeEntityTypesDesc[$entity_type])
				&& $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;

			foreach($arEventID as $event_id)
			{
				$arFields["EVENT_ID"] = $event_id;

				$dbResultTmp = CSocNetLogEvents::GetList(
					array(),
					$arFields,
					false,
					false,
					array("ID", "TRANSPORT")
				);

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

				if ($arResultTmp = $dbResultTmp->Fetch())
				{
					if ($arFieldsVal["TRANSPORT"] == "I")
						CSocNetLogEvents::Delete($arResultTmp["ID"]);
					else
						$idTmp = CSocNetLogEvents::Update($arResultTmp["ID"], $arFieldsSet);
				}
				elseif($arFieldsVal["TRANSPORT"] != "I")
				{
					if (!array_key_exists("TRANSPORT", $arFieldsSet))
						$arFieldsSet["TRANSPORT"] = "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)
				{
					if (
						$arFields["ENTITY_CB"] != "Y"
						&& array_key_exists($entity_type, $arSocNetAllowedSubscribeEntityTypesDesc)
						&& array_key_exists("HAS_SITE_ID", $arSocNetAllowedSubscribeEntityTypesDesc[$entity_type])
						&& $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;

					foreach($arEventID as $event_id)
					{
						$arFields["EVENT_ID"] = $event_id;

						$dbResultTmp = CSocNetLogEvents::GetList(
							array(),
							$arFields,
							false,
							false,
							array("ID", "TRANSPORT")
						);

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

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

							$idTmp = CSocNetLogEvents::Add($arFieldsSet);
						}
					}
				}
			}
		}
	}
	elseif ($action == "change_follow" && $GLOBALS["USER"]->IsAuthorized())
	{
		if ($strRes = CSocNetLogFollow::Set($GLOBALS["USER"]->GetID(), "L".intval($_REQUEST["log_id"]), ($_REQUEST["follow"] == "Y" ? "Y" : "N")))
			$arResult["SUCCESS"] = "Y";
		else
			$arResult["SUCCESS"] = "N";
	}

	header('Content-Type: application/x-javascript; charset='.LANG_CHARSET);
	echo CUtil::PhpToJSObject($arResult);
}

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