Your IP : 3.136.23.84


Current Path : /home/bitrix/ext_www/shuft.com.ua/bitrix/components/bitrix/socialnetwork.log.rss/
Upload File :
Current File : /home/bitrix/ext_www/shuft.com.ua/bitrix/components/bitrix/socialnetwork.log.rss/component.php

<?
if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die();

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

if (strLen($arParams["EVENTS_VAR"]) <= 0)
	$arParams["EVENTS_VAR"] = "events";

$arParams["LOG_DATE_DAYS"] = IntVal($arParams["LOG_DATE_DAYS"]);
if ($arParams["LOG_DATE_DAYS"] <= 0)
	$arParams["LOG_DATE_DAYS"] = 7;

$arParams["EVENT_ID"] = false;
	
if (array_key_exists($arParams["EVENTS_VAR"], $_REQUEST) && strlen(trim($_REQUEST[$arParams["EVENTS_VAR"]])) > 0)
{
	$arParams["EVENT_ID"] = trim($_REQUEST[$arParams["EVENTS_VAR"]]);
	$arParams["EVENT_ID"] = explode("|", $arParams["EVENT_ID"]);
	foreach($arParams["EVENT_ID"] as $feature_id)
	{
		if ($feature_id == "blog")
		{
			$arParams["EVENT_ID"][] = "blog_post";
			$arParams["EVENT_ID"][] = "blog_comment";					
			$arParams["EVENT_ID"][] = "blog_post_micro";					
			break;					
		}
	}
	
}
else
	$arParams["EVENT_ID"] = false;

$arParams['NAME_TEMPLATE'] = $arParams['NAME_TEMPLATE'] ? $arParams['NAME_TEMPLATE'] : CSite::GetNameFormat();
$arParams["NAME_TEMPLATE"] = str_replace(
		array("#NOBR#", "#/NOBR#"), 
		array("", ""), 
		$arParams["NAME_TEMPLATE"]
	);

$bUseLogin = $arParams['SHOW_LOGIN'] != "N" ? true : false;

$arResult["RSS_TTL"] = (isset($arParams["RSS_TTL"]) && intval($arParams["RSS_TTL"]) > 0 ? $arParams["RSS_TTL"] : "60");

$bCurrentUserIsAdmin = CSocNetUser::IsCurrentUserModuleAdmin();

if (!function_exists("__RSSCheckServerName"))
{
	function __RSSCheckServerName($url, $server_name)
	{	
		$protocol = (CMain::IsHTTPS() ? "https://" : "http://");
		$result = strlen($url) > 0 && strpos($url, $protocol) !== 0 ? $protocol.$server_name.$url : $url;
		return $result;
	}
}

if(strlen($arResult["SERVER_NAME"])<=0 && defined("SITE_SERVER_NAME"))
	$arResult["SERVER_NAME"] = SITE_SERVER_NAME;

if(strlen($arResult["SERVER_NAME"])<=0 && defined("SITE_SERVER_NAME"))
{
	$rsSite = CSite::GetList(($b="sort"), ($o="asc"), array("LID" => SITE_ID));
	if($arSite = $rsSite->Fetch())
		$arResult["SERVER_NAME"] = $arSite["SERVER_NAME"];
}
		
if(strlen($arResult["SERVER_NAME"])<=0)
	$arResult["SERVER_NAME"] = COption::GetOptionString("main", "server_name", "www.bitrixsoft.com");

