• Модуль: xdimport
  • Путь к файлу: ~/bitrix/modules/xdimport/lib/integration/socialnetwork/logcomment.php
  • Класс: BitrixXDImportIntegrationSocialnetworkLogComment
  • Вызов: LogComment::setSource
static function setSource(array $commentFields = []): array
{
	global $USER;

	$result = [
		'NO_SOURCE' => 'Y'
	];

	if (empty($commentFields['MESSAGE']))
	{
		return $result;
	}

	$logId = (int)$commentFields['LOG_ID'];
	if ($logId <= 0)
	{
		return $result;
	}

	$authorId = (int)$commentFields['USER_ID'];

	if (!Loader::includeModule('socialnetwork'))
	{
		return $result;
	}

	$mentionedUserIdList = BitrixSocialnetworkHelperMention::getUserIds($commentFields['MESSAGE']);
	if (empty($mentionedUserIdList))
	{
		return $result;
	}

	$mentionedUserIdList = array_filter(
		$mentionedUserIdList,
		static function ($userId) use ($authorId) {
			return (int)$userId !== (int)$authorId;
		}
	);

	self::sendNotification([
		'type' => 'mention',
		'userIdList' => $mentionedUserIdList,
		'authorId' => $authorId,
		'logId' => $commentFields['LOG_ID'],
	]);

	$shareUserId = array_filter(
		$mentionedUserIdList,
		static function ($userId) use ($logId) {
			return !CSocNetLogRights::checkForUser($logId, $userId);
		}
	);

	if (empty($shareUserId))
	{
		return $result;
	}

	$shareCodesList = array_map(
		static function ($userId) {
			return 'U' . $userId;
		},
		$shareUserId
	);
	CSocNetLogRights::add($logId, $shareCodesList);

	$currentUserId = (int)$USER->getId();

	$commentProvider = LivefeedProvider::init(array(
		'ENTITY_TYPE' => LivefeedProvider::DATA_ENTITY_TYPE_LOG_COMMENT,
		'LOG_ID' => $logId,
		'CLONE_DISK_OBJECTS' => false
	));

	if (!$commentProvider)
	{
		return $result;
	}

	$commentProvider->add([
		'SITE_ID' => SITE_ID,
		'AUTHOR_ID' => $currentUserId,
		'MESSAGE' => CommentAuxShare::getPostText(),
		'SHARE_DEST' => 'mention|'.implode(',', $shareCodesList),
		'MODULE' => '',
	]);

	return $result;
}