• Модуль: im
  • Путь к файлу: ~/bitrix/modules/im/classes/general/im_convert.php
  • Класс: CIMConvert
  • Вызов: CIMConvert::RecentList
static function RecentList()
{
	global $DB, $USER;

	$arRecent = CUserOptions::GetOption('im', 'recentList2', null);
	if (is_null($arRecent))
	{
		$arResult = CUserOptions::GetOption('im', 'recentList', null);
		if (!is_null($arResult))
		{
			unset($arResult[$GLOBALS['USER']->GetID()]);
			foreach ($arResult as $key => $value)
				$arRecent[IM_MESSAGE_PRIVATE][$key] = $value;
		}
		else
		{
			$arRecent = Array();
		}
	}
	if (!empty($arRecent))
	{
		if (isset($arRecent[IM_MESSAGE_PRIVATE]) && !empty($arRecent[IM_MESSAGE_PRIVATE]))
		{
			$arUsers = Array();
			$arInsert = Array();
			$CIMMessage = new CIMMessage(false, array(
				'HIDE_LINK' => 'Y'
			));
			$arMessages = $CIMMessage->GetLastSendMessage(Array(
				'TO_USER_ID' => array_keys($arRecent[IM_MESSAGE_PRIVATE]),
				'ORDER' => 'ASC',
				'LIMIT' => 30,
				'USE_TIME_ZONE' => 'N'
			));
			foreach ($arMessages as $userId => $arMessage)
			{
				$arUsers[] = $userId;
				$arInsert[$userId] = Array(
					'USER_ID' => $USER->GetId(),
					'ITEM_TYPE' => IM_MESSAGE_PRIVATE,
					'ITEM_ID' => $userId,
					'ITEM_MID' => $arMessage['id'],
				);
			}
			if (!empty($arUsers))
			{
				$strSql = "SELECT ITEM_ID FROM b_im_recent WHERE USER_ID = ".$USER->GetId()." AND ITEM_TYPE = '".IM_MESSAGE_PRIVATE."' AND ITEM_ID IN (".implode(',', $arUsers).")";
				$dbRes = $DB->Query($strSql, false, "File: ".__FILE__."
Line: ".__LINE__); while ($arRes = $dbRes->Fetch()) unset($arInsert[$arRes['ITEM_ID']]); } foreach ($arInsert as $arAdd) $DB->Add('b_im_recent', $arAdd); } $massageType = null; if(isset($arRecent[IM_MESSAGE_CHAT]) && !empty($arRecent[IM_MESSAGE_CHAT])) $massageType = IM_MESSAGE_CHAT; elseif(isset($arRecent[IM_MESSAGE_OPEN_LINE]) && !empty($arRecent[IM_MESSAGE_OPEN_LINE])) $massageType = IM_MESSAGE_OPEN_LINE; if (!empty($massageType)) { $arChats = Array(); $arInsert = Array(); $CIMChat = new CIMChat(false, array( 'HIDE_LINK' => 'Y' )); $arMessagesGroup = $CIMChat->GetLastSendMessage(Array( 'ID' => array_keys($arRecent[$massageType]), 'ORDER' => 'ASC', 'LIMIT' => 30, 'USE_TIME_ZONE' => 'N' )); foreach ($arMessagesGroup as $chatId => $arMessage) { $arChats[] = $chatId; $arInsert[$chatId] = Array( 'USER_ID' => $USER->GetId(), 'ITEM_TYPE' => $massageType, 'ITEM_ID' => $chatId, 'ITEM_MID' => $arMessage['id'], ); } if (!empty($arChats)) { $strSql = " SELECT ITEM_ID FROM b_im_recent WHERE USER_ID = ".$USER->GetId()." AND ITEM_TYPE = '".$massageType."' AND ITEM_ID IN (".implode(',', $arChats).") "; $dbRes = $DB->Query($strSql, false, "File: ".__FILE__."
Line: ".__LINE__); while ($arRes = $dbRes->Fetch()) unset($arInsert[$arRes['ITEM_ID']]); } foreach ($arInsert as $arAdd) $DB->Add('b_im_recent', $arAdd); } CUserOptions::SetOption('im', 'recentList2', Array()); } else { CUserOptions::SetOption('im', 'recentList2', Array()); } return true; }