• Модуль: imopenlines
  • Путь к файлу: ~/bitrix/modules/imopenlines/lib/widget/dialog.php
  • Класс: BitrixImopenlinesWidgetDialog
  • Вызов: Dialog::getList
static function getList($userId, $params)
{
	$userId = (int)$userId;
	$configId = (int)$params['CONFIG_ID'];

	self::clearError();

	if (!BitrixMainLoader::includeModule('im'))
	{
		self::setError(__METHOD__, 'IM_NOT_FOUND', Loc::getMessage('IMOL_WIDGET_CONFIG_IM_NOT_FOUND'));
		return false;
	}

	$config = BitrixImopenlinesModelConfigTable::getById($configId)->fetch();
	if (!$config)
	{
		self::setError(__METHOD__, 'CONFIG_ERROR', Loc::getMessage('IMOL_WIDGET_CHAT_ERROR_CONFIG_NOT_FOUND'));
		return false;
	}

	$chatRes = BitrixImModelChatTable::getList([
		'select' => ['ID', 'ENTITY_DATA_1', 'LAST_MESSAGE_ID'],
		'filter' => [
			'=ENTITY_TYPE' => 'LIVECHAT',
			'=ENTITY_ID' => $configId . '|' . $userId
		],
		'order' => ['LAST_MESSAGE_ID' => 'DESC'],
		'limit' => $params['LIMIT'] ? (int)$params['LIMIT'] : 25,
		'offset' => $params['OFFSET'] ? (int)$params['OFFSET'] : 0,
	]);

	$dialogues = [];
	while ($chat = $chatRes->fetch())
	{
		$sessionId = explode('|', $chat['ENTITY_DATA_1'])[3];

		$dialogues[] = [
			'CHAT_ID' => (int)$chat['ID'],
			'DIALOG_ID' => 'chat' . $chat['ID'],
			'SESSION_ID' => (int)$sessionId,
		];
	}

	return $dialogues;
}