Your IP : 52.14.163.169


Current Path : /home/bitrix/ext_www/ballu.in.ua/bitrix/components/bitrix/socialnetwork.messages_chat/
Upload File :
Current File : /home/bitrix/ext_www/ballu.in.ua/bitrix/components/bitrix/socialnetwork.messages_chat/component.php

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

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

$arParams["USER_ID"] = IntVal($arParams["USER_ID"]);
$arParams["GROUP_ID"] = intval($arParams["GROUP_ID"]);

if (strLen($arParams["USER_VAR"]) <= 0)
	$arParams["USER_VAR"] = "user_id";
if (strLen($arParams["PAGE_VAR"]) <= 0)
	$arParams["PAGE_VAR"] = "page";
if(strLen($arParams["GROUP_VAR"])<=0)
	$arParams["GROUP_VAR"] = "group_id";

$arParams["PATH_TO_USER"] = trim($arParams["PATH_TO_USER"]);
if (strlen($arParams["PATH_TO_USER"]) <= 0)
	$arParams["PATH_TO_USER"] = htmlspecialchars($APPLICATION->GetCurPage()."?".$arParams["PAGE_VAR"]."=user&".$arParams["USER_VAR"]."=#user_id#");

$arParams["PATH_TO_GROUP"] = trim($arParams["PATH_TO_GROUP"]);
if (strlen($arParams["PATH_TO_GROUP"]) <= 0)
	$arParams["PATH_TO_GROUP"] = htmlspecialchars($APPLICATION->GetCurPage()."?".$arParams["PAGE_VAR"]."=group&".$arParams["GROUP_VAR"]."=#group_id#");

$arParams["PATH_TO_MESSAGES_CHAT"] = trim($arParams["PATH_TO_MESSAGES_CHAT"]);
if (strlen($arParams["PATH_TO_MESSAGES_CHAT"]) <= 0)
	$arParams["PATH_TO_MESSAGES_CHAT"] = htmlspecialchars($APPLICATION->GetCurPage()."?".$arParams["PAGE_VAR"]."=messages_chat&".$arParams["USER_VAR"]."=#user_id#");

$arParams["PATH_TO_MESSAGE_FORM_MESS"] = trim($arParams["PATH_TO_MESSAGE_FORM_MESS"]);
if (strlen($arParams["PATH_TO_MESSAGE_FORM_MESS"]) <= 0)
	$arParams["PATH_TO_MESSAGE_FORM_MESS"] = htmlspecialchars($APPLICATION->GetCurPage()."?".$arParams["PAGE_VAR"]."=messages_chat&".$arParams["USER_VAR"]."=#user_id#&".$arParams["MESSAGE_VAR"]."=#message_id#");
	
$arParams["PATH_TO_VIDEO_CALL"] = trim($arParams["PATH_TO_VIDEO_CALL"]);
if (strlen($arParams["PATH_TO_VIDEO_CALL"]) <= 0)
	$arParams["PATH_TO_VIDEO_CALL"] = htmlspecialchars($APPLICATION->GetCurPage()."?".$arParams["PAGE_VAR"]."=video_call&".$arParams["USER_VAR"]."=#user_id#");
	
$arParams["PATH_TO_SMILE"] = trim($arParams["PATH_TO_SMILE"]);

$arParams["MESSAGES_COUNT"] = IntVal($arParams["MESSAGES_COUNT"]);
if ($arParams["MESSAGES_COUNT"] <= 0)
	$arParams["MESSAGES_COUNT"] = 20;

if (strlen($arParams["NAME_TEMPLATE"]) <= 0)		
	$arParams["NAME_TEMPLATE"] = '#NOBR##NAME# #LAST_NAME##/NOBR#';
$bUseLogin = $arParams['SHOW_LOGIN'] != "N" ? true : false;

if (!$GLOBALS["USER"]->IsAuthorized())
	$arResult["NEED_AUTH"] = "Y";
