• Модуль: mobile
  • Путь к файлу: ~/bitrix/modules/mobile/lib/tab/manager.php
  • Класс: BitrixMobileTabManager
  • Вызов: Manager::__construct
public function __construct($context = null)
{
	Loader::includeModule("mobileapp");
	if ($context == null)
	{
		$this->context = new Context();
	}
	else
	{
		$this->context = $context;
	}

	$this->tabList = [];

	$this->config = include(Application::getDocumentRoot() . self::configPath);
	Loc::loadLanguageFile(Application::getDocumentRoot() . self::tabDirectoryPath . "/tabs.php");
	$tabDirectory = new Directory(Application::getDocumentRoot() . self::tabDirectoryPath);
	$tabsFiles = $tabDirectory->getChildren();
	/**
	 * @var FileSystemEntry $tab
	 */
	foreach ($tabsFiles as $tab)
	{
		if ($tab->isFile() && $tab->getExtension() == "php")
		{
			require_once($tab->getPath());
		}
	}

	$tabsDescription = $this->config["tabs"];
	foreach ($tabsDescription as $tabData)
	{
		$class = $tabData["class"] ?? null;
		$file = $tabData["file"] ?? null;

		if ($file)
		{
			require_once(Application::getDocumentRoot() . $file);
		}

		if (class_exists($class))
		{
			$interfaces = class_implements($class);
			if (!$this->isTabable($interfaces) && !$this->isFactoryTabable($interfaces))
			{
				throw new SystemException(
					"Tab class '{$class}' not implements \Bitrix\Mobile\Tab\Tabable or \Bitrix\Mobile\Tab\FactoryTabable"
				);
			}
		}
		else
		{
			continue;
		}

		$instance = new $class();
		$instance->setContext($this->context);

		if ($this->isFactoryTabable($interfaces))
		{
			$this->tabList = array_merge($this->tabList, $instance->getTabsList());
		}
		else
		{
			$this->tabList[$tabData['code']] = $instance;
		}
	}

	if ($savedConfig = $this->getUserPresetConfig())
	{
		$this->config["presets"]["manual"] = $savedConfig;
	}
}