- Модуль: 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] ?? []
];
}