Mercurial > hg > isophonics-drupal-site
annotate core/lib/Drupal/Core/Asset/LibraryDiscovery.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 |
rev | line source |
---|---|
Chris@0 | 1 <?php |
Chris@0 | 2 |
Chris@0 | 3 namespace Drupal\Core\Asset; |
Chris@0 | 4 |
Chris@0 | 5 use Drupal\Core\Cache\CacheCollectorInterface; |
Chris@0 | 6 |
Chris@0 | 7 /** |
Chris@0 | 8 * Discovers available asset libraries in Drupal. |
Chris@0 | 9 */ |
Chris@0 | 10 class LibraryDiscovery implements LibraryDiscoveryInterface { |
Chris@0 | 11 |
Chris@0 | 12 /** |
Chris@0 | 13 * The library discovery cache collector. |
Chris@0 | 14 * |
Chris@0 | 15 * @var \Drupal\Core\Cache\CacheCollectorInterface |
Chris@0 | 16 */ |
Chris@0 | 17 protected $collector; |
Chris@0 | 18 |
Chris@0 | 19 /** |
Chris@0 | 20 * The final library definitions, statically cached. |
Chris@0 | 21 * |
Chris@0 | 22 * hook_library_info_alter() and hook_js_settings_alter() allows modules |
Chris@0 | 23 * and themes to dynamically alter a library definition (once per request). |
Chris@0 | 24 * |
Chris@0 | 25 * @var array |
Chris@0 | 26 */ |
Chris@0 | 27 protected $libraryDefinitions = []; |
Chris@0 | 28 |
Chris@0 | 29 /** |
Chris@0 | 30 * Constructs a new LibraryDiscovery instance. |
Chris@0 | 31 * |
Chris@0 | 32 * @param \Drupal\Core\Cache\CacheCollectorInterface $library_discovery_collector |
Chris@0 | 33 * The library discovery cache collector. |
Chris@0 | 34 */ |
Chris@0 | 35 public function __construct(CacheCollectorInterface $library_discovery_collector) { |
Chris@0 | 36 $this->collector = $library_discovery_collector; |
Chris@0 | 37 } |
Chris@0 | 38 |
Chris@0 | 39 /** |
Chris@0 | 40 * {@inheritdoc} |
Chris@0 | 41 */ |
Chris@0 | 42 public function getLibrariesByExtension($extension) { |
Chris@0 | 43 if (!isset($this->libraryDefinitions[$extension])) { |
Chris@0 | 44 $libraries = $this->collector->get($extension); |
Chris@0 | 45 $this->libraryDefinitions[$extension] = []; |
Chris@0 | 46 foreach ($libraries as $name => $definition) { |
Chris@0 | 47 $this->libraryDefinitions[$extension][$name] = $definition; |
Chris@0 | 48 } |
Chris@0 | 49 } |
Chris@0 | 50 |
Chris@0 | 51 return $this->libraryDefinitions[$extension]; |
Chris@0 | 52 } |
Chris@0 | 53 |
Chris@0 | 54 /** |
Chris@0 | 55 * {@inheritdoc} |
Chris@0 | 56 */ |
Chris@0 | 57 public function getLibraryByName($extension, $name) { |
Chris@0 | 58 $extension = $this->getLibrariesByExtension($extension); |
Chris@0 | 59 return isset($extension[$name]) ? $extension[$name] : FALSE; |
Chris@0 | 60 } |
Chris@0 | 61 |
Chris@0 | 62 /** |
Chris@0 | 63 * {@inheritdoc} |
Chris@0 | 64 */ |
Chris@0 | 65 public function clearCachedDefinitions() { |
Chris@0 | 66 $this->libraryDefinitions = []; |
Chris@0 | 67 $this->collector->clear(); |
Chris@0 | 68 } |
Chris@0 | 69 |
Chris@0 | 70 } |