• Модуль: iblock
  • Путь к файлу: ~/bitrix/modules/iblock/classes/general/subelement.php
  • Класс: CAdminSubList
  • Вызов: CAdminSubList::AddHeaders
public function AddHeaders($aParams)
{
	$showAll = $this->request->get('showallcol');
	if ($showAll !== null && $showAll !== '')
	{
		$this->session['SHALL'] = $showAll === 'Y';
	}
	$showAll = isset($this->session['SHALL']) && $this->session['SHALL'];

	$hiddenColumns = (!empty($this->arHideHeaders) ? array_fill_keys($this->arHideHeaders, true) : array());

	$aOptions = CUserOptions::GetOption("list", $this->table_id, array());
	if (!is_array($aOptions))
	{
		$aOptions = [];
	}

	$aColsTmp = explode(",", $aOptions["columns"] ?? '');
	$aCols = array();
	$userColumns = array();

	foreach($aColsTmp as $col)
	{
		$col = trim($col);
		if ($col != '' && !isset($hiddenColumns[$col]))
		{
			$aCols[] = $col;
			$userColumns[$col] = true;
		}
	}

	$bEmptyCols = empty($aCols);
	$userVisibleColumns = array();
	foreach ($aParams as $param)
	{
		$param["__sort"] = -1;
		$param['default'] ??= false;
		if (!isset($hiddenColumns[$param["id"]]))
		{
			$this->aHeaders[$param["id"]] = $param;
			if (
				$showAll
				|| ($bEmptyCols && ($param["default"] === true))
				|| isset($userColumns[$param["id"]])
			)
			{
				$this->arVisibleColumns[] = $param["id"];
				$userVisibleColumns[$param["id"]] = true;
			}
		}
	}
	unset($userColumns);

	$aAllCols = ($this->isConfigMode() ? $this->aHeaders : null);

	if(!$bEmptyCols)
	{
		foreach ($aCols as $i => $col)
			if (isset($this->aHeaders[$col]))
				$this->aHeaders[$col]["__sort"] = $i;
		MainTypeCollection::sortByColumn($this->aHeaders, array('__sort' => SORT_ASC), '', null, true);
	}

	foreach($this->aHeaders as $id=>$arHeader)
	{
		if (isset($userVisibleColumns[$id]) && !isset($hiddenColumns[$id]))
			$this->aVisibleHeaders[$id] = $arHeader;
	}
	unset($userVisibleColumns, $hiddenColumns);

	if ($this->isConfigMode())
	{
		$this->ShowSettings($aAllCols, $aCols, $aOptions);
	}
}