• Модуль: sale
  • Путь к файлу: ~/bitrix/modules/sale/lib/helpers/admin/blocks/ordershipment.php
  • Класс: BitrixSaleHelpersAdminBlocksOrderShipment
  • Вызов: OrderShipment::makeDeliveryServiceTree
static function makeDeliveryServiceTree($items)
{
	$deliveries = array();
	$rootId = array();

	foreach ($items as $item)
		$deliveries[$item['ID']] = $item;

	foreach ($deliveries as $id => $delivery)
	{
		$className = $deliveries[$delivery['PARENT_ID']]['CLASS_NAME'] ?? null;

		if (
			$className
			&& is_callable($className . '::canHasProfiles')
			&& $className::canHasProfiles()
		)
		{
			continue;
		}

		if (!empty($delivery['PARENT_ID']))
		{
			$deliveries[$delivery['PARENT_ID']]['SUBMENU'][$id] = & $deliveries[$id];
		}
		else
		{
			$rootId[] = $id;
		}
	}

	$result = [];
	foreach ($rootId as $id)
	{
		$className = $deliveries[$id]['CLASS_NAME'] ?? null;
		if (
			$className
			&& is_callable($className.'::canHasChildren')
			&& $className::canHasChildren()
			&& !isset($deliveries[$id]['SUBMENU'])
		)
		{
			continue;
		}

		$result[$id] = $deliveries[$id];
	}

	return $result;
}