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@17
|
22 * Hooks hook_library_info_alter() and hook_js_settings_alter() allow 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 }
|