• Модуль: socialnetwork
  • Путь к файлу: ~/bitrix/modules/socialnetwork/lib/livefeed/forumpost.php
  • Класс: BitrixSocialnetworkLivefeedForumPost
  • Вызов: ForumPost::warmUpAuxCommentsStaticCache
public function warmUpAuxCommentsStaticCache(array $params = []): void
{
	if (!Loader::includeModule('forum'))
	{
		return;
	}

	$logEventsData = (isset($params['logEventsData']) && is_array($params['logEventsData']) ? $params['logEventsData'] : []);

	$forumCommentEventIdList = $this->getEventId();

	$logIdList = [];
	foreach($logEventsData as $logId => $logEventId)
	{
		$commentEvent = CSocNetLogTools::findLogCommentEventByLogEventID($logEventId);
		if (empty($commentEvent['EVENT_ID']))
		{
			continue;
		}

		if (in_array($commentEvent['EVENT_ID'], $forumCommentEventIdList, true))
		{
			$logIdList[] = $logId;
		}
	}

	if (!empty($logIdList))
	{
		$query = MessageTable::query();
		$query->setSelect([ 'ID', 'POST_MESSAGE', 'SERVICE_DATA', 'SERVICE_TYPE' ]);
		$query->whereIn('SERVICE_TYPE', Manager::getTypesList());
		$query->registerRuntimeField(
			new Reference(
				'LOG_COMMENT', LogCommentTable::class, Join::on('this.ID', 'ref.SOURCE_ID'), [ 'join_type' => 'INNER' ]
			)
		);
		$query->whereIn('LOG_COMMENT.LOG_ID', $logIdList);
		$query->setLimit(1000);

		$messages = $query->exec()->fetchCollection();
		while ($message = $messages->current())
		{
			$messageFields = $message->collectValues();
			self::$auxCommentsCache[$messageFields['ID']] = $messageFields;
			$messages->next();
		}
	}
}