• Модуль: main
  • Путь к файлу: ~/bitrix/modules/main/lib/page/asset.php
  • Класс: BitrixMainPageAsset
  • Вызов: Asset::getAssetInfo
public function getAssetInfo($id, $mode)
{
	$id = strtoupper(trim($id));
	$emptyData = ['JS' => [], 'BUNDLE_JS' => [], 'CSS' => [], 'BUNDLE_CSS' => [], 'STRINGS' => []];

	if (!isset($this->targetList[$id]))
	{
		return $emptyData;
	}

	static $cacheInfo = [
		AssetMode::STANDARD => null,
		AssetMode::COMPOSITE => null,
		AssetMode::ALL => null,
		AssetMode::SPECIAL => null
	];

	if ($cacheInfo[$mode] === null)
	{
		$cacheInfo[$mode] = $emptyData;

		foreach ($this->strings as $locationID => $location)
		{
			foreach ($location as $key => $item)
			{
				if ($mode == $item['MODE'])
				{
					$cacheInfo[$mode]['STRINGS'][$item['TARGET'][0]][] = $item['CONTENT'];
				}
			}
		}

		foreach (['JS', 'CSS'] as $type)
		{
			foreach ($this->getTargetList($type) as $set)
			{
				$cache = &$cacheInfo[$mode][$type][$set['NAME']];
				$cacheFull = &$cacheInfo[$mode]['BUNDLE_'.$type][$set['NAME']];

				if (!is_array($cache))
				{
					$cache = [];
				}

				if (!is_array($cacheFull))
				{
					$cacheFull = [];
				}

				$fileList = $this->fileList[$type][$set['NAME']] ?? [];
				$targetList = $this->targetList['KERNEL'][$type.'_LIST'][$set['NAME']] ?? [];

				$items = [];
				if ($mode === $set['MODE'] && isset($fileList['FILES']))
				{
					$items = $fileList['FILES'];
				}
				elseif (isset($fileList['UP_NEW_FILES']))
				{
					$items = $fileList['UP_NEW_FILES'];
				}

				if (empty($items))
				{
					continue;
				}

				foreach ($items as $item)
				{
					$cache[] = $item;

					if (isset($fileList['FULL_FILES']) && isset($fileList['FULL_FILES'][$item]))
					{
						$cacheFull = array_merge($cacheFull, $fileList['FULL_FILES'][$item]);
					}

					if ($set['PARENT_NAME'] == 'KERNEL')
					{
						foreach ($targetList['WHERE_USED'] as $target => $tmp)
						{
							$cacheInfo[$mode][$type][$target][] = $item;

							if (isset($fileList['FULL_FILES']) && isset($fileList['FULL_FILES'][$item]))
							{
								if (!is_array($cacheInfo[$mode]['BUNDLE_'.$type][$target]))
								{
									$cacheInfo[$mode]['BUNDLE_'.$type][$target] = [];
								}

								$cacheInfo[$mode]['BUNDLE_'.$type][$target] = array_merge(
									$cacheInfo[$mode]['BUNDLE_'.$type][$target],
									$fileList['FULL_FILES'][$item]
								);
							}
						}
					}
				}
			}
		}
	}

	return [
		'JS' => $cacheInfo[$mode]['JS'][$id] ?? [],
		'BUNDLE_JS' => $cacheInfo[$mode]['BUNDLE_JS'][$id] ?? [],
		'CSS' => $cacheInfo[$mode]['CSS'][$id] ?? [],
		'BUNDLE_CSS' => $cacheInfo[$mode]['BUNDLE_CSS'][$id] ?? [],
		'STRINGS' => $cacheInfo[$mode]['STRINGS'][$id] ?? []
	];
}