- Модуль: socialnetwork
- Путь к файлу: ~/bitrix/modules/socialnetwork/lib/livefeed/provider.php
- Класс: BitrixSocialnetworkLivefeedProvider
- Вызов: Provider::getContentId
static function getContentId($event = [])
{
$result = false;
if (!is_array($event))
{
return $result;
}
$contentEntityType = false;
$contentEntityId = false;
$moduleEvent = new MainEvent(
'socialnetwork',
'onLogProviderGetContentId',
[
'eventFields' => $event,
]
);
$moduleEvent->send();
foreach ($moduleEvent->getResults() as $moduleEventResult)
{
if ($moduleEventResult->getType() === EventResult::SUCCESS)
{
$moduleEventParams = $moduleEventResult->getParameters();
if (
is_array($moduleEventParams)
&& !empty($moduleEventParams['contentEntityType'])
&& !empty($moduleEventParams['contentEntityId'])
)
{
$contentEntityType = $moduleEventParams['contentEntityType'];
$contentEntityId = $moduleEventParams['contentEntityId'];
}
break;
}
}
if (
$contentEntityType
&& $contentEntityId > 0
)
{
return [
'ENTITY_TYPE' => $contentEntityType,
'ENTITY_ID' => $contentEntityId
];
}
// getContent
if (
!empty($event['EVENT_ID'])
&& $event['EVENT_ID'] === 'photo'
)
{
$contentEntityType = self::DATA_ENTITY_TYPE_PHOTOGALLERY_ALBUM;
$contentEntityId = (int)$event['SOURCE_ID'];
}
elseif (
!empty($event['EVENT_ID'])
&& $event['EVENT_ID'] === 'photo_photo'
)
{
$contentEntityType = self::DATA_ENTITY_TYPE_PHOTOGALLERY_PHOTO;
$contentEntityId = (int)$event['SOURCE_ID'];
}
elseif (
!empty($event['EVENT_ID'])
&& $event['EVENT_ID'] === 'data'
)
{
$contentEntityType = self::DATA_ENTITY_TYPE_LOG_ENTRY;
$contentEntityId = (int)$event['ID'];
}
elseif (
!empty($event['RATING_TYPE_ID'])
&& !empty($event['RATING_ENTITY_ID'])
&& (int)$event['RATING_ENTITY_ID'] > 0
)
{
$contentEntityType = $event['RATING_TYPE_ID'];
$contentEntityId = (int)$event['RATING_ENTITY_ID'];
if (in_array($event['RATING_TYPE_ID'], [ 'IBLOCK_ELEMENT', 'IBLOCK_SECTION' ]))
{
$res = self::$logTable::getList([
'filter' => [
'=RATING_TYPE_ID' => $event['RATING_TYPE_ID'],
'=RATING_ENTITY_ID' => $event['RATING_ENTITY_ID'],
],
'select' => [ 'EVENT_ID' ]
]);
if ($logEntryFields = $res->fetch())
{
if ($event['RATING_TYPE_ID'] === 'IBLOCK_ELEMENT')
{
$found = false;
$photogalleryPhotoProvider = new BitrixSocialnetworkLivefeedPhotogalleryPhoto;
if (in_array($logEntryFields['EVENT_ID'], $photogalleryPhotoProvider->getEventId(), true))
{
$contentEntityType = self::DATA_ENTITY_TYPE_PHOTOGALLERY_PHOTO;
$contentEntityId = (int)$event['RATING_ENTITY_ID'];
$found = true;
}
if (!$found)
{
$wikiProvider = new BitrixSocialnetworkLivefeedWiki;
if (in_array($logEntryFields['EVENT_ID'], $wikiProvider->getEventId()))
{
$contentEntityType = self::DATA_ENTITY_TYPE_WIKI;
$contentEntityId = (int)$event['RATING_ENTITY_ID'];
$found = true;
}
}
}
elseif ($event['RATING_TYPE_ID'] === 'IBLOCK_SECTION')
{
$photogalleryalbumProvider = new BitrixSocialnetworkLivefeedPhotogalleryAlbum;
if (in_array($logEntryFields['EVENT_ID'], $photogalleryalbumProvider->getEventId(), true))
{
$contentEntityType = self::DATA_ENTITY_TYPE_PHOTOGALLERY_ALBUM;
$contentEntityId = (int)$event['RATING_ENTITY_ID'];
}
}
}
}
elseif (preg_match('/^wiki_[d]+_page$/i', $event['RATING_TYPE_ID'], $matches))
{
$contentEntityType = self::DATA_ENTITY_TYPE_WIKI;
$contentEntityId = (int)$event['SOURCE_ID'];
$found = true;
}
}
elseif (
!empty($event['EVENT_ID'])
&& !empty($event['SOURCE_ID'])
&& (int)$event['SOURCE_ID'] > 0
)
{
switch ($event['EVENT_ID'])
{
case 'tasks':
$contentEntityType = self::DATA_ENTITY_TYPE_TASKS_TASK;
$contentEntityId = (int)$event['SOURCE_ID'];
break;
case 'calendar':
$contentEntityType = self::DATA_ENTITY_TYPE_CALENDAR_EVENT;
$contentEntityId = (int)$event['SOURCE_ID'];
break;
case 'timeman_entry':
$contentEntityType = self::DATA_ENTITY_TYPE_TIMEMAN_ENTRY;
$contentEntityId = (int)$event['SOURCE_ID'];
break;
case 'report':
$contentEntityType = self::DATA_ENTITY_TYPE_TIMEMAN_REPORT;
$contentEntityId = (int)$event['SOURCE_ID'];
break;
case 'lists_new_element':
$contentEntityType = self::DATA_ENTITY_TYPE_LISTS_ITEM;
$contentEntityId = (int)$event['SOURCE_ID'];
break;
default:
}
}
if (
$contentEntityType
&& $contentEntityId > 0
)
{
$result = [
'ENTITY_TYPE' => $contentEntityType,
'ENTITY_ID' => $contentEntityId
];
}
return $result;
}