else
{
	$arResult["FatalError"] = "";
	$arResult["Users"] = false;

	$dbUser = CUser::GetByID($USER->GetID());
	$arResult["UserSelf"] = $dbUser->GetNext();

	$arTmpUser = array(
			'NAME' => $arResult["UserSelf"]["~NAME"],
			'LAST_NAME' => $arResult["UserSelf"]["~LAST_NAME"],
			'SECOND_NAME' => $arResult["UserSelf"]["~SECOND_NAME"],
			'LOGIN' => $arResult["UserSelf"]["~LOGIN"],
		);

	$arResult["UserSelf"]["NAME_FORMATTED"] = CUser::FormatName($arParams['NAME_TEMPLATE'], $arTmpUser, $bUseLogin);	

	if($arParams["GROUP_ID"] > 0)
	{
		//group message part
		
		$arGroup = CSocNetGroup::GetByID($arParams["GROUP_ID"]);
		
		if (!$arGroup || !is_array($arGroup) || $arGroup["ACTIVE"] != "Y" || $arGroup["SITE_ID"] != SITE_ID)
		{
			$arResult["FatalError"] = GetMessage("SONET_CHAT_GROUP_NOT_FOUND");
		}
		else
		{
		
			$arResult["Group"] = $arGroup;
		
			$arResult["CurrentUserPerms"] = CSocNetUserToGroup::InitUserPerms($GLOBALS["USER"]->GetID(), $arResult["Group"], CSocNetUser::IsCurrentUserModuleAdmin());
			
			if (!$arResult["CurrentUserPerms"] || !$arResult["CurrentUserPerms"]["UserCanViewGroup"] || !$arResult["CurrentUserPerms"]["UserCanSpamGroup"])
			{
				$arResult["FatalError"] = GetMessage("SONET_CHAT_GROUP_ACESS");
			}
			else
			{
				$arResult["Urls"]["Group"] = CComponentEngine::MakePathFromTemplate($arParams["PATH_TO_GROUP"], array("group_id" => $arResult["Group"]["ID"]));
		
				if ($arParams["SET_TITLE"]=="Y")
					$APPLICATION->SetTitle($arResult["Group"]["NAME"].": ".GetMessage("SONET_CHAT_GROUP_TITLE"));

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

				$arImage = CSocNetTools::InitImage($arResult["Group"]["IMAGE_ID"], 50, "/bitrix/images/socialnetwork/nopic_group_50.gif", 50, $arResult["Urls"]["Group"], true, 'target="_blank"');
				$arResult["Group"]["IMAGE_ID_FILE"] = $arImage["FILE"];
				$arResult["Group"]["IMAGE_ID_IMG"] = $arImage["IMG"];

				$dbRequests = CSocNetUserToGroup::GetList(
					array("USER_LAST_NAME" => "ASC", "USER_NAME" => "ASC"),
					array(
						"GROUP_ID" => $arResult["Group"]["ID"],
						"<=ROLE" => SONET_ROLES_USER
					),
					false,
					false,
					array("ID", "USER_ID", "ROLE", "DATE_CREATE", "DATE_UPDATE", "USER_NAME", "USER_LAST_NAME", "USER_SECOND_NAME", "USER_LOGIN", "USER_PERSONAL_PHOTO", "USER_PERSONAL_GENDER")
				);
				if ($dbRequests)
				{
					$arResult["Users"] = array();
					$arResult["Users"]["List"] = false;
					while ($arRequests = $dbRequests->GetNext())
					{
						if($arResult["UserSelf"]["ID"] == $arRequests["USER_ID"])
							continue;
						
						if ($arResult["Users"]["List"] == false)
							$arResult["Users"]["List"] = array();
		
						$pu = CComponentEngine::MakePathFromTemplate($arParams["PATH_TO_USER"], array("user_id" => $arRequests["USER_ID"]));
						$canViewProfile = CSocNetUserPerms::CanPerformOperation($GLOBALS["USER"]->GetID(), $arRequests["USER_ID"], "viewprofile", CSocNetUser::IsCurrentUserModuleAdmin());
		
//						$arImage = CSocNetTools::InitImage($arRequests["USER_PERSONAL_PHOTO"], 50, "/bitrix/images/socialnetwork/nopic_user_50.gif", 50, $pu, $canViewProfile);

						$arTmpUser = array(
							"NAME" => htmlspecialcharsback($arRequests["USER_NAME"]),
							"LAST_NAME" => htmlspecialcharsback($arRequests["USER_LAST_NAME"]),
							"SECOND_NAME" => htmlspecialcharsback($arRequests["USER_SECOND_NAME"]),
							"LOGIN" => htmlspecialcharsback($arRequests["USER_LOGIN"])
						);
						$strNameFormatted = CUser::FormatName($arParams['NAME_TEMPLATE'], $arTmpUser, $bUseLogin);	
		
						$arResult["Users"]["List"][] = array(
							"ID" => $arRequests["ID"],
							"USER_ID" => $arRequests["USER_ID"],
							"USER_NAME" => $arRequests["USER_NAME"],
							"USER_LAST_NAME" => $arRequests["USER_LAST_NAME"],
							"USER_SECOND_NAME" => $arRequests["USER_SECOND_NAME"],
							"USER_LOGIN" => $arRequests["USER_LOGIN"],
							"USER_NAME_FORMATTED" => $strNameFormatted,
//							"USER_PERSONAL_PHOTO" => $arRequests["USER_PERSONAL_PHOTO"],
//							"USER_PERSONAL_PHOTO_FILE" => $arImage["FILE"],
//							"USER_PERSONAL_PHOTO_IMG" => $arImage["IMG"],
							"USER_PROFILE_URL" => $pu,
							"SHOW_PROFILE_LINK" => $canViewProfile,
							"PATH_TO_MESSAGES_CHAT" => str_replace("#user_id#", $arRequests["USER_ID"], $arParams["PATH_TO_MESSAGES_CHAT"]),
							"IS_ONLINE" => CSocNetUser::IsOnLine($arRequests["USER_ID"]),
							"IS_MODERATOR" => ($arRequests["ROLE"] != SONET_ROLES_USER)
						);
					}
				}
			}
		}
	}
	else
	{
		//user message part
		
		if  (CModule::IncludeModule('extranet') && !CExtranet::IsProfileViewableByID($arParams["USER_ID"]) && $arParams["USER_ID"] != $USER->GetID())
		{
			$dbMessages = CSocNetMessages::GetList(
					array(),
					array(
						"FROM_USER_ID" => $arParams["USER_ID"],
						"TO_USER_ID" => $USER->GetID(),                        
						"MESSAGE_TYPE" => SONET_MESSAGE_PRIVATE
					),
					false,
					array("nTopCount" => 1),
					array("ID")
				);
				if (!$dbMessages->Fetch())
					$arResult["FatalError"] = GetMessage("SONET_P_USER_NO_USER").". ";
		}

		if (StrLen($arResult["FatalError"]) <= 0)
		{
			$dbUser = CUser::GetByID($arParams["USER_ID"]);
			$arResult["User"] = $dbUser->GetNext();

			$arTmpUser = array(
					'NAME' => $arResult["User"]["~NAME"],
					'LAST_NAME' => $arResult["User"]["~LAST_NAME"],
					'SECOND_NAME' => $arResult["User"]["~SECOND_NAME"],
					'LOGIN' => $arResult["User"]["~LOGIN"],
				);
		
			if (!is_array($arResult["User"]))
				$arResult["FatalError"] = GetMessage("SONET_P_USER_NO_USER").". ";
		}
		
		if (StrLen($arResult["FatalError"]) <= 0)
		{
			if ($arParams["SET_TITLE"]=="Y")
			{
				$arParams["TITLE_NAME_TEMPLATE"] = str_replace(
					array("#NOBR#", "#/NOBR#"), 
					array("", ""), 
					$arParams["NAME_TEMPLATE"]
				);
				$strTitleFormatted = CUser::FormatName($arParams['TITLE_NAME_TEMPLATE'], $arTmpUser, $bUseLogin);
				$APPLICATION->SetTitle($strTitleFormatted.": ".GetMessage("SONET_C50_PAGE_TITLE"));
			}
			
			$arResult["User"]["NAME_FORMATTED"] = CUser::FormatName($arParams['NAME_TEMPLATE'], $arTmpUser, $bUseLogin);
	
			$arResult["CurrentUserPerms"] = CSocNetUserPerms::InitUserPerms($GLOBALS["USER"]->GetID(), $arResult["User"]["ID"], CSocNetUser::IsCurrentUserModuleAdmin());
	
			if ($arResult["CurrentUserPerms"]["IsCurrentUser"])
				$arResult["FatalError"] = GetMessage("SONET_C50_SELF").". ";
	
			if (!$arResult["CurrentUserPerms"]["Operations"]["message"])
				$arResult["FatalError"] = GetMessage("SONET_C50_NO_PERMS").". ";
		}
	
		if (StrLen($arResult["FatalError"]) <= 0)
		{
			$arResult["Urls"]["User"] = CComponentEngine::MakePathFromTemplate($arParams["PATH_TO_USER"], array("user_id" => $arResult["User"]["ID"]));
			$arResult["Urls"]["UserMessages"] = CComponentEngine::MakePathFromTemplate($arParams["PATH_TO_MESSAGES_USERS_MESSAGES"], array("user_id" => $arResult["User"]["ID"]));
			
			$arResult["Urls"]["VideoCall"] = CComponentEngine::MakePathFromTemplate($arParams["PATH_TO_VIDEO_CALL"], array("user_id" => $arResult["User"]["ID"]));
			
			if(!CModule::IncludeModule("video"))
				$arResult["CurrentUserPerms"]["Operations"]["videocall"] = false;
	
			$arResult["IS_ONLINE"] = CSocNetUser::IsOnLine($arResult["User"]["ID"]);
	
			if ($arResult["User"]['PERSONAL_BIRTHDAY'] <> '')
			{
				$arBirthDate = ParseDateTime($arResult["User"]['PERSONAL_BIRTHDAY'], CSite::GetDateFormat('SHORT'));
				$arResult['IS_BIRTHDAY'] = (intval($arBirthDate['MM']) == date('n') && intval($arBirthDate['DD']) == date('j'));
			}
			
			if(CModule::IncludeModule('intranet'))
			{
				$arResult['IS_FEATURED'] = CIntranetUtils::IsUserHonoured($arResult["User"]['ID']);
				$arResult['IS_ABSENT'] = CIntranetUtils::IsUserAbsent($arResult["User"]['ID']);
			}

			if (intval($arResult["User"]["PERSONAL_PHOTO"]) <= 0)
			{
				switch ($arResult["User"]["PERSONAL_GENDER"])
				{
					case "M":
						$suffix = "male";
						break;
					case "F":
						$suffix = "female";
							break;
					default:
						$suffix = "unknown";
				}
				$arResult["User"]["PERSONAL_PHOTO"] = COption::GetOptionInt("socialnetwork", "default_user_picture_".$suffix, false, SITE_ID);
			}
			$arImage = CSocNetTools::InitImage($arResult["User"]["PERSONAL_PHOTO"], 50, "/bitrix/images/socialnetwork/nopic_user_50.gif", 50, $arResult["CurrentUserPerms"]["Operations"]["viewprofile"] ? $arResult["Urls"]["User"] : "", true, 'target="_blank"');
	
			$arResult["User"]["PersonalPhotoFile"] = $arImage["FILE"];
			$arResult["User"]["PersonalPhotoImg"] = $arImage["IMG"];
	
			$arResult["ChatLastDate"] = CSocNetMessages::GetChatLastDate($GLOBALS["USER"]->GetID(), $arResult["User"]["ID"]);
			$arResult["REPLY_MESSAGE_ID"] = intval($arParams["MESSAGE_ID"]);
		}
	}
	//common part
	if (StrLen($arResult["FatalError"]) <= 0)
	{
		//intranet structure
		$arResult["Structure"] = false;
		if(IsModuleInstalled('intranet') && CModule::IncludeModule('iblock') && (!CModule::IncludeModule('extranet') || !CExtranet::IsExtranetSite()))
		{
			if(($iblock_id = COption::GetOptionInt('intranet', 'iblock_structure', 0)) > 0)
			{
				$arResult["Structure"] = array();
				$sec = CIBlockSection::GetList(Array("left_margin"=>"asc","SORT"=>"ASC"), Array("ACTIVE"=>"Y","CNT_ACTIVE"=>"Y","IBLOCK_ID"=>$iblock_id), true);
				while($ar = $sec->GetNext())
					$arResult["Structure"][] = $ar;
					
				//get users in the structure
				$arResult["UsersInStructure"] = array();
				$arFilter = array('ACTIVE' => 'Y');
				$obUser = new CUser();
				$dbUsers = $obUser->GetList(($sort_by = 'last_name'), ($sort_dir = 'asc'), $arFilter, array('SELECT' => array('UF_*')));
				while ($arUser = $dbUsers->GetNext())
				{
					if($arResult["UserSelf"]["ID"] == $arUser["ID"])
						continue;
	
					$pu = CComponentEngine::MakePathFromTemplate($arParams["PATH_TO_USER"], array("user_id" => $arUser["ID"]));
					$canViewProfile = CSocNetUserPerms::CanPerformOperation($GLOBALS["USER"]->GetID(), $arUser["ID"], "viewprofile", CSocNetUser::IsCurrentUserModuleAdmin());

					$arTmpUser = array(
						"NAME" => $arUser["~NAME"],
						"LAST_NAME" => $arUser["~LAST_NAME"],
						"SECOND_NAME" => $arUser["~SECOND_NAME"],
						"LOGIN" => $arUser["~LOGIN"],
					);

					$strNameFormatted = CUser::FormatName($arParams['NAME_TEMPLATE'], $arTmpUser, $bUseLogin);		
					
					$arStructureUser = array(
						"USER_ID" => $arUser["ID"],
						"USER_NAME" => $arUser["NAME"],
						"USER_LAST_NAME" => $arUser["LAST_NAME"],
						"USER_SECOND_NAME" => $arUser["SECOND_NAME"],
						"USER_LOGIN" => $arUser["LOGIN"],
						"USER_NAME_FORMATTED" => $strNameFormatted,
						"USER_PROFILE_URL" => $pu,
						"SHOW_PROFILE_LINK" => $canViewProfile,
						"PATH_TO_MESSAGES_CHAT" => str_replace("#user_id#", $arUser["ID"], $arParams["PATH_TO_MESSAGES_CHAT"]),
						"IS_ONLINE" => CSocNetUser::IsOnLine($arUser["ID"]),
					);
					if(is_array($arUser["UF_DEPARTMENT"]) && !empty($arUser["UF_DEPARTMENT"]))
					{
						foreach($arUser["UF_DEPARTMENT"] as $dep_id)
							$arResult["UsersInStructure"][$dep_id][] = $arStructureUser;
					}
					else
						$arResult["UsersInStructure"]["others"][] = $arStructureUser;
				}
			}
		}

		//Friends
		$arResult["Friends"] = false;
		if (CSocNetUser::IsFriendsAllowed() && (!CModule::IncludeModule('extranet') || !CExtranet::IsExtranetSite()))
		{
			$dbFriends = CSocNetUserRelations::GetRelatedUsers($arResult["UserSelf"]["ID"], SONET_RELATIONS_FRIEND);
			if ($dbFriends)
			{
				$arResult["Friends"] = array();
				while ($arFriends = $dbFriends->GetNext())
				{
					$pref = ((IntVal($arResult["UserSelf"]["ID"]) == $arFriends["FIRST_USER_ID"]) ? "SECOND" : "FIRST");
					$pu = CComponentEngine::MakePathFromTemplate($arParams["PATH_TO_USER"], array("user_id" => $arFriends[$pref."_USER_ID"]));
					$canViewProfile = CSocNetUserPerms::CanPerformOperation($arResult["UserSelf"]["ID"], $arFriends[$pref."_USER_ID"], "viewprofile", CSocNetUser::IsCurrentUserModuleAdmin());

					$arTmpUser = array(
						"NAME" => $arFriends["~".$pref."_USER_NAME"],
						"LAST_NAME" => $arFriends["~".$pref."_USER_LAST_NAME"],
						"SECOND_NAME" => $arFriends["~".$pref."_USER_SECOND_NAME"],
						"LOGIN" => $arFriends["~".$pref."_USER_LOGIN"]
					);
					$strNameFormatted = CUser::FormatName($arParams['NAME_TEMPLATE'], $arTmpUser, $bUseLogin);	
					
					$arResult["Friends"][] = array(
						"USER_ID" => $arFriends[$pref."_USER_ID"],
						"USER_NAME" => $arFriends[$pref."_USER_NAME"],
						"USER_LAST_NAME" => $arFriends[$pref."_USER_LAST_NAME"],
						"USER_SECOND_NAME" => $arFriends[$pref."_USER_SECOND_NAME"],
						"USER_LOGIN" => $arFriends[$pref."_USER_LOGIN"],
						"USER_NAME_FORMATTED" => $strNameFormatted,
						"USER_PROFILE_URL" => $pu,
						"SHOW_PROFILE_LINK" => $canViewProfile,
						"PATH_TO_MESSAGES_CHAT" => str_replace("#user_id#", $arFriends[$pref."_USER_ID"], $arParams["PATH_TO_MESSAGES_CHAT"]),
						"IS_ONLINE" => CSocNetUser::IsOnLine($arFriends[$pref."_USER_ID"]),
					);
				}
			}
		}
		elseif (CModule::IncludeModule('extranet') && CExtranet::IsExtranetSite())
		{
			$arResult["Friends"] = array();

			$arUsersInListID = array();

			$arMyGroupsUsers = CExtranet::GetMyGroupsUsersFull(SITE_ID, true);
			foreach ($arMyGroupsUsers as $arUser)
			{
				$pu = CComponentEngine::MakePathFromTemplate($arParams["PATH_TO_USER"], array("user_id" => $arUser["ID"]));
				$canViewProfile = CSocNetUserPerms::CanPerformOperation($arResult["UserSelf"]["ID"], $arUser["ID"], "viewprofile", CSocNetUser::IsCurrentUserModuleAdmin());

				$strNameFormatted = CUser::FormatName($arParams['NAME_TEMPLATE'], $arUser, $bUseLogin);
				
				$arResult["Friends"][] = array(
					"USER_ID" =>  $arUser["ID"],
					"USER_NAME" =>  $arUser["NAME"],
					"USER_LAST_NAME" =>  $arUser["LAST_NAME"],
					"USER_SECOND_NAME" =>  $arUser["SECOND_NAME"],
					"USER_LOGIN" =>  $arUser["LOGIN"],
					"USER_NAME_FORMATTED" =>  $strNameFormatted,
					"USER_PROFILE_URL" => $pu,
					"SHOW_PROFILE_LINK" => $canViewProfile,
					"PATH_TO_MESSAGES_CHAT" => str_replace("#user_id#",  $arUser["ID"], $arParams["PATH_TO_MESSAGES_CHAT"]),
					"IS_ONLINE" => CSocNetUser::IsOnLine($arUser["ID"]),
				);
				$arUsersInListID[] = $arUser["ID"];
				
			}

			$arPublicUsers = CExtranet::GetPublicUsers(true);
			foreach ($arPublicUsers as $arUser)
			{
				if (in_array($arUser["ID"], $arUsersInListID))
					continue;

				$pu = CComponentEngine::MakePathFromTemplate($arParams["PATH_TO_USER"], array("user_id" => $arUser["ID"]));
				$canViewProfile = CSocNetUserPerms::CanPerformOperation($arResult["UserSelf"]["ID"], $arUser["ID"], "viewprofile", CSocNetUser::IsCurrentUserModuleAdmin());
				
				$strNameFormatted = CUser::FormatName($arParams['NAME_TEMPLATE'], $arUser, $bUseLogin);					

				$arResult["Friends"][] = array(
					"USER_ID" =>  $arUser["ID"],
					"USER_NAME" =>  $arUser["NAME"],
					"USER_LAST_NAME" =>  $arUser["LAST_NAME"],
					"USER_SECOND_NAME" =>  $arUser["SECOND_NAME"],
					"USER_LOGIN" =>  $arUser["LOGIN"],
					"USER_NAME_FORMATTED" =>  $strNameFormatted,
					"USER_PROFILE_URL" => $pu,
					"SHOW_PROFILE_LINK" => $canViewProfile,
					"PATH_TO_MESSAGES_CHAT" => str_replace("#user_id#",  $arUser["ID"], $arParams["PATH_TO_MESSAGES_CHAT"]),
					"IS_ONLINE" => CSocNetUser::IsOnLine($arUser["ID"]),
				);
				
			}

		}
		
		//Recent users
		$arResult["RecentUsers"] = array();
		$arNavParams = array("nPageSize" => 20, "bDescPageNumbering" => false);
		$dbMessages = CSocNetMessages::GetMessagesUsers($GLOBALS["USER"]->GetID(), $arNavParams);
		while ($arMessages = $dbMessages->GetNext())
		{
			$pu = CComponentEngine::MakePathFromTemplate($arParams["PATH_TO_USER"], array("user_id" => $arMessages["ID"]));
			$canViewProfile = CSocNetUserPerms::CanPerformOperation($GLOBALS["USER"]->GetID(), $arMessages["ID"], "viewprofile", CSocNetUser::IsCurrentUserModuleAdmin());
			
			$arTmpUser = array(
				"NAME" => $arMessages["~NAME"],
				"LAST_NAME" => $arMessages["~LAST_NAME"],
				"SECOND_NAME" => $arMessages["~SECOND_NAME"],
				"LOGIN" => $arMessages["~LOGIN"]
			);
			$strNameFormatted = CUser::FormatName($arParams['NAME_TEMPLATE'], $arTmpUser, $bUseLogin);
			
			$arResult["RecentUsers"][] = array(
				"USER_ID" => $arMessages["ID"],
				"USER_NAME" => $arMessages["NAME"],
				"USER_LAST_NAME" => $arMessages["LAST_NAME"],
				"USER_SECOND_NAME" => $arMessages["SECOND_NAME"],
				"USER_LOGIN" => $arMessages["LOGIN"],
				"USER_NAME_FORMATTED" => $strNameFormatted,
				"USER_PROFILE_URL" => $pu,
				"SHOW_PROFILE_LINK" => $canViewProfile,
				"PATH_TO_MESSAGES_CHAT" => str_replace("#user_id#", $arMessages["ID"], $arParams["PATH_TO_MESSAGES_CHAT"]),
				"IS_ONLINE" => CSocNetUser::IsOnLine($arMessages["ID"]),
			);
		}

		$arResult["PrintSmilesList"] = CSocNetSmile::PrintSmilesList(0, LANGUAGE_ID, $arParams["PATH_TO_SMILE"]);
		$arResult["Now"] = CSocNetMessages::Now();
			
		//user options
		require_once($_SERVER["DOCUMENT_ROOT"].BX_ROOT."/modules/main/classes/".strtolower($GLOBALS['DB']->type)."/favorites.php");
		$arResult["USER_OPTIONS"] = CUserOptions::GetOption('socnet', 'chat', array());
		if($arResult["USER_OPTIONS"]["sound"] <> "N")
			$arResult["USER_OPTIONS"]["sound"] = "Y";
		if($arResult["USER_OPTIONS"]["contacts"] <> "Y")
			$arResult["USER_OPTIONS"]["contacts"] = "N";
		$arResult["USER_OPTIONS"]["contacts_width"] = intval($arResult["USER_OPTIONS"]["contacts_width"]);

		$dirPath = '/bitrix/components/bitrix/socialnetwork.messages_chat';
		$arResult["MsgAddPath"] = $dirPath."/add_message.php";
		$arResult["MsgGetPath"] = $dirPath."/get_message.php";
	}
}
$this->IncludeComponentTemplate();
?>