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