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