Mercurial > hg > isophonics-drupal-site
view core/lib/Drupal/Core/Asset/LibraryDependencyResolver.php @ 13:5fb285c0d0e3
Update Drupal core to 8.4.7 via Composer. Security update; I *think* we've
been lucky to get away with this so far, as we don't support self-registration
which seems to be used by the so-called "drupalgeddon 2" attack that 8.4.5
was vulnerable to.
author | Chris Cannam |
---|---|
date | Mon, 23 Apr 2018 09:33:26 +0100 |
parents | 4c8ae668cc8c |
children | 129ea1e6d783 |
line wrap: on
line source
<?php namespace Drupal\Core\Asset; /** * Resolves the dependencies of asset (CSS/JavaScript) libraries. */ class LibraryDependencyResolver implements LibraryDependencyResolverInterface { /** * The library discovery service. * * @var \Drupal\Core\Asset\LibraryDiscoveryInterface */ protected $libraryDiscovery; /** * Constructs a new LibraryDependencyResolver instance. * * @param \Drupal\Core\Asset\LibraryDiscoveryInterface $library_discovery * The library discovery service. */ public function __construct(LibraryDiscoveryInterface $library_discovery) { $this->libraryDiscovery = $library_discovery; } /** * {@inheritdoc} */ public function getLibrariesWithDependencies(array $libraries) { return $this->doGetDependencies($libraries); } /** * Gets the given libraries with its dependencies. * * Helper method for ::getLibrariesWithDependencies(). * * @param string[] $libraries_with_unresolved_dependencies * A list of libraries, with unresolved dependencies, in the order they * should be loaded. * @param string[] $final_libraries * The final list of libraries (the return value) that is being built * recursively. * * @return string[] * A list of libraries, in the order they should be loaded, including their * dependencies. */ protected function doGetDependencies(array $libraries_with_unresolved_dependencies, array $final_libraries = []) { foreach ($libraries_with_unresolved_dependencies as $library) { if (!in_array($library, $final_libraries)) { list($extension, $name) = explode('/', $library, 2); $definition = $this->libraryDiscovery->getLibraryByName($extension, $name); if (!empty($definition['dependencies'])) { $final_libraries = $this->doGetDependencies($definition['dependencies'], $final_libraries); } $final_libraries[] = $library; } } return $final_libraries; } /** * {@inheritdoc} */ public function getMinimalRepresentativeSubset(array $libraries) { $minimal = []; // Determine each library's dependencies. $with_deps = []; foreach ($libraries as $library) { $with_deps[$library] = $this->getLibrariesWithDependencies([$library]); } foreach ($libraries as $library) { $exists = FALSE; foreach ($with_deps as $other_library => $dependencies) { if ($library == $other_library) { continue; } if (in_array($library, $dependencies)) { $exists = TRUE; break; } } if (!$exists) { $minimal[] = $library; } } return $minimal; } }