• Модуль: imopenlines
  • Путь к файлу: ~/bitrix/modules/imopenlines/lib/model/session.php
  • Класс: BitrixImOpenLinesModelSessionTable
  • Вызов: SessionTable::generateSearchContent
static function generateSearchContent(array $fields)
{
	$crmCaption = CrmCommon::generateSearchContent($fields['CRM_ACTIVITY_ID']);

	$userId = [];

	if ($fields['CHAT_ID'] > 0 && $fields['CLOSED'] == 'Y' && Loader::includeModule('im'))
	{
		$userId[$fields['OPERATOR_ID']] = $fields['OPERATOR_ID'];
		$userId[$fields['USER_ID']] = $fields['USER_ID'];

		$transcriptLines = [];
		$cursor = MessageTable::getList([
			'select' => ['MESSAGE', 'AUTHOR_ID'],
			'filter' => [
				'=CHAT_ID' => $fields['CHAT_ID'],
				'>=ID' => $fields['START_ID'],
				'<=ID' => $fields['END_ID'],
			],
		]);
		while ($row = $cursor->fetch())
		{
			if ($row['AUTHOR_ID'] == 0)
			{
				continue;
			}
			$userId[$row['AUTHOR_ID']] = $row['AUTHOR_ID'];
			$transcriptLines[] = $row['MESSAGE'];
		}

		$transcriptLines = implode(" ", $transcriptLines);
		$transcriptLines = ImText::removeBbCodes($transcriptLines);
		if (mb_strlen($transcriptLines) > 5000000)
		{
			$transcriptLines = mb_substr($transcriptLines, 0, 5000000);
		}
	}
	else
	{
		$transcriptLines = "";
		$userId[$fields['OPERATOR_ID']] = $fields['OPERATOR_ID'];
		$userId[$fields['USER_ID']] = $fields['USER_ID'];
	}

	$mapBuilderManager = MapBuilder::create();

	if (!empty($userId))
	{
		$mapBuilderManager->addUser($userId);
	}
	if (!empty($crmCaption))
	{
		foreach ($crmCaption as $item)
		{
			$mapBuilderManager->addText($item);
		}
	}
	if (!empty($fields['EXTRA_URL']))
	{
		$mapBuilderManager->addText($fields['EXTRA_URL']);
	}
	if (!empty($fields['ID']))
	{
		$mapBuilderManager->addInteger($fields['ID']);
		$mapBuilderManager->addText('imol|'.$fields['ID']);
	}
	if (!empty($transcriptLines))
	{
		$mapBuilderManager->addText($transcriptLines);
	}

	return $mapBuilderManager->build();
}