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