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