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