protected function LibraryDiscoveryParser::applyLibrariesOverride in Drupal 10
Same name and namespace in other branches
- 8 core/lib/Drupal/Core/Asset/LibraryDiscoveryParser.php \Drupal\Core\Asset\LibraryDiscoveryParser::applyLibrariesOverride()
- 9 core/lib/Drupal/Core/Asset/LibraryDiscoveryParser.php \Drupal\Core\Asset\LibraryDiscoveryParser::applyLibrariesOverride()
Apply libraries overrides specified for the current active theme.
Parameters
array $libraries: The libraries definitions.
string $extension: The extension in which these libraries are defined.
Return value
array The modified libraries definitions.
File
- core/
lib/ Drupal/ Core/ Asset/ LibraryDiscoveryParser.php, line 383
Class
- LibraryDiscoveryParser
- Parses library files to get extension data.
Namespace
Drupal\Core\AssetCode
protected function applyLibrariesOverride($libraries, $extension) {
$active_theme = $this->themeManager
->getActiveTheme();
// ActiveTheme::getLibrariesOverride() returns libraries-overrides for the
// current theme as well as all its base themes.
$all_libraries_overrides = $active_theme
->getLibrariesOverride();
foreach ($all_libraries_overrides as $theme_path => $libraries_overrides) {
foreach ($libraries as $library_name => $library) {
// Process libraries overrides.
if (isset($libraries_overrides["{$extension}/{$library_name}"])) {
if (isset($library['deprecated'])) {
$override_message = sprintf('Theme "%s" is overriding a deprecated library.', $extension);
$library_deprecation = str_replace('%library_id%', "{$extension}/{$library_name}", $library['deprecated']);
@trigger_error("{$override_message} {$library_deprecation}", E_USER_DEPRECATED);
}
// Active theme defines an override for this library.
$override_definition = $libraries_overrides["{$extension}/{$library_name}"];
if (is_string($override_definition) || $override_definition === FALSE) {
// A string or boolean definition implies an override (or removal)
// for the whole library. Use the override key to specify that this
// library will be overridden when it is called.
// @see \Drupal\Core\Asset\LibraryDiscovery::getLibraryByName()
if ($override_definition) {
$libraries[$library_name]['override'] = $override_definition;
}
else {
$libraries[$library_name]['override'] = FALSE;
}
}
elseif (is_array($override_definition)) {
// An array definition implies an override for an asset within this
// library.
foreach ($override_definition as $sub_key => $value) {
// Throw an exception if the asset is not properly specified.
if (!is_array($value)) {
throw new InvalidLibrariesOverrideSpecificationException(sprintf('Library asset %s is not correctly specified. It should be in the form "extension/library_name/sub_key/path/to/asset.js".', "{$extension}/{$library_name}/{$sub_key}"));
}
if ($sub_key === 'drupalSettings') {
// drupalSettings may not be overridden.
throw new InvalidLibrariesOverrideSpecificationException(sprintf('drupalSettings may not be overridden in libraries-override. Trying to override %s. Use hook_library_info_alter() instead.', "{$extension}/{$library_name}/{$sub_key}"));
}
elseif ($sub_key === 'css') {
// SMACSS category should be incorporated into the asset name.
foreach ($value as $category => $overrides) {
$this
->setOverrideValue($libraries[$library_name], [
$sub_key,
$category,
], $overrides, $theme_path);
}
}
else {
$this
->setOverrideValue($libraries[$library_name], [
$sub_key,
], $value, $theme_path);
}
}
}
}
}
}
return $libraries;
}