• Модуль: landing
  • Путь к файлу: ~/bitrix/modules/landing/lib/connector/ui/selectorprovider.php
  • Класс: BitrixLandingConnectorUiSelectorProvider
  • Вызов: SelectorProvider::getLandings
static function getLandings(int $siteId, ?int $landingId = null, ?int $parentId = null): array
{
	$data = [];
	$landingFake = Landing::createInstance(0);
	$filter = ['SITE_ID' => $siteId];

	// search in folders first (if search mode)
	if (self::$searchPhrase)
	{
		$folders = Site::getFolders($siteId, [
			'?TITLE' => '%' . self::$searchPhrase . '%'
		]);
		if ($folders)
		{
			$filterSub = ['LOGIC' => 'OR'];
			$filterSub['?TITLE'] = '%' . self::$searchPhrase . '%';
			$filterSub['FOLDER_ID'] = [];
			foreach ($folders as $folder)
			{
				$filterSub['FOLDER_ID'][] = $folder['ID'];
			}
			$filter[] = $filterSub;
		}
		else
		{
			$filter['?TITLE'] = '%' . self::$searchPhrase . '%';
		}
	}
	else
	{
		$filter['FOLDER_ID'] = abs($parentId);
	}

	$rows = [];
	$res = Landing::getList([
		'select' => [
			'ID', 'TITLE', 'FOLDER_ID', 'SITE_ID',
			'DOMAIN_ID' => 'SITE.DOMAIN_ID'
		],
		'filter' => $filter,
		'order' => [
			'DATE_MODIFY' => 'desc'
		]
	]);
	while ($row = $res->fetch())
	{
		$rows[$row['ID']] = $row;
	}

	if ($rows)
	{
		$urls = $landingFake->getPublicUrl(array_keys($rows));
	}

	foreach ($rows as $row)
	{
		$subtitle = null;
		if (self::$searchPhrase && $row['FOLDER_ID'])
		{
			$subtitle = Folder::getBreadCrumbsString($row['FOLDER_ID'], ' / ', $row['SITE_ID']);
		}
		$data[$row['ID']] = new Item([
			'id' => $row['ID'],
			'selected' => $row['ID'] == $landingId,
			'entityId' => 'landing',
			'entityType' => 'landing',
			'title' => $row['TITLE'],
			'avatar' => $landingFake->getPreview($row['ID'], $row['DOMAIN_ID'] == 0, $urls[$row['ID']]),
			'subtitle' => $subtitle ?: ''
		]);
	}

	return $data;
}