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