- Модуль: socialnetwork
- Путь к файлу: ~/bitrix/modules/socialnetwork/lib/livefeed/forumpost.php
- Класс: BitrixSocialnetworkLivefeedForumPost
- Вызов: ForumPost::getFeedParams
public function getFeedParams(): array
{
global $USER;
$result = [];
$entityType = false;
$entityId = 0;
$entityData = [];
$parentProvider = $this->getParentProvider();
if ($parentProvider)
{
$entityType = $parentProvider->getContentTypeId();
$entityId = $parentProvider->getEntityId();
$entityData = $parentProvider->getAdditionalParams();
}
else
{
$logId = $this->getLogId();
if (!$logId)
{
return $result;
}
$res = self::$logTable::getList(array(
'filter' => array(
'ID' => $logId
),
'select' => array('EVENT_ID', 'SOURCE_ID')
));
if (
($logFields = $res->fetch())
&& (!empty($logFields['EVENT_ID']))
&& ((int)$logFields['SOURCE_ID'] > 0)
)
{
$this->setLogEventId($logFields['EVENT_ID']);
$providerTasksTask = new TasksTask();
if (in_array($logFields['EVENT_ID'], $providerTasksTask->getEventId(), true))
{
$entityType = $providerTasksTask->getContentTypeId();
$entityId = (int)$logFields['SOURCE_ID'];
}
if ($entityId <= 0)
{
$providerCalendarEvent = new CalendarEvent();
if (in_array($logFields['EVENT_ID'], $providerCalendarEvent->getEventId(), true))
{
$entityType = $providerCalendarEvent->getContentTypeId();
$entityId = (int)$logFields['SOURCE_ID'];
}
}
if ($entityId <= 0)
{
$providerForumTopic = new ForumTopic();
if (in_array($logFields['EVENT_ID'], $providerForumTopic->getEventId(), true))
{
$entityType = $providerForumTopic->getContentTypeId();
$entityId = (int)$logFields['SOURCE_ID'];
}
}
if ($entityId <= 0)
{
$providerTimemanEntry = new TimemanEntry();
if (in_array($logFields['EVENT_ID'], $providerTimemanEntry->getEventId(), true))
{
$entityType = $providerTimemanEntry->getContentTypeId();
$entityId = (int)$logFields['SOURCE_ID'];
}
}
if ($entityId <= 0)
{
$providerTimemanReport = new TimemanReport();
if (in_array($logFields['EVENT_ID'], $providerTimemanReport->getEventId(), true))
{
$entityType = $providerTimemanReport->getContentTypeId();
$entityId = (int)$logFields['SOURCE_ID'];
}
}
if ($entityId <= 0)
{
$providerPhotogalleryPhoto = new PhotogalleryPhoto();
if (in_array($logFields['EVENT_ID'], $providerPhotogalleryPhoto->getEventId(), true))
{
$entityType = $providerPhotogalleryPhoto->getContentTypeId();
$entityId = (int)$logFields['SOURCE_ID'];
}
}
if ($entityId <= 0)
{
$providerWiki = new Wiki();
if (in_array($logFields['EVENT_ID'], $providerWiki->getEventId(), true))
{
$entityType = $providerWiki->getContentTypeId();
$entityId = (int)$logFields['SOURCE_ID'];
}
}
if ($entityId <= 0)
{
$providerListsItem = new ListsItem();
if (in_array($logFields['EVENT_ID'], $providerListsItem->getEventId(), true))
{
$entityType = $providerListsItem->getContentTypeId();
$entityId = (int)$logFields['SOURCE_ID'];
}
}
}
}
if (
$entityType
&& $entityId > 0
)
{
$xmlId = $entityId;
$type = array_search($entityType, BitrixSocialnetworkLivefeedForumPost::getForumTypeMap(), true);
if ($type)
{
switch ($entityType)
{
case TasksTask::CONTENT_TYPE_ID:
$xmlId = 'TASK_'.$entityId;
break;
case CalendarEvent::CONTENT_TYPE_ID:
$xmlId = 'EVENT_' . $entityId;
if (
is_array($entityData)
&& !empty($entityData['parentId'])
&& !empty($entityData['dateFrom'])
&& Loader::includeModule('calendar')
)
{
$calendarEntry = CCalendarEvent::getEventForViewInterface($entityData['parentId'], [
'eventDate' => $entityData['dateFrom'],
'userId' => $USER->getId(),
]);
if ($calendarEntry)
{
$xmlId = CCalendarEvent::getEventCommentXmlId($calendarEntry);
}
}
break;
case ForumTopic::CONTENT_TYPE_ID:
$xmlId = 'TOPIC_'.$entityId;
break;
case TimemanEntry::CONTENT_TYPE_ID:
$xmlId = 'TIMEMAN_ENTRY_'.$entityId;
break;
case TimemanReport::CONTENT_TYPE_ID:
$xmlId = 'TIMEMAN_REPORT_'.$entityId;
break;
case PhotogalleryPhoto::CONTENT_TYPE_ID:
$xmlId = 'PHOTO_'.$entityId;
break;
case Wiki::CONTENT_TYPE_ID:
$xmlId = 'IBLOCK_'.$entityId;
break;
case ListsItem::CONTENT_TYPE_ID:
if (
Loader::includeModule('bizproc')
&& ($workflowId = CBPStateService::getWorkflowByIntegerId($entityId))
)
{
$xmlId = 'WF_' . $workflowId;
}
break;
default:
}
$result = [
'type' => $type,
'id' => $entityId,
'xml_id' => $xmlId,
];
}
}
return $result;
}