• Модуль: socialnetwork
  • Путь к файлу: ~/bitrix/modules/socialnetwork/lib/controller/livefeed.php
  • Класс: BitrixSocialnetworkControllerLivefeed
  • Вызов: Livefeed::getRawEntryDataAction
public function getRawEntryDataAction(array $params = []): ?array
{
	$entityType = (isset($params['entityType']) && $params['entityType'] <> '' ? preg_replace("/[^a-z0-9_]/i", '', $params['entityType']) : false);
	$entityId = (isset($params['entityId']) && (int)$params['entityId'] > 0 ? (int)$params['entityId'] : false);
	$logId = (isset($params['logId']) && (int)$params['logId'] > 0 ? (int)$params['logId'] : false);
	$additionalParams = (isset($params['additionalParams']) && is_array($params['additionalParams']) ? $params['additionalParams'] : []);

	if (!Loader::includeModule('socialnetwork'))
	{
		$this->addError(new Error('Cannot include Socialnetwork module', 'SONET_CONTROLLER_LIVEFEED_NO_SOCIALNETWORK_MODULE'));
		return null;
	}

	$provider = BitrixSocialnetworkLivefeedProvider::init([
		'ENTITY_TYPE' => $entityType,
		'ENTITY_ID' => $entityId,
		'LOG_ID' => $logId,
		'CLONE_DISK_OBJECTS' => true
	]);

	if (!$provider)
	{
		$this->addError(new Error('Cannot find Livefeed entity', 'SONET_CONTROLLER_LIVEFEED_NO_ENTITY'));
		return null;
	}

	$returnFields = [ 'TITLE', 'DESCRIPTION', 'DISK_OBJECTS', 'GROUPS_AVAILABLE', 'LIVEFEED_URL', 'SUFFIX', 'LOG_ID' ];
	if (
		isset($additionalParams['returnFields'])
		&& is_array($additionalParams['returnFields'])
	)
	{
		$returnFields = array_intersect($returnFields, $additionalParams['returnFields']);
	}

	$result = [
		'TITLE' => $provider->getSourceTitle(),
		'DESCRIPTION' => $provider->getSourceDescription(),
		'DISK_OBJECTS' => $provider->getSourceDiskObjects()
	];

	if (
		isset($additionalParams['getSonetGroupAvailable'])
		&& $additionalParams['getSonetGroupAvailable'] === 'Y'
	)
	{
		$feature = $operation = false;
		if (isset($additionalParams['checkPermissions']['operation'], $additionalParams['checkPermissions']['feature']))
		{
			$feature = $additionalParams['checkPermissions']['feature'];
			$operation = $additionalParams['checkPermissions']['operation'];
		}

		$result['GROUPS_AVAILABLE'] = $provider->getSonetGroupsAvailable($feature, $operation);
	}

	if (
		isset($additionalParams['getLivefeedUrl'])
		&& $additionalParams['getLivefeedUrl'] === 'Y'
	)
	{
		$result['LIVEFEED_URL'] = $provider->getLiveFeedUrl();
		if (
			isset($additionalParams['absoluteUrl'])
			&& $additionalParams['absoluteUrl'] === 'Y'
		)
		{
			$serverName = Option::get('main', 'server_name', $_SERVER['SERVER_NAME']);
			$res = CSite::getById(SITE_ID);
			if (
				($siteFields = $res->fetch())
				&& $siteFields['SERVER_NAME'] <> ''
			)
			{
				$serverName = $siteFields['SERVER_NAME'];
			}

			$protocol = (BitrixMainContext::getCurrent()->getRequest()->isHttps() ? 'https' : 'http');
			$result['LIVEFEED_URL'] = $protocol . '://' . $serverName . $result['LIVEFEED_URL'];
		}
	}

	$result['SUFFIX'] = $provider->getSuffix();

	if (($logId = $provider->getLogId()))
	{
		$result['LOG_ID'] = $logId;
	}

	return array_filter($result, static function ($key) use ($returnFields) {
		return in_array($key, $returnFields, true);
	}, ARRAY_FILTER_USE_KEY);
}