- Модуль: 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();
}
}
}