• Модуль: report
  • Путь к файлу: ~/bitrix/modules/report/classes/general/report.php
  • Класс: CReport
  • Вызов: CReport::generateColumnTree
static function generateColumnTree($chains, $initEntity, $helper_class, $level = 0)
{
	$tree = array();

	foreach ($chains as $k => $v)
	{
		if ($k == '__CHAIN__')
		{
			continue;
		}

		if ($v instanceof EntityQueryChain)
		{
			// there is single element (chain)
			$chain = $v;
			$treeElem = $chain->getLastElement()->getValue();
			$branch = null;
		}
		else
		{
			// there is sub tree
			if (!empty($v['__CHAIN__']))
			{
				// real sub-tree
				$chain = $v['__CHAIN__'];
				$treeElem = $v['__CHAIN__']->getLastElement()->getValue();

				if (is_array($treeElem))
				{
					$treeElem = $treeElem[1];
				}
			}
			else
			{
				// virtual category
				$chain = null;
				$treeElem = null;
			}

			$branch = self::generateColumnTree($v, $initEntity, $helper_class, $level+1);
		}

		$tree[] = array(
			'fieldName' => $k,
			'humanTitle' => '', // reserved
			'fullHumanTitle' => '', // reserved
			'field' => $treeElem,
			'chain' => $chain,
			'branch' => $branch
		);
	}

	if ($level == 0)
	{
		self::attachLangToColumnTree($tree, $initEntity, $helper_class);
	}

	return $tree;
}