• Модуль: landing
  • Путь к файлу: ~/bitrix/modules/landing/lib/note/source/livefeed.php
  • Класс: BitrixLandingNoteSourceLiveFeed
  • Вызов: LiveFeed::getData
static function getData(int $sourceId): ?array
{
	if (
		BitrixMainLoader::includeModule('socialnetwork') &&
		BitrixMainLoader::includeModule('forum')
	)
	{
		$provider = SonetLivefeedProvider::init([
			'ENTITY_TYPE' => 'FORUM_POST',
			'ENTITY_ID' => $sourceId,
			'CLONE_DISK_OBJECTS' => false
		]);
		if (!$provider || !$provider->getSourceTitle())
		{
			return null;
		}
		$res = MessageTable::getList([
			'select' => [
				'POST_MESSAGE',
				'TOPIC_TITLE' => 'TOPIC.TITLE'
			],
			'filter' => [
				'ID' => $sourceId,
				'=APPROVED' => 'Y'
			],
			'limit' => 1
		]);
		if ($comment = $res->fetch())
		{
			$title = $provider->getSourceTitle();
			$title = preg_replace('/[[^]]+]/is', '', $title);
			$params = [];
			$blocks = [[
				'type' => 'header',
				'content' => $title
			]];
			if (BitrixMainLoader::includeModule('disk'))
			{
				$params = [
					'files' => self::getDiskFiles(
						$sourceId,
						BitrixDiskUfForumMessageConnector::class,
						'forum'
					)
				];
			}
			$blocks = array_merge(
				$blocks,
				Parser::textToBlocks($comment['POST_MESSAGE'], $params)
			);
			return [
				'TITLE' => truncateText($title, self::TITLE_LENGTH),
				'BLOCKS' => $blocks
			];
		}
	}

	return null;
}