• Модуль: mobileapp
  • Путь к файлу: ~/bitrix/modules/mobileapp/lib/janative/entity/base.php
  • Класс: BitrixMobileAppJanativeEntityBase
  • Вызов: Base::expandDependency
static function expandDependency($ext): array
{

	$result = [];

	if (!is_string($ext))
	{
		return [];
	}

	if ( isset(self::$expandedDependencies[$ext]))
	{
		return self::$expandedDependencies[$ext];
	}

	$findChildren = false;
	$relativeExtDir = $ext;


	if(mb_strpos($ext, "*") === (mb_strlen($ext) - 1))
	{
		$relativeExtDir = str_replace(["/*", "*"], "", $ext);
		$findChildren = true;
	}

	$absolutePath = Manager::getExtensionPath($relativeExtDir);
	if($findChildren && $absolutePath != null)
	{
		$dir = new Directory($absolutePath);
		$items = $dir->getChildren();
		for ($i = 0, $l = count($items); $i < $l; $i++)
		{
			/** @var Directory $entry **/
			$entry = $items[$i];
			if ($entry->isDirectory())
			{
				$toAdd = $entry->getChildren();
				$extensionFile = new File($entry->getPath(). '/extension.js');
				if($extensionFile->isExists())
				{
					$result[] = $extensionFile->getPath();
				}

				$l += count($toAdd);
				$items = array_merge($items, $toAdd);
			}
		}

		$result = array_map(function($path) use ($absolutePath, $relativeExtDir) {
			return str_replace([$absolutePath, "/extension.js"],[$relativeExtDir, ""], $path);
		}, $result);
	}

	$rootExtension = new File($absolutePath . '/extension.js');
	if($rootExtension->isExists())
	{
		$result[] = $relativeExtDir;
	}

	self::$expandedDependencies[$ext] = $result;
	return $result;
}