• Модуль: disk
  • Путь к файлу: ~/bitrix/modules/disk/lib/volume/module/im.php
  • Класс: BitrixDiskVolumeModuleIm
  • Вызов: Im::getFragment
static function getFragment(array $filter): VolumeFragment
{
	if ($filter['INDICATOR_TYPE'] == VolumeFolder::className() || $filter['INDICATOR_TYPE'] == VolumeFolderTree::className())
	{
		if (BitrixMainLoader::includeModule(self::getModuleId()))
		{
			$chatList = BitrixImModelChatTable::getList([
				'select' => ['ID'],
				'filter' => ['=DISK_FOLDER_ID' => $filter['FOLDER_ID']]
			]);
			if ($chat = $chatList->fetch())
			{
				$chatId = $chat['ID'];

				// Chat specific
				$chatData = CIMChat::getChatData(['ID' => $chatId, 'PHOTO_SIZE' => 50]);
				if ($chatData && isset($chatData['chat'], $chatData['chat'][$chatId]))
				{
					if ($chatData['chat'][$chatId]['avatar'] === '/bitrix/js/im/images/blank.gif')
					{
						$chatData['chat'][$chatId]['avatar'] = '';
					}
					if ($chatData['chat'][$chatId]['owner'] > 0)
					{
						$chatOwner = BitrixImUser::getInstance($chatData['chat'][$chatId]['owner']);
						if ($chatOwner instanceof BitrixImUser)
						{
							$chatData['chat'][$chatId]['owner_name'] = $chatOwner->getFullName();

							if ($chatOwner->isActive() !== true)
							{
								// user fired
								Loc::loadMessages(__DIR__.'/socialnetwork.php');

								if ($chatOwner->getGender() === 'F')
								{
									$chatData['chat'][$chatId]['owner_name'] = Loc::getMessage(
										'DISK_VOLUME_MODULE_SONET_FIRED_F',
										['#USER_NAME#' => $chatData['chat'][$chatId]['owner_name']]
									);
								}
								else
								{
									$chatData['chat'][$chatId]['owner_name'] = Loc::getMessage(
										'DISK_VOLUME_MODULE_SONET_FIRED_M',
										['#USER_NAME#' => $chatData['chat'][$chatId]['owner_name']]
									);
								}
							}
						}
					}
					$filter['SPECIFIC'] = [
						'chat' => $chatData['chat'][$chatId],
					];
					if (is_array($chatData['userInChat'][$chatId]))
					{
						$filter['SPECIFIC']['userInChat'] = $chatData['userInChat'][$chatId];
						$filter['SPECIFIC']['userCount'] = count($chatData['userInChat'][$chatId]);
					}
				}
			}
		}

		return new VolumeFragment($filter);
	}
	return parent::getFragment($filter);
}