- Модуль: socialnetwork
- Путь к файлу: ~/bitrix/modules/socialnetwork/lib/livefeed/forumpost.php
- Класс: BitrixSocialnetworkLivefeedForumPost
- Вызов: ForumPost::initSourceFields
public function initSourceFields(): void
{
$messageId = $this->entityId;
if (
$messageId <= 0
|| !Loader::includeModule('forum')
)
{
return;
}
$res = MessageTable::getList([
'filter' => [
'=ID' => $messageId
],
'select' => [ 'ID', 'POST_MESSAGE', 'SERVICE_TYPE', 'SERVICE_DATA', 'POST_DATE', 'AUTHOR_ID', 'TOPIC_ID' ]
]);
$message = $res->fetch();
if (!$message)
{
return;
}
$auxData = [
'SHARE_DEST' => $message['SERVICE_DATA'],
'SOURCE_ID' => $messageId,
];
$logId = false;
$res = LogCommentTable::getList([
'filter' => [
'SOURCE_ID' => $messageId,
'@EVENT_ID' => $this->getEventId(),
],
'select' => ['ID', 'LOG_ID', 'SHARE_DEST', 'MESSAGE', 'EVENT_ID', 'RATING_TYPE_ID']
]);
if ($logComentFields = $res->fetch())
{
$logId = (int)$logComentFields['LOG_ID'];
$auxData['ID'] = (int)$logComentFields['ID'];
$auxData['LOG_ID'] = $logId;
}
$this->setSourceDescription($message['POST_MESSAGE']);
$title = htmlspecialcharsback($message['POST_MESSAGE']);
$title = BitrixSocialnetworkHelperMention::clear($title);
$CBXSanitizer = new CBXSanitizer;
$CBXSanitizer->delAllTags();
$title = preg_replace(
[
"/n+/is".BX_UTF_PCRE_MODIFIER,
"/s+/is".BX_UTF_PCRE_MODIFIER
],
' ',
CTextParser::clearAllTags($title)
);
$this->setSourceTitle(truncateText($title, 100));
$this->setSourceAttachedDiskObjects($this->getAttachedDiskObjects($this->cloneDiskObjects));
$this->setSourceDiskObjects($this->getDiskObjects($messageId, $this->cloneDiskObjects));
$this->setSourceDateTime($message['POST_DATE']);
$this->setSourceAuthorId((int)$message['AUTHOR_ID']);
if ($logId)
{
$res = CSocNetLog::getList(
[],
[
'=ID' => $logId
],
false,
false,
[ 'ID', 'EVENT_ID' ],
[
'CHECK_RIGHTS' => 'Y',
'USE_FOLLOW' => 'N',
'USE_SUBSCRIBE' => 'N',
]
);
if ($logFields = $res->fetch())
{
$this->setLogId($logFields['ID']);
$this->setSourceFields(array_merge($message, [ 'LOG_EVENT_ID' => $logFields['EVENT_ID'] ]));
if(
!empty($logComentFields)
&& in_array((int)$message['SERVICE_TYPE'], Manager::getTypesList(), true)
)
{
$this->setSourceOriginalText($logComentFields['MESSAGE']);
$auxData['SHARE_DEST'] = '';
$auxData['EVENT_ID'] = $logComentFields['EVENT_ID'];
$auxData['SOURCE_ID'] = $messageId;
$auxData['RATING_TYPE_ID'] = $logComentFields['RATING_TYPE_ID'];
}
else
{
$this->setSourceOriginalText($message['POST_MESSAGE']);
}
$this->setSourceAuxData($auxData);
}
}
else
{
$this->setSourceFields($message);
$this->setSourceDescription($message['POST_MESSAGE']);
$this->setSourceOriginalText($message['POST_MESSAGE']);
$this->setSourceAuxData($auxData);
}
}