• Модуль: landing
  • Путь к файлу: ~/bitrix/modules/landing/lib/binding/entity.php
  • Класс: BitrixLandingBindingEntity
  • Вызов: Entity::getBindings
static function getBindings($bindingId)
{
	$items = [];

	// filter
	$filter = [
		'=BINDING_TYPE' => static::$bindingType,
		'=ENTITY_TYPE' => [
			self::ENTITY_TYPE_SITE,
			self::ENTITY_TYPE_LANDING
		]
	];
	if ($bindingId !== null)
	{
		$filter['=BINDING_ID'] = $bindingId;
	}

	// runtime fields
	$runtime = [];
	$runtime[] = new MainEntityReferenceField(
		'SITE',
		'BitrixLandingInternalsSiteTable',
		[
			'=this.ENTITY_ID' => 'ref.ID',
			'=this.ENTITY_TYPE' => [
				'?', self::ENTITY_TYPE_SITE
			]
		]
	);
	$runtime[] = new MainEntityReferenceField(
		'LANDING',
		'BitrixLandingInternalsLandingTable',
		[
			'=this.ENTITY_ID' => 'ref.ID',
			'=this.ENTITY_TYPE' => [
				'?', self::ENTITY_TYPE_LANDING
			]
		]
	);

	// selecting
	$urls = [
		self::ENTITY_TYPE_SITE => [],
		self::ENTITY_TYPE_LANDING => []
	];
	$res = BindingTable::getList([
		'select' => [
			'ENTITY_ID',
			'ENTITY_TYPE',
			'BINDING_ID',
			'SITE_TITLE' => 'SITE.TITLE',
			'LANDING_TITLE' => 'LANDING.TITLE',
			'SITE_DELETED' => 'SITE.DELETED',
			'LANDING_DELETED' => 'LANDING.DELETED'
		],
		'filter' => $filter,
		'runtime' => $runtime,
		'order' => [
			'ID' => 'desc'
		]
	]);
	while ($row = $res->fetch())
	{
		if (
			$row['SITE_DELETED'] == 'Y' ||
			$row['LANDING_DELETED'] == 'Y'
		)
		{
			continue;
		}
		$urls[$row['ENTITY_TYPE']][] = $row['ENTITY_ID'];
		$title = ($row['ENTITY_TYPE'] == self::ENTITY_TYPE_SITE)
				? $row['SITE_TITLE']
				: $row['LANDING_TITLE'];
		if (!$title)
		{
			continue;
		}
		$items[] = [
			'ENTITY_ID' => $row['ENTITY_ID'],
			'ENTITY_TYPE' => $row['ENTITY_TYPE'],
			'BINDING_ID' => $row['BINDING_ID'],
			'TITLE' => $title,
			'PUBLIC_URL' => '',
		];
	}

	// get urls
	if ($urls[self::ENTITY_TYPE_SITE])
	{
		$urls[self::ENTITY_TYPE_SITE] = Site::getPublicUrl(
			$urls[self::ENTITY_TYPE_SITE]
		);
	}
	if ($urls[self::ENTITY_TYPE_LANDING])
	{
		$landing = Landing::createInstance(0);
		$urls[self::ENTITY_TYPE_LANDING] = $landing->getPublicUrl(
			$urls[self::ENTITY_TYPE_LANDING]
		);
	}

	// rebuild for urls
	foreach ($items as &$item)
	{
		if (isset($urls[$item['ENTITY_TYPE']][$item['ENTITY_ID']]))
		{
			$item['PUBLIC_URL'] = $urls[$item['ENTITY_TYPE']][$item['ENTITY_ID']];
		}
	}
	unset($item);

	return $items;
}