• Модуль: intranet
  • Путь к файлу: ~/bitrix/modules/intranet/lib/binding/menu.php
  • Класс: BitrixIntranetBindingprepares
  • Вызов: prepares::getValidItems
static function getValidItems($items)
{
	$validData = [];

	if (!is_array($items))
	{
		return $validData;
	}

	// recursive validate
	foreach ($items as &$item)
	{
		if (isset($item['delimiter']))
		{
			$validData[] = [
				'delimiter' => true,
				'sort' => 100
			];
		}
		else if (
			isset($item['id']) &&
			is_string($item['id']) &&
			isset($item['text']) &&
			is_string($item['text']) &&
			(
				!isset($item['href'])
				||
				isset($item['href']) &&
				is_string($item['href'])
			)
		)
		{
			if (isset($item['items']))
			{
				$item['items'] = self::getValidItems($item['items']);
			}
			$item['sort'] = isset($item['sort'])
							? (int) $item['sort']
							: 100;
			$item['system'] = isset($item['system'])
							? (bool) $item['system']
							: false;
			$item['sectionCode'] = isset($item['sectionCode'])
							? (string) $item['sectionCode']
							: self::SECTIONS['other'];
			$validData[] = $item;
		}
	}
	unset($item);

	// sort items
	uasort($validData, function($a, $b)
	{
		if ($a['sort'] == $b['sort'])
		{
			return 0;
		}
		return ($a['sort'] > $b['sort']) ? 1 : -1;
	});

	return array_values($validData);
}