• Модуль: socialnetwork
  • Путь к файлу: ~/bitrix/modules/socialnetwork/lib/livefeed/provider.php
  • Класс: BitrixSocialnetworkLivefeedProvider
  • Вызов: Provider::getProvider
static function getProvider($entityType)
{
	$provider = false;

	$moduleEvent = new MainEvent(
		'socialnetwork',
		'onLogProviderGetProvider',
		[
			'entityType' => $entityType
		]
	);
	$moduleEvent->send();

	foreach ($moduleEvent->getResults() as $moduleEventResult)
	{
		if ($moduleEventResult->getType() === EventResult::SUCCESS)
		{
			$moduleEventParams = $moduleEventResult->getParameters();

			if (
				is_array($moduleEventParams)
				&& !empty($moduleEventParams['provider'])
			)
			{
				$provider = $moduleEventParams['provider'];
			}
			break;
		}
	}

	if (!$provider)
	{
		switch($entityType)
		{
			case self::DATA_ENTITY_TYPE_BLOG_POST:
				$provider = new BlogPost();
				break;
			case self::DATA_ENTITY_TYPE_BLOG_COMMENT:
				$provider = new BlogComment();
				break;
			case self::DATA_ENTITY_TYPE_TASKS_TASK:
				$provider = new TasksTask();
				break;
			case self::DATA_ENTITY_TYPE_FORUM_TOPIC:
				$provider = new ForumTopic();
				break;
			case self::DATA_ENTITY_TYPE_FORUM_POST:
				$provider = new ForumPost();
				break;
			case self::DATA_ENTITY_TYPE_CALENDAR_EVENT:
				$provider = new CalendarEvent();
				break;
			case self::DATA_ENTITY_TYPE_LOG_ENTRY:
				$provider = new LogEvent();
				break;
			case self::DATA_ENTITY_TYPE_LOG_COMMENT:
				$provider = new LogComment();
				break;
			case self::DATA_ENTITY_TYPE_RATING_LIST:
				$provider = new RatingVoteList();
				break;
			case self::DATA_ENTITY_TYPE_PHOTOGALLERY_ALBUM:
				$provider = new PhotogalleryAlbum();
				break;
			case self::DATA_ENTITY_TYPE_PHOTOGALLERY_PHOTO:
				$provider = new PhotogalleryPhoto();
				break;
			case self::DATA_ENTITY_TYPE_LISTS_ITEM:
				$provider = new ListsItem();
				break;
			case self::DATA_ENTITY_TYPE_WIKI:
				$provider = new Wiki();
				break;
			case self::DATA_ENTITY_TYPE_TIMEMAN_ENTRY:
				$provider = new TimemanEntry();
				break;
			case self::DATA_ENTITY_TYPE_TIMEMAN_REPORT:
				$provider = new TimemanReport();
				break;
			case self::DATA_ENTITY_TYPE_INTRANET_NEW_USER:
				$provider = new IntranetNewUser();
				break;
			case self::DATA_ENTITY_TYPE_BITRIX24_NEW_USER:
				$provider = new Bitrix24NewUser();
				break;
			default:
				$provider = false;
		}
	}

	return $provider;
}