- Модуль: landing
- Путь к файлу: ~/bitrix/modules/landing/lib/assets/preprocessing/icon.php
- Класс: BitrixLandingAssetsPreProcessingIcon
- Вызов: Icon::saveAssets
static function saveAssets(Block $block): void
{
$iconSrc = Config::get('icon_src');
$iconVendors = Config::get('icon_vendors');
$blockContent = $block->getContent();
if (!$iconSrc || !$iconVendors || !$blockContent)
{
return;
}
$assetsIcon = [];
$iconVendors = (array)$iconVendors;
$vendorsStr = '(' . implode('|', $iconVendors) . ')';
$prefixesStr = $vendorsStr;
// special vendors
$iconVendorsConfig = Config::get('icon_vendors_config');
if ($iconVendorsConfig && !empty($iconVendorsConfig))
{
$classPrefixes = $iconVendors;
foreach ($iconVendorsConfig as $vendor => $config)
{
$classPrefixes[array_search($vendor, $classPrefixes, true)] = $config['class_prefix'];
}
$prefixesStr = '(' . implode('|', array_unique($classPrefixes)) . ')';
}
$found = preg_match_all(
'/(?<=[s"])' . $vendorsStr . '?s*(' . $prefixesStr . '-([^s"/\]+))/s',
$blockContent,
$matches
);
if ($found)
{
foreach ($matches[0] as $i => $full)
{
$vendor = $matches[1][$i]
? trim($matches[1][$i])
: trim($matches[3][$i]);
$class = trim($matches[2][$i]);
[$vendor, $class] = self::updateIconsBeforeSave($vendor, $class);
if (!isset($assetsIcon[$vendor]))
{
$assetsIcon[$vendor] = [];
}
$assetsIcon[$vendor][$class] = self::getIconContentByClass(
$class,
$vendor
);
if ($assetsIcon[$vendor][$class] === null)
{
unset($assetsIcon[$vendor][$class]);
}
if (!$assetsIcon[$vendor])
{
unset($assetsIcon[$vendor]);
}
}
}
$block->saveAssets([
'icon' => $assetsIcon
]);
}