Chris@0
|
1 <?php
|
Chris@0
|
2
|
Chris@0
|
3 namespace Drupal\Component\FileCache;
|
Chris@0
|
4
|
Chris@0
|
5 /**
|
Chris@0
|
6 * Creates a FileCache object.
|
Chris@0
|
7 */
|
Chris@0
|
8 class FileCacheFactory {
|
Chris@0
|
9
|
Chris@0
|
10 /**
|
Chris@0
|
11 * The configuration key to disable FileCache completely.
|
Chris@0
|
12 */
|
Chris@0
|
13 const DISABLE_CACHE = 'file_cache_disable';
|
Chris@0
|
14
|
Chris@0
|
15 /**
|
Chris@0
|
16 * The configuration used to create FileCache objects.
|
Chris@0
|
17 *
|
Chris@0
|
18 * @var array
|
Chris@0
|
19 */
|
Chris@0
|
20 protected static $configuration;
|
Chris@0
|
21
|
Chris@0
|
22 /**
|
Chris@0
|
23 * The cache prefix.
|
Chris@0
|
24 *
|
Chris@0
|
25 * @var string
|
Chris@0
|
26 */
|
Chris@0
|
27 protected static $prefix;
|
Chris@0
|
28
|
Chris@0
|
29 /**
|
Chris@0
|
30 * Instantiates a FileCache object for a given collection identifier.
|
Chris@0
|
31 *
|
Chris@0
|
32 * @param string $collection
|
Chris@0
|
33 * The collection identifier for this FileCache.
|
Chris@0
|
34 * @param array $default_configuration
|
Chris@0
|
35 * (optional) The default configuration for this FileCache collection. This
|
Chris@0
|
36 * can be used to e.g. specify default usage of a FileCache class.
|
Chris@0
|
37 *
|
Chris@0
|
38 * @return \Drupal\Component\FileCache\FileCacheInterface
|
Chris@0
|
39 * The initialized FileCache object.
|
Chris@0
|
40 */
|
Chris@0
|
41 public static function get($collection, $default_configuration = []) {
|
Chris@0
|
42 // If there is a special key in the configuration, disable FileCache completely.
|
Chris@0
|
43 if (!empty(static::$configuration[static::DISABLE_CACHE])) {
|
Chris@0
|
44 return new NullFileCache('', '');
|
Chris@0
|
45 }
|
Chris@0
|
46
|
Chris@0
|
47 $configuration = [];
|
Chris@0
|
48
|
Chris@0
|
49 // Check for a collection specific setting first.
|
Chris@0
|
50 if (isset(static::$configuration[$collection])) {
|
Chris@0
|
51 $configuration += static::$configuration[$collection];
|
Chris@0
|
52 }
|
Chris@0
|
53 // Then check if a default configuration has been provided.
|
Chris@0
|
54 if (!empty($default_configuration)) {
|
Chris@0
|
55 $configuration += $default_configuration;
|
Chris@0
|
56 }
|
Chris@0
|
57 // Last check if a default setting has been provided.
|
Chris@0
|
58 if (isset(static::$configuration['default'])) {
|
Chris@0
|
59 $configuration += static::$configuration['default'];
|
Chris@0
|
60 }
|
Chris@0
|
61
|
Chris@0
|
62 // Ensure that all properties are set.
|
Chris@0
|
63 $fallback_configuration = [
|
Chris@0
|
64 'class' => '\Drupal\Component\FileCache\FileCache',
|
Chris@0
|
65 'collection' => $collection,
|
Chris@0
|
66 'cache_backend_class' => NULL,
|
Chris@0
|
67 'cache_backend_configuration' => [],
|
Chris@0
|
68 ];
|
Chris@0
|
69
|
Chris@0
|
70 $configuration = $configuration + $fallback_configuration;
|
Chris@0
|
71
|
Chris@0
|
72 $class = $configuration['class'];
|
Chris@0
|
73 return new $class(static::getPrefix(), $configuration['collection'], $configuration['cache_backend_class'], $configuration['cache_backend_configuration']);
|
Chris@0
|
74 }
|
Chris@0
|
75
|
Chris@0
|
76 /**
|
Chris@0
|
77 * Gets the configuration used for constructing future file cache objects.
|
Chris@0
|
78 *
|
Chris@0
|
79 * @return array
|
Chris@0
|
80 * The configuration that is used.
|
Chris@0
|
81 */
|
Chris@0
|
82 public static function getConfiguration() {
|
Chris@0
|
83 return static::$configuration;
|
Chris@0
|
84 }
|
Chris@0
|
85
|
Chris@0
|
86 /**
|
Chris@0
|
87 * Sets the configuration to use for constructing future file cache objects.
|
Chris@0
|
88 *
|
Chris@0
|
89 * @param array $configuration
|
Chris@0
|
90 * The configuration to use.
|
Chris@0
|
91 */
|
Chris@0
|
92 public static function setConfiguration($configuration) {
|
Chris@0
|
93 static::$configuration = $configuration;
|
Chris@0
|
94 }
|
Chris@0
|
95
|
Chris@0
|
96 /**
|
Chris@0
|
97 * Returns the cache prefix.
|
Chris@0
|
98 *
|
Chris@0
|
99 * @return string
|
Chris@0
|
100 * The cache prefix.
|
Chris@0
|
101 */
|
Chris@0
|
102 public static function getPrefix() {
|
Chris@0
|
103 return static::$prefix;
|
Chris@0
|
104 }
|
Chris@0
|
105
|
Chris@0
|
106 /**
|
Chris@0
|
107 * Sets the cache prefix that should be used.
|
Chris@0
|
108 *
|
Chris@0
|
109 * Should be set to a secure, unique key to prevent cache pollution by a
|
Chris@0
|
110 * third party.
|
Chris@0
|
111 *
|
Chris@0
|
112 * @param string $prefix
|
Chris@0
|
113 * The cache prefix.
|
Chris@0
|
114 */
|
Chris@0
|
115 public static function setPrefix($prefix) {
|
Chris@0
|
116 static::$prefix = $prefix;
|
Chris@0
|
117 }
|
Chris@0
|
118
|
Chris@0
|
119 }
|