• Модуль: socialnetwork
  • Путь к файлу: ~/bitrix/modules/socialnetwork/lib/componenthelper.php
  • Класс: BitrixSocialnetworkComponentHelper
  • Вызов: ComponentHelper::addLiveSourceComment
static function addLiveSourceComment(array $params = []): void
{
	global $USER_FIELD_MANAGER, $APPLICATION, $USER;

	$siteId = (string)($params['siteId'] ?? SITE_ID);
	$languageId = (string)($params['siteId'] ?? LANGUAGE_ID);
	$entityXmlId = (string)($params['entityXmlId'] ?? '');
	$nameTemplate = (string)($params['nameTemplate'] ?? '');
	$showLogin = (string)($params['showLogin'] ?? 'N');
	$pathToUser = (string)($params['pathToUser'] ?? '');
	$avatarSize = (int)($params['avatarSize'] ?? 100);

	$postProvider = $params['postProvider'];
	$commentProvider = $params['commentProvider'];

	if (
		!$postProvider
		|| !$commentProvider
	)
	{
		return;
	}

	$commentId = $commentProvider->getEntityId();
	$ratingTypeId = $commentProvider->getRatingTypeId();
	$commentDateTime = $commentProvider->getSourceDateTime();
	$commentAuthorId = $commentProvider->getSourceAuthorId();
	$commentText = $commentProvider->getSourceDescription();
	$userTypeEntityId = $commentProvider->getUserTypeEntityId();
	$commentContentTypeId = $commentProvider->getContentTypeId();

	$postContentTypeId = $postProvider->getContentTypeId();

	$timestamp = ($commentDateTime ? makeTimeStamp($commentDateTime) : 0);

	if (!empty($userTypeEntityId))
	{
		$comment['UF'] = $USER_FIELD_MANAGER->getUserFields($userTypeEntityId, $commentId, $languageId);
	}

	$timeFormatted = formatDateFromDB($commentDateTime, self::getTimeFormat());

	$authorFields = self::getAuthorData([
		'userId' => $commentAuthorId,
	]);

	$createdBy = self::getCreatedByData([
		'userFields' => $authorFields,
		'languageId' => $languageId,
		'nameTemplate' => $nameTemplate,
		'showLogin' => $showLogin,
		'pathToUser' => $pathToUser,
	]);

	$commentFormatted = [
		'LOG_DATE' => $commentDateTime->toString(),
		"LOG_DATE_FORMAT" => $comment["LOG_DATE_FORMAT"],
		'LOG_DATE_DAY' => convertTimeStamp($timestamp, 'SHORT'),
		'LOG_TIME_FORMAT' => $timeFormatted,
		'MESSAGE' => $commentText,
		'MESSAGE_FORMAT' => $commentText,
		'CREATED_BY' => $createdBy,
		'AVATAR_SRC' => CSocNetLogTools::formatEvent_CreateAvatar($authorFields, [
			'AVATAR_SIZE' => $avatarSize,
		], ''),
		'USER_ID' => $commentAuthorId,
	];

	if (
		empty($entityXmlId)
		&& $commentProvider->getContentTypeId() === LivefeedForumPost::CONTENT_TYPE_ID
	)
	{
		$feedParams = $commentProvider->getFeedParams();
		if (!empty($feedParams['xml_id']))
		{
			$entityXmlId = $feedParams['xml_id'];
		}
	}

	if (empty($entityXmlId))
	{
		return;
	}

	$rights = [
		'COMMENT_RIGHTS_EDIT' => 'N',
		'COMMENT_RIGHTS_DELETE' => 'N',
		'COMMENT_RIGHTS_CREATETASK' => 'N'
	];

	$records = static::getLiveCommentRecords([
		'commentId' => $commentId,
		'ratingTypeId' => $ratingTypeId,
		'timestamp' => $timestamp,
		'author' => [
			'ID' => $authorFields['ID'],
			'NAME' => $authorFields['NAME'],
			'LAST_NAME' => $authorFields['LAST_NAME'],
			'SECOND_NAME' => $authorFields['SECOND_NAME'],
			'PERSONAL_GENDER' => $authorFields['PERSONAL_GENDER'],
			'AVATAR' => $commentFormatted['AVATAR_SRC'],
		],
		'uf' => $comment['UF'],
		'ufFormatted' => $commentFormatted['UF'],
		'postMessageTextOriginal' => $comment['~MESSAGE'],
		'postMessageTextFormatted' => $commentFormatted['MESSAGE_FORMAT'],
		'mobileMessage' => $commentText,
		'aux' => ($params['aux'] ?? ''),
		'auxLiveParams' => ($params['auxLiveParams'] ?? []),
	]);
/*
	$viewUrl = (string)($comment['EVENT']['URL'] ?? '');
	if (empty($viewUrl))
	{
		$pathToLogEntry = (string)($params['PATH_TO_LOG_ENTRY'] ?? '');
		if (!empty($pathToLogEntry))
		{
			$viewUrl = CComponentEngine::makePathFromTemplate(
					$pathToLogEntry,
					[
						'log_id' => $logEntry['ID']
					]
				) . (mb_strpos($pathToLogEntry, '?') === false ? '?' : '&') . 'commentId=#ID#';
		}
	}
*/
	$res = static::sendLiveComment([
		'ratingTypeId' => $ratingTypeId,
		'entityXMLId' => $entityXmlId,
		'postContentTypeId' => $postContentTypeId,
		'commentContentTypeId' => $commentContentTypeId,
		'records' => $records,
		'rights' => $rights,
		'commentId' => $commentId,
		'action' => 'REPLY',
		'urlList' => [
//				'view' => $viewUrl,
//				'edit' => "__logEditComment('" . $entityXMLId . "', '#ID#', '" . $logEntry["ID"] . "');",
//				'delete' => '/bitrix/components/bitrix/socialnetwork.log.entry/ajax.php?lang=' . $params['LANGUAGE_ID'] . '&action=delete_comment&delete_comment_id=#ID#&post_id=' . $logEntry['ID'] . '&site=' . $params['SITE_ID'],
		],
		'avatarSize' => $avatarSize,
		'nameTemplate' => $nameTemplate,
//			'dateTimeFormat' => $params['DATE_TIME_FORMAT'],
	]);
}