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