Your IP : 3.135.190.40


Current Path : /var/www/axolotl/data/www/yar.axolotls.ru/bitrix/modules/xdimport/
Upload File :
Current File : /var/www/axolotl/data/www/yar.axolotls.ru/bitrix/modules/xdimport/include.php

<?
global $DBType;

IncludeModuleLangFile(__FILE__);

if (!IsModuleInstalled("socialnetwork"))
{
	return false;
}

define("XDI_DEBUG", false);
define("XDI_XML_ERROR_DEBUG", false);
define("XDI_XML_DEBUG", false);

$db_type = strtolower($DB->type);
CModule::AddAutoloadClasses(
	"xdimport",
	array(
		"CXDImport" => "classes/general/xdimport.php",
		"CXDIUser" => "classes/general/user.php",
		"CXDILiveFeed" => "classes/general/livefeed.php",
		"CXDILFScheme" => "classes/".$DBType."/lf_scheme.php",
		"CXDILFSchemeRights" => "classes/general/lf_scheme_rights.php",
		"CXDILFSchemeXML" => "classes/general/lf_scheme_xml.php",
		"CXDILFSchemeRSS" => "classes/general/lf_scheme_rss.php",
		"CXDILFSchemeRSSAtom" => "classes/general/lf_scheme_rss_atom.php",
	)
);

class CXDILFEventHandlers
{
	public static function OnFillSocNetAllowedSubscribeEntityTypes(&$arSocNetAllowedSubscribeEntityTypes)
	{
		define("SONET_SUBSCRIBE_ENTITY_PROVIDER", "P");
		$arSocNetAllowedSubscribeEntityTypes[] = SONET_SUBSCRIBE_ENTITY_PROVIDER;

		global $arSocNetAllowedSubscribeEntityTypesDesc;
		$arSocNetAllowedSubscribeEntityTypesDesc[SONET_SUBSCRIBE_ENTITY_PROVIDER] = array(
			"TITLE_LIST" => GetMessage("LFP_SOCNET_LOG_LIST_P_ALL"),
			"TITLE_ENTITY" => GetMessage("LFP_SOCNET_LOG_P"),
			"TITLE_ENTITY_XDI" => GetMessage("LFP_SOCNET_LOG_XDI_P"),
			"CLASS_DESC_GET" => "CXDILFScheme",
			"METHOD_DESC_GET" => "GetProviderByID",
			"XDIMPORT_ALLOWED" => "Y"
		);
	}

	public static function OnFillSocNetLogEvents(&$arSocNetLogEvents)
	{
		$arSocNetLogEvents["data"] = array(
			"ENTITIES" =>	array(
				SONET_SUBSCRIBE_ENTITY_PROVIDER => array(
					"TITLE" => GetMessage("LFP_SOCNET_LOG_DATA"),
					"TITLE_SETTINGS" => GetMessage("LFP_SOCNET_LOG_DATA_SETTINGS"),
					"TITLE_SETTINGS_1" => GetMessage("LFP_SOCNET_LOG_DATA_SETTINGS_P_1"),
					"TITLE_SETTINGS_2" => GetMessage("LFP_SOCNET_LOG_DATA_SETTINGS_P_2"),
				),
				SONET_SUBSCRIBE_ENTITY_USER => array(
					"TITLE" => GetMessage("LFP_SOCNET_LOG_DATA"),
					"TITLE_SETTINGS" => GetMessage("LFP_SOCNET_LOG_DATA_SETTINGS"),
					"TITLE_SETTINGS_1" => GetMessage("LFP_SOCNET_LOG_DATA_SETTINGS_U_1"),
					"TITLE_SETTINGS_2" => GetMessage("LFP_SOCNET_LOG_DATA_SETTINGS_U_2"),
					"OPERATION" => "viewprofile"
				),
				SONET_SUBSCRIBE_ENTITY_GROUP => array(
					"TITLE" => GetMessage("LFP_SOCNET_LOG_DATA"),
					"TITLE_SETTINGS" => GetMessage("LFP_SOCNET_LOG_DATA_SETTINGS"),
					"TITLE_SETTINGS_1" => GetMessage("LFP_SOCNET_LOG_DATA_SETTINGS_G_1"),
					"TITLE_SETTINGS_2" => GetMessage("LFP_SOCNET_LOG_DATA_SETTINGS_G_2"),
					"OPERATION" => "viewsystemevents"
				),
			),
			"CLASS_FORMAT" => "CXDILFEventHandlers",
			"METHOD_FORMAT" => "FormatEvent_Data",
			"FULL_SET" => array("data", "data_comment"),
			"COMMENT_EVENT" => array(
				"EVENT_ID" => "data_comment",
				"UPDATE_CALLBACK" => "NO_SOURCE",
				"DELETE_CALLBACK" => "NO_SOURCE",
				"CLASS_FORMAT" => "CXDILFEventHandlers",
				"METHOD_FORMAT"	=> "FormatComment_Data",
				"RATING_TYPE_ID" => "LOG_COMMENT"
			),
			"XDIMPORT_ALLOWED" => "Y"
		);
	}

