• Модуль: landing
  • Путь к файлу: ~/bitrix/modules/landing/lib/block.php
  • Класс: BitrixLandingBlock
  • Вызов: Block::__construct
public function __construct($id, $data = [], array $params = [])
{
	if (empty($data) || !is_array($data))
	{
		$data = parent::getList(array(
			'select' => array(
				'*',
				'LANDING_TITLE' => 'LANDING.TITLE',
				'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' => array(
				'ID' => (int)$id
			)
		))->fetch();
		if (!$data)
		{
			$id = 0;
		}
	}

	// if content is empty, fill from repository
	if (!isset($data['CONTENT']) || trim($data['CONTENT']) == '')
	{
		$data['CONTENT'] = '';
	}

	$this->id = intval($id);
	$this->lid = isset($data['LID']) ? intval($data['LID']) : 0;
	$this->parentId = isset($data['PARENT_ID']) ? intval($data['PARENT_ID']) : 0;
	$this->siteId = isset($data['SITE_ID']) ? intval($data['SITE_ID']) : 0;
	$this->sort = isset($data['SORT']) ? intval($data['SORT']) : '';
	$this->code = isset($data['CODE']) ? trim($data['CODE']) : '';
	$this->anchor = isset($data['ANCHOR']) ? trim($data['ANCHOR']) : '';
	$this->active = isset($data['ACTIVE']) && $data['ACTIVE'] == 'Y';
	$this->landingActive = isset($data['LANDING_ACTIVE']) && $data['LANDING_ACTIVE'] == 'Y';
	$this->deleted = isset($data['DELETED']) && $data['DELETED'] == 'Y';
	$this->designed = isset($data['DESIGNED']) && $data['DESIGNED'] == 'Y';
	$this->public = isset($data['PUBLIC']) && $data['PUBLIC'] == 'Y';
	$this->content = (!$this->deleted && isset($data['CONTENT'])) ? trim($data['CONTENT']) : '';

	// access
	if (isset($data['ACCESS']))
	{
		$this->access = $data['ACCESS'];
	}

	// assets
	if (isset($data['ASSETS']))
	{
		$this->assets = $data['ASSETS'];
	}

	// fill meta data
	$keys = [
		'LID', 'FAVORITE_META', 'CREATED_BY_ID', 'DATE_CREATE',
		'MODIFIED_BY_ID', 'DATE_MODIFY', 'SITE_TYPE'
	];
	foreach ($keys as $key)
	{
		if (isset($data[$key]))
		{
			$this->metaData[$key] = $data[$key];
		}
	}
	$this->metaData['LANDING_TITLE'] = isset($data['LANDING_TITLE']) ? $data['LANDING_TITLE'] : '';
	$this->metaData['LANDING_TPL_CODE'] = isset($data['LANDING_TPL_CODE']) ? $data['LANDING_TPL_CODE'] : '';
	$this->metaData['SITE_TPL_CODE'] = isset($data['SITE_TPL_CODE']) ? $data['SITE_TPL_CODE'] : '';
	$this->metaData['XML_ID'] = isset($data['XML_ID']) ? $data['XML_ID'] : '';
	$this->metaData['DESIGNER_MODE'] = isset($params['designer_mode']) && $params['designer_mode'] === true;

	// other data
	if (preg_match(self::REPO_MASK, $this->code, $matches))
	{
		$this->repoId = $matches[1];
	}
	if (!$this->content && !$this->deleted)
	{
		$this->content = self::getContentFromRepository($this->code);
	}
	$this->error = new Error;
	$this->docRoot = Manager::getDocRoot();

	// dynamic params
	if (isset($data['SOURCE_PARAMS']))
	{
		$this->dynamicParams = (array)$data['SOURCE_PARAMS'];
	}
}