• Модуль: landing
  • Путь к файлу: ~/bitrix/modules/landing/lib/landing.php
  • Класс: Bitrix\Landing\Landing
  • Вызов: Landing::__construct
protected function __construct($id, $params = array())
{
	$id = intval($id);
	$this->error = new Error;
	$filter = array(
		'ID' => $id
	);
	if (
		isset($params['force_deleted']) &&
		$params['force_deleted'] === true
	)
	{
		$filter['=DELETED'] = ['Y', 'N'];
		$filter['=SITE.DELETED'] = ['Y', 'N'];
	}
	if (
		isset($params['check_permissions']) &&
		$params['check_permissions'] === false
	)
	{
		$filter['CHECK_PERMISSIONS'] = 'N';
		$this->checkPermissions = false;
	}
	if (
		isset($params['disable_link_preview']) &&
		$params['disable_link_preview'] === true
	)
	{
		$this->disableLinkPreview = true;
	}

	if ($id)
	{
		$landing = self::getList(array(
			'select' => array(
				'*',
				'SITE_TPL_ID' => 'SITE.TPL_ID',
				'SITE_TPL_CODE' => 'SITE.TPL_CODE',
				'SITE_CODE' => 'SITE.CODE',
				'SITE_TYPE' => 'SITE.TYPE',
				'SITE_SPECIAL' => 'SITE.SPECIAL',
				'SITE_TITLE' => 'SITE.TITLE',
				'SITE_VERSION' => 'SITE.VERSION',
				'SITE_LANG' => 'SITE.LANG',
				'DOMAIN_ID' => 'SITE.DOMAIN_ID',
				'SITE_LANDING_ID_INDEX' => 'SITE.LANDING_ID_INDEX'
			),
			'filter' => $filter
		))->fetch();
	}
	// check landing folder if exists
	if (!empty($landing['FOLDER_ID']))
	{
		$breadCrumbs = Folder::getBreadCrumbs($landing['FOLDER_ID'], $landing['SITE_ID']);
		foreach ($breadCrumbs as $crumb)
		{
			if ($crumb['DELETED'] === 'Y')
			{
				$id = 0;
				break;
			}
		}
	}
	if ($id && isset($landing) && is_array($landing))
	{
		/*
		 * $this->getEditMode()
		 * @todo return if no access
		 */
		// get base data
		self::$siteCode = $landing['SITE_TYPE'];
		$this->title = $landing['TITLE'];
		$this->code = $landing['CODE'];
		$this->xmlId = $landing['XML_ID'];
		$this->id = (int)$landing['ID'];
		$this->version = (int)$landing['VERSION'];
		$this->siteId = (int)$landing['SITE_ID'];
		$this->siteTitle = $landing['SITE_TITLE'];
		$this->domainId = (int)$landing['DOMAIN_ID'];
		$this->folderId = (int)$landing['FOLDER_ID'];
		$this->active = $landing['ACTIVE'] == 'Y';
		if ($this->checkPermissions)
		{
			$this->rights = Rights::getOperationsForSite(
				$this->siteId
			);
		}
		$this->siteRow = [
			'TPL_ID' => $landing['SITE_TPL_ID'],
			'LANDING_ID_INDEX' => $landing['SITE_LANDING_ID_INDEX']
		];
		$this->tplId = $landing['TPL_ID'] > 0
						? $landing['TPL_ID']
						: (
							$landing['SITE_TPL_ID'] > 0
							? $landing['SITE_TPL_ID']
							: 0
						);
		if (isset($params['is_area']) && $params['is_area'])
		{
			$this->mainInstance = false;
		}
		if ($landing['SITE_TPL_ID'] > 0 && !$landing['TPL_ID'])
		{
			$this->tplType = 'site';
		}
		// if edit mode - create copy for edit
		if ($this->getEditMode()/* && $landing['PUBLIC'] == 'Y'*/)
		{
			Block::cloneForEdit($this);
		}
		// some update if we need
		$this->updateVersion();
		// get available blocks
		if (
			!isset($params['skip_blocks']) ||
			$params['skip_blocks'] !== true
		)
		{
			Block::fillLanding(
				$this,
				isset($params['blocks_limit']) ? $params['blocks_limit'] : 0,
				array(
					'id' => isset($params['blocks_id']) ? $params['blocks_id'] : 0,
					'deleted' => isset($params['deleted']) && $params['deleted'] === true
				)
			);
		}
		// fill meta data
		$keys = [
			'CREATED_BY_ID', 'MODIFIED_BY_ID', 'DATE_CREATE',
			'DATE_MODIFY', 'INITIATOR_APP_CODE', 'VIEWS', 'TPL_CODE',
			'ACTIVE', 'PUBLIC', 'SITE_CODE', 'SITE_SPECIAL', 'RULE',
			'SITE_VERSION', 'SITE_LANG', 'SITE_TPL_CODE'
		];
		foreach ($keys as $key)
		{
			$this->metaData[$key] = $landing[$key];
		}
	}
	// landing not found
	else
	{
		$this->error->addError(
			'LANDING_NOT_EXIST',
			Loc::getMessage('LANDING_NOT_FOUND')
		);
		$this->title = Loc::getMessage('LANDING_TITLE_NOT_FOUND');
	}
}