	function FormatEvent_Data($arFields, $arParams, $bMail = false)
	{
		$arResult = array(
			"EVENT" => $arFields,
			"URL" => ""
		);

		if (!CModule::IncludeModule("socialnetwork"))
		{
			return $arResult;
		}

		if ($arFields["ENTITY_TYPE"] == SONET_SUBSCRIBE_ENTITY_PROVIDER)
		{
			$arResult["ENTITY"] = CXDILFEventHandlers::GetEntity_Data($arFields, $bMail);
			$rsRight = CSocNetLogRights::GetList(array(), array("LOG_ID" => $arFields["ID"]));
			$arRights = array();
			while ($arRight = $rsRight->Fetch())
			{
				$arRights[] = $arRight["GROUP_CODE"];
			}

			$arDestination = CSocNetLogTools::FormatDestinationFromRights($arRights, $arParams, $iMoreCount);
		}
		elseif (in_array($arFields["ENTITY_TYPE"], array(SONET_SUBSCRIBE_ENTITY_GROUP, SONET_SUBSCRIBE_ENTITY_USER)))
		{
			$arResult["ENTITY"] = CSocNetLogTools::FormatEvent_GetEntity($arFields, $arParams, $bMail);

			if ($arFields["ENTITY_TYPE"] == SONET_SUBSCRIBE_ENTITY_GROUP)
			{
				$arDestination = array(
					array(
						"STYLE" => "sonetgroups",
						"TITLE" => $arResult["ENTITY"]["FORMATTED"]["NAME"],
						"URL" => $arResult["ENTITY"]["FORMATTED"]["URL"],
						"IS_EXTRANET" => (is_array($GLOBALS["arExtranetGroupID"]) && in_array($arFields["ENTITY_ID"], $GLOBALS["arExtranetGroupID"]))
					)
				);
				$arResult["ENTITY"]["FORMATTED"] = array(
					"NAME" => $arResult["EVENT"]["TITLE"]
				);
			}
		}

		$arEventParams = \Bitrix\XDImport\Internals\Utils::getParamsFromString(strlen($arFields["~PARAMS"]) > 0 ? $arFields["~PARAMS"] : $arFields["PARAMS"]);

		if (
			is_array($arEventParams)
			&& array_key_exists("SCHEME_ID", $arEventParams)
		)
		{
			$rs = CXDILFScheme::GetByID($arEventParams["SCHEME_ID"]);
			if ($arScheme = $rs->Fetch())
			{
				$arParams["IS_HTML"] = $arScheme["IS_HTML"];
			}
		}

		if (
			in_array($arFields["ENTITY_TYPE"], array(SONET_SUBSCRIBE_ENTITY_GROUP, SONET_SUBSCRIBE_ENTITY_USER))
			&& is_array($arEventParams)
			&& count($arEventParams) > 0
			&& array_key_exists("ENTITY_NAME", $arEventParams)
			&& strlen($arEventParams["ENTITY_NAME"]) > 0
		)
		{
			$title_tmp = (
				!$bMail
				&& strlen($arFields["URL"]) > 0
					? '<a href="'.$arFields["URL"].'">'.$arEventParams["ENTITY_NAME"].'</a>'
					: $arEventParams["ENTITY_NAME"]
			);
		}
		else
		{
			$title_tmp = (
				!$bMail
				&& strlen($arFields["URL"]) > 0
					? '<a href="'.$arFields["URL"].'">'.$arFields["TITLE"].'</a>'
					: $arFields["TITLE"]
			);
		}

		$title = str_replace(
			array("#TITLE#", "#ENTITY#"),
			array($title_tmp, ($bMail ? $arResult["ENTITY"]["FORMATTED"] : $arResult["ENTITY"]["FORMATTED"]["NAME"])),
			($bMail ? GetMessage("LFP_SOCNET_LOG_DATA_".$arFields["ENTITY_TYPE"]."_TITLE_MAIL") : GetMessage("LFP_SOCNET_LOG_DATA_TITLE"))
		);

		$url = false;

		if (strlen($arFields["URL"]) > 0)
		{
			$url = $arFields["URL"];
		}

		if ($arParams["IS_HTML"] == "Y")
		{
			$sanitizer = new CBXSanitizer();
			$sanitizer->SetLevel(CBXSanitizer::SECURE_LEVEL_LOW);
			$sanitizer->ApplyDoubleEncode(false);
			$message = htmlspecialcharsEx($sanitizer->SanitizeHtml(htmlspecialcharsback($arFields["MESSAGE"])));
		}
		else
		{
			$message = htmlspecialcharsEx($arFields["MESSAGE"]);
		}

		if (in_array($arFields["ENTITY_TYPE"], array(SONET_SUBSCRIBE_ENTITY_GROUP, SONET_SUBSCRIBE_ENTITY_USER)))
		{
			$message = (
				!$bMail
					? ($arFields["ENTITY_TYPE"] == SONET_SUBSCRIBE_ENTITY_USER ? "<b><a href='".$arFields["URL"]."'>".$arFields["TITLE"]."</a></b><br />" : "").$message
					: $arFields["TITLE"]."#BR##BR#".$message
			);
		}

		$arResult["EVENT_FORMATTED"] = array(
			"TITLE" => $title,
			"TITLE_24" => ($arFields["ENTITY_TYPE"] == SONET_SUBSCRIBE_ENTITY_PROVIDER ? (($arParams["MOBILE"] == "Y") ? GetMessage("LFP_SOCNET_LOG_DATA_TITLE_24") : GetMessage("LFP_SOCNET_LOG_DATA_TITLE_IMPORTANT_24")) : GetMessage("LFP_SOCNET_LOG_DATA_TITLE_24")),
			"MESSAGE" => ($bMail ? CSocNetTextParser::killAllTags($message) : $message),
			"IS_IMPORTANT" => ($arFields["ENTITY_TYPE"] == SONET_SUBSCRIBE_ENTITY_PROVIDER ? true : false),
			"STYLE" => ($arFields["ENTITY_TYPE"] == SONET_SUBSCRIBE_ENTITY_PROVIDER ? "imp-post feed-external-massage" : ""),
			"DESTINATION" => $arDestination
		);

		if ($arFields["ENTITY_TYPE"] == SONET_SUBSCRIBE_ENTITY_PROVIDER)
		{
			$arResult["EVENT_FORMATTED"]["TITLE_24_2"] = $arFields["TITLE"];
		}

		if (intval($iMoreCount) > 0)
		{
			$arResult["EVENT_FORMATTED"]["DESTINATION_MORE"] = $iMoreCount;
		}

		if (
			is_array($arEventParams)
			&& array_key_exists("SOURCE_TIMESTAMP", $arEventParams)
		)
		{
			$arResult["EVENT_FORMATTED"]["LOG_DATE_FORMAT"] = ConvertTimeStamp($arEventParams["SOURCE_TIMESTAMP"], "FULL");
		}

		if (strlen($url) > 0)
		{
			$arResult["EVENT_FORMATTED"]["URL"] = $url;
		}

		if (!$bMail)
		{
			if ($arFields["ENTITY_TYPE"] == SONET_SUBSCRIBE_ENTITY_PROVIDER)
			{
				$arResult["EVENT_FORMATTED"]["AVATAR_STYLE"] = "avatar-rss";
			}
			elseif ($arFields["ENTITY_TYPE"] == SONET_SUBSCRIBE_ENTITY_GROUP)
			{
				$arGroup = array(
					"IMAGE_ID" => $arFields["GROUP_IMAGE_ID"]
				);
				$arResult["AVATAR_SRC"] = CSocNetLogTools::FormatEvent_CreateAvatarGroup($arGroup, $arParams);
			}
			elseif ($arFields["ENTITY_TYPE"] == SONET_SUBSCRIBE_ENTITY_USER)
			{
				$arResult["AVATAR_SRC"] = CSocNetLogTools::FormatEvent_CreateAvatar($arFields, $arParams, "USER_");
			}
			elseif ($arFields["ENTITY_TYPE"] == "N")
			{
				$arResult["EVENT_FORMATTED"]["AVATAR_STYLE"] = "avatar-info";
			}

			$parserLog = new logTextParser(false, $arParams["PATH_TO_SMILE"]);
			$parserLog->pathToUser = (!empty($arParams["PATH_TO_USER"]) ? $arParams["PATH_TO_USER"] : '');

			$arAllow = array(
				"HTML" => "Y", "ANCHOR" => "Y", "BIU" => "Y", 
				"IMG" => "Y", 
				"QUOTE" => "Y", 
				"CODE" => "Y", 
				"FONT" => "Y", 
				"LIST" => "Y", 
				"SMILES" => "Y", 
				"NL2BR" => "N", 
				"LOG_NL2BR" => ($arParams["IS_HTML"] == "Y" ? "N" : "Y"),
				"MULTIPLE_BR" => "N", 
				"VIDEO" => "Y", 
				"LOG_VIDEO" => "N"
			);

			$arResult["EVENT_FORMATTED"]["MESSAGE"] = htmlspecialcharsbx($parserLog->convert(htmlspecialcharsback($arResult["EVENT_FORMATTED"]["MESSAGE"]), array(), $arAllow));

			if (
				$arParams["MOBILE"] != "Y" 
				&& $arParams["NEW_TEMPLATE"] != "Y"
			)
			{
				$arResult["EVENT_FORMATTED"]["SHORT_MESSAGE"] = $parserLog->html_cut(
					$parserLog->convert(htmlspecialcharsback(str_replace("#CUT#", "", $arResult["EVENT_FORMATTED"]["MESSAGE"])), array(), $arAllow),
					500
				);
				$arResult["EVENT_FORMATTED"]["IS_MESSAGE_SHORT"] = CSocNetLogTools::FormatEvent_IsMessageShort($arResult["EVENT_FORMATTED"]["MESSAGE"], $arResult["EVENT_FORMATTED"]["SHORT_MESSAGE"]);			
			}
		}
		return $arResult;
	}

