• Модуль: intranet
  • Путь к файлу: ~/bitrix/modules/intranet/lib/UI/LeftMenu/Preset/Manager.php
  • Класс: BitrixIntranetUILeftMenuPresetManager
  • Вызов: Manager::getAllPresets
static function getAllPresets(string $siteId): array
{
	if (isset(self::$presets[$siteId]))
	{
		return self::$presets[$siteId];
	}

	$thisFile = new MainIOFile(__FILE__);
	$thisDir = $thisFile->getDirectory();
	foreach ($thisDir->getChildren() as $child)
	{
		if (!($child instanceof MainIOFile) || $child->getExtension() !== 'php')
		{
			continue;
		}
		/*@var MainIOFile $child */
		$name = 'BitrixIntranetUILeftMenuPreset\'.str_replace('.'.$child->getExtension(), '', $child->getName());
		if (!( interface_exists($name) || class_exists($name)))
		{
			$res = include_once $child->getPhysicalPath();
		}
	}
	$classes = array_slice(get_declared_classes(), 0 - sizeof($thisDir->getChildren()));
	$result = [];
	foreach ($classes as $class)
	{
		try
		{
			$res = new ReflectionClass($class);
			if ($res->implementsInterface(PresetInterface::class)
				&& !$res->isAbstract()
				&& $class::isAvailable()
			)
			{
				$preset = $res->newInstance($siteId);
				$result[$preset->getCode()] = $preset;
			}
		}
		catch(ReflectionException $exception)
		{
		}
	}
	self::$presets[$siteId] = $result;
	return self::$presets[$siteId];
}