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