	function FormatComment_Data($arFields, $arParams, $bMail = false, $arLog = array())
	{
		$arResult = array(
			"EVENT_FORMATTED" => array(),
		);

		if (!CModule::IncludeModule("socialnetwork"))
		{
			return $arResult;
		}

		if ($arLog["ENTITY_TYPE"] == SONET_SUBSCRIBE_ENTITY_PROVIDER)
		{
			$arResult["ENTITY"] = CXDILFEventHandlers::GetEntity_Data($arLog, $bMail);
		}
		elseif (in_array($arLog["ENTITY_TYPE"], array(SONET_SUBSCRIBE_ENTITY_GROUP, SONET_SUBSCRIBE_ENTITY_USER)))
		{
			$arResult["ENTITY"] = CSocNetLogTools::FormatEvent_GetEntity($arLog, $arParams, $bMail);
		}

		if(!$bMail && $arParams["USE_COMMENT"] != "Y")
		{
			$arLog["ENTITY_ID"] = $arFields["ENTITY_ID"];
			$arLog["ENTITY_TYPE"] = $arFields["ENTITY_TYPE"];
		}

		if (
			!$bMail
			&& array_key_exists("URL", $arLog)
			&& strlen($arLog["URL"]) > 0
		)
			$news_tmp = '<a href="'.$arLog["URL"].'">'.$arLog["TITLE"].'</a>';
		else
			$news_tmp = $arLog["TITLE"];

		$title_tmp = ($bMail ? GetMessage("LFP_SOCNET_LOG_DATA_COMMENT_".$arLog["ENTITY_TYPE"]."_TITLE_MAIL") : GetMessage("LFP_SOCNET_LOG_DATA_COMMENT_TITLE"));

		$title = str_replace(
			array("#TITLE#", "#ENTITY#"),
			array($news_tmp, ($bMail ? $arResult["ENTITY"]["FORMATTED"] : $arResult["ENTITY"]["FORMATTED"]["NAME"])),
			$title_tmp
		);

		$arResult["EVENT_FORMATTED"] = array(
			"TITLE" => ($bMail || $arParams["USE_COMMENT"] != "Y" ? $title : ""),
			"MESSAGE" => ($bMail ? $arFields["TEXT_MESSAGE"] : $arFields["MESSAGE"])
		);

		if ($bMail)
		{
			$url = CSocNetLogTools::FormatEvent_GetURL($arLog, true);
			if (strlen($url) > 0)
			{
				$arResult["EVENT_FORMATTED"]["URL"] = $url;
			}
		}
		else
		{
			static $parserLog = false;
			if (CModule::IncludeModule("forum"))
			{
				$arAllow = array(
					"HTML" => "N", "ANCHOR" => "Y", "BIU" => "Y",
					"IMG" => "Y", "LOG_IMG" => "N",
					"QUOTE" => "Y", "LOG_QUOTE" => "N",
					"CODE" => "Y", "LOG_CODE" => "N",
					"FONT" => "Y", "LOG_FONT" => "N",
					"LIST" => "Y",
					"SMILES" => "Y",
					"NL2BR" => "Y",
					"MULTIPLE_BR" => "N",
					"VIDEO" => "Y", "LOG_VIDEO" => "N",
					"USERFIELDS" => $arFields["UF"],
					"USER" => ($arParams["IM"] == "Y" ? "N" : "Y"),
					"TAG" => "Y"
				);

				if (!$parserLog)
				{
					$parserLog = new forumTextParser(LANGUAGE_ID);
				}

				$parserLog->pathToUser = $parserLog->userPath = $arParams["PATH_TO_USER"];
				$parserLog->arUserfields = $arFields["UF"];
				$parserLog->bMobile = ($arParams["MOBILE"] == "Y");

				$arResult["EVENT_FORMATTED"]["MESSAGE"] = htmlspecialcharsbx($parserLog->convert(htmlspecialcharsback($arResult["EVENT_FORMATTED"]["MESSAGE"]), $arAllow));
				$arResult["EVENT_FORMATTED"]["MESSAGE"] = preg_replace("/\[user\s*=\s*([^\]]*)\](.+?)\[\/user\]/is".BX_UTF_PCRE_MODIFIER, "\\2", $arResult["EVENT_FORMATTED"]["MESSAGE"]);
			}
			else
			{
				$arAllow = array(
					"HTML" => "Y", "ANCHOR" => "Y", "BIU" => "Y",
					"IMG" => "Y", "LOG_IMG" => "N",
					"QUOTE" => "Y", "LOG_QUOTE" => "N",
					"CODE" => "Y", "LOG_CODE" => "N",
					"FONT" => "Y", "LOG_FONT" => "N",
					"LIST" => "Y",
					"SMILES" => "Y",
					"NL2BR" => "Y",
					"MULTIPLE_BR" => "N",
					"VIDEO" => "Y", "LOG_VIDEO" => "N",
					"USERFIELDS" => $arFields["UF"],
					"USER" => "Y"
				);

				if (!$parserLog)
					$parserLog = new logTextParser(false, $arParams["PATH_TO_SMILE"]);

				$arResult["EVENT_FORMATTED"]["MESSAGE"] = htmlspecialcharsbx($parserLog->convert(htmlspecialcharsback($arResult["EVENT_FORMATTED"]["MESSAGE"]), array(), $arAllow));
			}

			if (
				$arParams["MOBILE"] != "Y" 
				&& $arParams["NEW_TEMPLATE"] != "Y"
			)
			{
				if (CModule::IncludeModule("forum"))			
					$arResult["EVENT_FORMATTED"]["SHORT_MESSAGE"] = $parserLog->html_cut(
						$parserLog->convert(htmlspecialcharsback($arResult["EVENT_FORMATTED"]["MESSAGE"]), $arAllow),
						500
					);
				else
					$arResult["EVENT_FORMATTED"]["SHORT_MESSAGE"] = $parserLog->html_cut(
						$parserLog->convert(htmlspecialcharsback($arResult["EVENT_FORMATTED"]["MESSAGE"]), array(), $arAllow),
						500
					);

				$arResult["EVENT_FORMATTED"]["IS_MESSAGE_SHORT"] = CSocNetLogTools::FormatEvent_IsMessageShort($arResult["EVENT_FORMATTED"]["MESSAGE"], $arResult["EVENT_FORMATTED"]["SHORT_MESSAGE"]);
			}
		}

		return $arResult;
	}

