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