- Модуль: landing
- Путь к файлу: ~/bitrix/modules/landing/lib/update/block/nodeattributes.php
- Класс: BitrixLandingUpdateBlockNodeAttributes
- Вызов: NodeAttributes::loadCurrentStatus
private function loadCurrentStatus()
{
// saved in option
$this->status = Option::get('landing', self::OPTION_STATUS_NAME, '');
$this->status = ($this->status !== '' ? @unserialize($this->status, ['allowed_classes' => false]) : array());
$this->status = (is_array($this->status) ? $this->status : array());
// or default
if (empty($this->status))
{
// get codes from all updaters options
$count = 0;
$params = array();
foreach (Option::getForModule('landing') as $key => $option)
{
if (mb_strpos($key, self::OPTION_NAME) === 0 && $key != self::OPTION_STATUS_NAME)
{
$option = ($option !== '' ? @unserialize($option, ['allowed_classes' => false]) : array());
if(!isset($option['BLOCKS']))
{
Option::delete('landing', array('name' => $key));
continue;
}
// save params
$params[$key] = $option['PARAMS'];
// count of all blocks - to progress-bar
$filter = array(
'CODE' => array_keys($option['BLOCKS']),
'DELETED' => 'N',
);
if (
isset($option['PARAMS']['UPDATE_PUBLISHED_SITES']) &&
$option['PARAMS']['UPDATE_PUBLISHED_SITES'] != 'Y'
)
{
$filter['PUBLIC'] = 'N';
}
$res = BlockTable::getList(array(
'select' => array(
new BitrixMainEntityExpressionField(
'CNT', 'COUNT(*)'
),
),
'filter' => $filter,
));
if ($row = $res->fetch())
{
$count += $row['CNT'];
}
}
}
$this->status['COUNT'] = $count;
$this->status['STEPS'] = 0;
$this->status['SITES_TO_UPDATE'] = array();
$this->status['UPDATER_ID'] = '';
$this->status['PARAMS'] = $params;
Option::set('landing', self::OPTION_STATUS_NAME, serialize($this->status));
}
}