- Модуль: landing
- Путь к файлу: ~/bitrix/modules/landing/lib/block.php
- Класс: BitrixLandingBlock
- Вызов: Block::fillLanding
static function fillLanding(Landing $landing, $limit = 0, array $params = array())
{
if ($landing->exist())
{
$editMode = $landing->getEditMode() || $landing->getPreviewMode();
$repo = array();
$blocks = array();
// get all blocks by filter
$filter = array(
'LID' => $landing->getId(),
'=PUBLIC' => $editMode ? 'N' : 'Y',
'=DELETED' => (isset($params['deleted']) && $params['deleted'] === true)
? 'Y'
: 'N'
);
if (isset($params['id']) && $params['id'])
{
$filter['ID'] = $params['id'];
}
$res = parent::getList(array(
'select' => array(
'*',
'LANDING_ACTIVE' => 'LANDING.ACTIVE',
'LANDING_TPL_CODE' => 'LANDING.TPL_CODE',
'SITE_TPL_CODE' => 'LANDING.SITE.TPL_CODE',
'SITE_TYPE' => 'LANDING.SITE.TYPE',
'SITE_ID' => 'LANDING.SITE_ID'
),
'filter' => $filter,
'order' => array(
'SORT' => 'ASC',
'ID' => 'ASC'
),
'limit' => $limit
));
while ($row = $res->fetch())
{
$blockParams = [];
if (!$landing->canEdit())
{
$row['ACCESS'] = self::ACCESS_A;
}
$row['SITE_ID'] = $landing->getSiteId();
$block = new self(
$row['ID'],
$row,
$blockParams
);
if ($block->getRepoId())
{
$repo[] = $block->getRepoId();
}
$blocks[$row['ID']] = $block;
}
unset($row, $res);
if (!empty($repo))
{
$repo = Repo::getAppInfo($repo);
}
// add blocks to landing
foreach ($blocks as $block)
{
if (
isset($repo[$block->getRepoId()]['PAYMENT_ALLOW']) &&
$repo[$block->getRepoId()]['PAYMENT_ALLOW'] != 'Y'
)
{
$allowedByTariff = false;
}
else
{
$allowedByTariff = true;
}
if ($editMode)
{
$block->setAllowedByTariff($allowedByTariff);
$landing->addBlockToCollection($block);
}
elseif ($allowedByTariff)
{
$landing->addBlockToCollection($block);
}
}
unset($blocks, $block, $repo);
return true;
}
return false;
}