	function GetEntity_Data($arFields, $bMail)
	{
		$arEntity = array();
		$arEventParams = unserialize(strlen($arFields["~PARAMS"]) > 0 ? $arFields["~PARAMS"] : $arFields["PARAMS"]);

		global $arProviders;

		if (!$arProviders)
			$arProviders = array();

		if (intval($arFields["ENTITY_ID"]) > 0)
		{
			if (array_key_exists($arFields["ENTITY_ID"], $arProviders))
			{
				if ($bMail)
					$arEntity["FORMATTED"] = $arProviders[$arFields["ENTITY_ID"]]["NAME"];
				else
					$arEntity["FORMATTED"]["NAME"] = $arProviders[$arFields["ENTITY_ID"]]["NAME"];
			}
			else
			{
				$rsScheme = CXDILFScheme::GetByID($arFields["ENTITY_ID"]);
				if ($arScheme = $rsScheme->GetNext())
				{
					if ($bMail)
						$arEntity["FORMATTED"] = $arProviders[$arFields["ENTITY_ID"]]["NAME"] = $arScheme["NAME"];
					else
					{
						if(defined("BX_COMP_MANAGED_CACHE"))
							$GLOBALS["CACHE_MANAGER"]->RegisterTag("XDI_SCHEME_".$arScheme["ID"]);

						$arEntity["FORMATTED"]["NAME"] = $arProviders[$arFields["ENTITY_ID"]]["NAME"] = $arScheme["NAME"];
					}
				}
			}
		}

		return $arEntity;
	}

}
?>