if ($arParams["ENTITY_TYPE"] == SONET_ENTITY_GROUP)
{
	$arGroup = CSocNetGroup::GetByID($arParams["ENTITY_ID"]);
	
	$arCurrentUserPerms = CSocNetUserToGroup::InitUserPerms($GLOBALS["USER"]->GetID(), $arGroup, $bCurrentUserIsAdmin);

	if (!$arCurrentUserPerms || !$arCurrentUserPerms["UserCanViewGroup"])
	{
		$APPLICATION->RestartBuffer();
		$arResult["NAME"] = GetMessage("SONET_LOG_RSS_ERROR");
		$arResult["Events"] = array(
						array(
							"LOG_DATE" => date("r"),
							"TITLE_FORMAT" => htmlspecialcharsbx(GetMessage("SONET_LOG_RSS_GROUP_NO_PERMS_TITLE")),
							"MESSAGE_FORMAT" => htmlspecialcharsbx(GetMessage("SONET_LOG_RSS_GROUP_NO_PERMS_MESSAGE")),
							"URL" => "",
						)
					);
		$this->IncludeComponentTemplate();
		$r = $APPLICATION->EndBufferContentMan();
		echo $r;
		die();	
	}

	if (intval($arGroup["IMAGE_ID"]) <= 0)
		$arGroup["IMAGE_ID"] = COption::GetOptionInt("socialnetwork", "default_group_picture", false, SITE_ID);

	$arResult["PICTURE"] = CSocNetTools::InitImage($arGroup["IMAGE_ID"], 100, "/bitrix/images/socialnetwork/nopic_group_100.gif", 100, "", false);
	$arResult["PICTURE"]["FILE"]["SRC"] = __RSSCheckServerName($arResult["PICTURE"]["FILE"]["SRC"], $arResult["SERVER_NAME"]);
	$arResult["NAME"] = $arGroup["NAME"];
	$arResult["DESCRIPTION"] = $arGroup["DESCRIPTION"];
	$arResult["URL"] = CComponentEngine::MakePathFromTemplate($arParams["PATH_TO_GROUP"], array("group_id" => $arParams["ENTITY_ID"]));
	$arResult["URL"] = htmlspecialcharsbx(__RSSCheckServerName($arResult["URL"], $arResult["SERVER_NAME"]));
}
else
{
	$canViewProfile = CSocNetUserPerms::CanPerformOperation($GLOBALS["USER"]->GetID(), $$arParams["ENTITY_ID"], "viewprofile", $bCurrentUserIsAdmin);

	if (!$canViewProfile)
	{
		$APPLICATION->RestartBuffer();
		$arResult["NAME"] = GetMessage("SONET_LOG_RSS_ERROR");
		$arResult["Events"] = array(
						array(
							"LOG_DATE" => date("r"),
							"TITLE_FORMAT" => htmlspecialcharsbx(GetMessage("SONET_LOG_RSS_USER_NO_PERMS_TITLE")),
							"MESSAGE_FORMAT" => htmlspecialcharsbx(GetMessage("SONET_LOG_RSS_USER_NO_PERMS_MESSAGE")),
							"URL" => "",
						)
					);
		$this->IncludeComponentTemplate();
		$r = $APPLICATION->EndBufferContentMan();
		echo $r;
		die();	
	}

	$rsUser = CUser::GetByID($arParams["ENTITY_ID"]);
	if ($arUser = $rsUser->GetNext())
	{
		if (intval($arUser["PERSONAL_PHOTO"]) <= 0)
		{
			switch ($arUser["PERSONAL_GENDER"])
			{
				case "M":
					$suffix = "male";
					break;
				case "F":
					$suffix = "female";
						break;
				default:
					$suffix = "unknown";
			}
			$arUser["PERSONAL_PHOTO"] = COption::GetOptionInt("socialnetwork", "default_user_picture_".$suffix, false, SITE_ID);
		}
		$arResult["PICTURE"] = CSocNetTools::InitImage($arUser["PERSONAL_PHOTO"], 100, "/bitrix/images/socialnetwork/nopic_user_100.gif", 100, "", false);
		$arResult["PICTURE"]["FILE"]["SRC"] = __RSSCheckServerName($arResult["PICTURE"]["FILE"]["SRC"], $arResult["SERVER_NAME"]);		
		$arResult["NAME"] = CUser::FormatName($arParams['NAME_TEMPLATE'], $arUser, $bUseLogin);
		$arResult["DESCRIPTION"] = "";
		$arResult["URL"] = CComponentEngine::MakePathFromTemplate($arParams["PATH_TO_USER"], array("user_id" => $arParams["ENTITY_ID"]));
		$arResult["URL"] = __RSSCheckServerName($arResult["URL"], $arResult["SERVER_NAME"]);
	}
}

