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