if ($arResult["NAME"])
{
		$APPLICATION->RestartBuffer();
		header("Content-Type: text/xml; charset=".LANG_CHARSET);
		header("Pragma: no-cache");

		$arFilter["ENTITY_TYPE"] = Trim($arParams["ENTITY_TYPE"]);
		$arFilter["ENTITY_ID"] = intval($arParams["ENTITY_ID"]);

		$arFilter["EVENT_ID"] = array();
		
		if ($arParams["EVENT_ID"])
			$arFilter["EVENT_ID"] = $arParams["EVENT_ID"];
			
		if (!is_array($arFilter["EVENT_ID"]) && strlen(trim($arFilter["EVENT_ID"])) > 0)
			$arFilter["EVENT_ID"] = array($arFilter["EVENT_ID"]);
			
		foreach($arFilter["EVENT_ID"] as $i => $feature)
		{
			if ($feature == "all")
			{
				unset($arFilter["EVENT_ID"]);
				break;
			}
		}
		
		
		
		if (
			array_key_exists("ENTITY_TYPE", $arFilter) && strlen($arFilter["ENTITY_TYPE"]) > 0 
			&& array_key_exists("ENTITY_ID", $arFilter) && intval($arFilter["ENTITY_ID"]) > 0 
		)
		{
			$arFeatures = CSocNetFeatures::GetActiveFeatures($arFilter["ENTITY_TYPE"], $arFilter["ENTITY_ID"]);
			$arFeatures[] = "system";
			if (in_array("blog", $arFeatures))
			{
				$arFeatures[] = "blog_post";
				$arFeatures[] = "blog_comment";
				$arFeatures[] = "blog_post_micro";
			}
				
			if (!array_key_exists("EVENT_ID", $arFilter) || empty($arFilter["EVENT_ID"]))
			{
				$arFilter["EVENT_ID"] = array("system");
				foreach($arFeatures as $feature_id)
				{
					if ($feature_id == "blog")
					{
						$arFilter["EVENT_ID"][] = "blog_post";
						$arFilter["EVENT_ID"][] = "blog_comment";
						$arFilter["EVENT_ID"][] = "blog_post_micro";
					}
					$arFilter["EVENT_ID"][] = $feature_id;
				}
			}
			else
			{
				foreach($arFilter["EVENT_ID"] as $key => $feature_id)
				{
					if (!in_array($feature_id, array_merge($arFeatures, array("system"))))
						unset($arFilter["EVENT_ID"][$key]);
				}				
			}
		}	
		
		if ($arParams["LOG_DATE_DAYS"] > 0)
		{
			$arrAdd = array(
				"DD"	=> -($arParams["LOG_DATE_DAYS"]),
				"MM"	=> 0,
				"YYYY"	=> 0,
				"HH"	=> 0,
				"MI"	=> 0,
				"SS"	=> 0,
			);
			$stmp = AddToTimeStamp($arrAdd, time());				
			$arFilter[">=LOG_DATE"] = ConvertTimeStamp($stmp, "FULL");			
		}

		if (CModule::IncludeModule('extranet') && CExtranet::IsExtranetSite())
			$arFilter["SITE_ID"] = SITE_ID;
		else
			$arFilter["SITE_ID"] = array(SITE_ID, false);

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

		CTimeZone::Disable();
		$dbEvents = CSocNetLog::GetList(array("LOG_DATE"=>"DESC"), $arFilter, false, false, array(), array("USER_ID" => ($bCurrentUserIsAdmin ? "A" : $GLOBALS["USER"]->GetID())));
		CTimeZone::Enable();

		while ($arEvents = $dbEvents->GetNext())
		{
	
			if ($arEvents["ENTITY_TYPE"] == SONET_ENTITY_GROUP)
				$path2Entity = CComponentEngine::MakePathFromTemplate($arParams["PATH_TO_GROUP"], array("group_id" => $arEvents["ENTITY_ID"]));
			else
				$path2Entity = CComponentEngine::MakePathFromTemplate($arParams["PATH_TO_USER"], array("user_id" => $arEvents["ENTITY_ID"]));
			
			$arDateTmp = ParseDateTime($arEvents["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"].':'.$arDateTmp["SS"];

			$arEvents["MESSAGE_FORMAT"] = htmlspecialcharsback($arEvents["MESSAGE"]);
			if (StrLen($arEvents["CALLBACK_FUNC"]) > 0)
			{
				if (StrLen($arEvents["MODULE_ID"]) > 0)
					CModule::IncludeModule($arEvents["MODULE_ID"]);

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

			}
			
			if ($arEvents["EVENT_ID"] == "system" || $arEvents["EVENT_ID"] == "system_friends" || $arEvents["EVENT_ID"] == "system_groups")
			{
				$arEvents["TITLE_TEMPLATE"] = "";
				$arEvents["URL"] = "";

				switch ($arEvents["TITLE"])
				{
					case "join":
						list($titleTmp, $messageTmp) = CSocNetLog::InitUsersTmp($arEvents["MESSAGE"], GetMessage("SONET_C73_TITLE_JOIN1"), GetMessage("SONET_C73_TITLE_JOIN2"), $arParams, $bCurrentUserIsAdmin, true);

						$arEvents["TITLE"] = $titleTmp;
						$arEvents["MESSAGE_FORMAT"] = $messageTmp;

						break;
					case "unjoin":
						list($titleTmp, $messageTmp) = CSocNetLog::InitUsersTmp($arEvents["MESSAGE"], GetMessage("SONET_C73_TITLE_UNJOIN1"), GetMessage("SONET_C73_TITLE_UNJOIN2"), $arParams, $bCurrentUserIsAdmin, true);

						$arEvents["TITLE"] = $titleTmp;
						$arEvents["MESSAGE_FORMAT"] = $messageTmp;

						break;
					case "moderate":
						list($titleTmp, $messageTmp) = CSocNetLog::InitUsersTmp($arEvents["MESSAGE"], GetMessage("SONET_C73_TITLE_MODERATE1"), GetMessage("SONET_C73_TITLE_MODERATE2"), $arParams, $bCurrentUserIsAdmin, true);

						$arEvents["TITLE"] = $titleTmp;
						$arEvents["MESSAGE_FORMAT"] = $messageTmp;

						break;
					case "unmoderate":
						list($titleTmp, $messageTmp) = CSocNetLog::InitUsersTmp($arEvents["MESSAGE"], GetMessage("SONET_C73_TITLE_UNMODERATE1"), GetMessage("SONET_C73_TITLE_UNMODERATE2"), $arParams, $bCurrentUserIsAdmin, true);

						$arEvents["TITLE"] = $titleTmp;
						$arEvents["MESSAGE_FORMAT"] = $messageTmp;

						break;
					case "owner":
						list($titleTmp, $messageTmp) = CSocNetLog::InitUsersTmp($arEvents["MESSAGE"], GetMessage("SONET_C73_TITLE_OWNER1"), GetMessage("SONET_C73_TITLE_OWNER1"), $arParams, $bCurrentUserIsAdmin, true);

						$arEvents["TITLE"] = $titleTmp;
						$arEvents["MESSAGE_FORMAT"] = $messageTmp;

						break;
					case "friend":
						list($titleTmp, $messageTmp) = CSocNetLog::InitUsersTmp($arEvents["MESSAGE"], GetMessage("SONET_C73_TITLE_FRIEND1"), GetMessage("SONET_C73_TITLE_FRIEND1"), $arParams, $bCurrentUserIsAdmin, true);

						$arEvents["TITLE"] = $titleTmp;
						$arEvents["MESSAGE_FORMAT"] = $messageTmp;

						break;
					case "unfriend":
						list($titleTmp, $messageTmp) = CSocNetLog::InitUsersTmp($arEvents["MESSAGE"], GetMessage("SONET_C73_TITLE_UNFRIEND1"), GetMessage("SONET_C73_TITLE_UNFRIEND1"), $arParams, $bCurrentUserIsAdmin, true);

						$arEvents["TITLE"] = $titleTmp;
						$arEvents["MESSAGE_FORMAT"] = $messageTmp;

						break;
					case "group":
						list($titleTmp, $messageTmp) = CSocNetLog::InitGroupsTmp($arEvents["MESSAGE"], GetMessage("SONET_C73_TITLE_GROUP1"), GetMessage("SONET_C73_TITLE_GROUP1"), $arParams, true);

						$arEvents["TITLE"] = $titleTmp;
						$arEvents["MESSAGE_FORMAT"] = $messageTmp;

						break;
					case "ungroup":
						list($titleTmp, $messageTmp) = CSocNetLog::InitGroupsTmp($arEvents["MESSAGE"], GetMessage("SONET_C73_TITLE_UNGROUP1"), GetMessage("SONET_C73_TITLE_UNGROUP1"), $arParams, true);

						$arEvents["TITLE"] = $titleTmp;
						$arEvents["MESSAGE_FORMAT"] = $messageTmp;

						break;
					case "exclude_user":
						list($titleTmp, $messageTmp) = CSocNetLog::InitGroupsTmp($arEvents["MESSAGE"], GetMessage("SONET_C73_TITLE_EXCLUDE_USER1"), GetMessage("SONET_C73_TITLE_EXCLUDE_USER1"), $arParams, true);

						$arEvents["TITLE"] = $titleTmp;
						$arEvents["MESSAGE_FORMAT"] = $messageTmp;

						break;
					case "exclude_group":
						list($titleTmp, $messageTmp) = CSocNetLog::InitUsersTmp($arEvents["MESSAGE"], GetMessage("SONET_C73_TITLE_EXCLUDE_GROUP1"), GetMessage("SONET_C73_TITLE_EXCLUDE_GROUP1"), $arParams, $bCurrentUserIsAdmin, true);

						$arEvents["TITLE"] = $titleTmp;
						$arEvents["MESSAGE_FORMAT"] = $messageTmp;

						break;
					default:
						continue;
						break;
				}
			}			

			$protocol = (CMain::IsHTTPS() ? "https://" : "http://");			
			$arEvents["MESSAGE_FORMAT"] = preg_replace("#(<a\\s[^>/]*?href\\s*=\\s*)(['\"])(.+?)(\\2)#i", "\\1\\2".$protocol.$arResult["SERVER_NAME"]."\\3\\4",$arEvents["MESSAGE_FORMAT"]);
			$arEvents["MESSAGE_FORMAT"] = preg_replace("#(<img\\s[^>/]*?src\\s*=\\s*)(['\"])(.+?)(\\2)#i", "\\1\\2".$protocol.$arResult["SERVER_NAME"]."\\3\\4",$arEvents["MESSAGE_FORMAT"]);
			
			$arTmpUser = array(
				"NAME" => $arEvents["~USER_NAME"],
				"LAST_NAME" => $arEvents["~USER_LAST_NAME"],
				"SECOND_NAME" => $arEvents["~USER_SECOND_NAME"],
				"LOGIN" => $arEvents["~USER_LOGIN"]
			);
	
			$arEvents["LOG_DATE"] = date("r", MkDateTime($GLOBALS["DB"]->FormatDate($arEvents["LOG_DATE"], CLang::GetDateFormat("FULL"), "DD.MM.YYYY H:I:S"), "d.m.Y H:i:s"));	

			$arEvents["URL"] = __RSSCheckServerName($arEvents["URL"], $arResult["SERVER_NAME"]);

			$arTmpEvent = array(
				"ID" => $arEvents["ID"],
				"LOG_DATE" => $arEvents["LOG_DATE"],
				"TITLE_FORMAT" => CSocNetLog::MakeTitle($arEvents["TITLE_TEMPLATE"], $arEvents["TITLE"], "", true),
				"MESSAGE_FORMAT" => htmlspecialcharsbx($arEvents["MESSAGE_FORMAT"]),
				"URL" => htmlspecialcharsbx($arEvents["URL"]),
			);
			
			$arResult["Events"][] = $arTmpEvent;

		}

		$this->IncludeComponentTemplate();
		$r = $APPLICATION->EndBufferContentMan();
		echo $r;
		die();
}
else
{
	ShowError(GetMessage("SONET_LOG_RSS_NO_ENTITY"));
	CHTTP::SetStatus("404 Not Found");
}
?>