Backup of db before drupal security update
[yaffs-website] / web / core / modules / locale / src / LocaleProjectStorage.php
1 <?php
2
3 namespace Drupal\locale;
4
5 use Drupal\Core\KeyValueStore\KeyValueFactoryInterface;
6
7 /**
8  * Provides the locale project storage system using a key value store.
9  */
10 class LocaleProjectStorage implements LocaleProjectStorageInterface {
11
12   /**
13    * The key value store to use.
14    *
15    * @var \Drupal\Core\KeyValueStore\KeyValueStoreInterface
16    */
17   protected $keyValueStore;
18
19   /**
20    * Static state cache.
21    *
22    * @var array
23    */
24   protected $cache = [];
25
26   /**
27    * Cache status flag.
28    *
29    * @var bool
30    */
31   protected static $all = FALSE;
32
33   /**
34    * Constructs a State object.
35    *
36    * @param \Drupal\Core\KeyValueStore\KeyValueFactoryInterface $key_value_factory
37    *   The key value store to use.
38    */
39   public function __construct(KeyValueFactoryInterface $key_value_factory) {
40     $this->keyValueStore = $key_value_factory->get('locale.project');
41   }
42
43   /**
44    * {@inheritdoc}
45    */
46   public function get($key, $default = NULL) {
47     $values = $this->getMultiple([$key]);
48     return isset($values[$key]) ? $values[$key] : $default;
49   }
50
51   /**
52    * {@inheritdoc}
53    */
54   public function getMultiple(array $keys) {
55     $values = [];
56     $load = [];
57     foreach ($keys as $key) {
58       // Check if we have a value in the cache.
59       if (isset($this->cache[$key])) {
60         $values[$key] = $this->cache[$key];
61       }
62       // Load the value if we don't have an explicit NULL value.
63       elseif (!array_key_exists($key, $this->cache)) {
64         $load[] = $key;
65       }
66     }
67
68     if ($load) {
69       $loaded_values = $this->keyValueStore->getMultiple($load);
70       foreach ($load as $key) {
71         // If we find a value, even one that is NULL, add it to the cache and
72         // return it.
73         if (isset($loaded_values[$key])) {
74           $values[$key] = $loaded_values[$key];
75           $this->cache[$key] = $loaded_values[$key];
76         }
77         else {
78           $this->cache[$key] = NULL;
79         }
80       }
81     }
82
83     return $values;
84   }
85
86   /**
87    * {@inheritdoc}
88    */
89   public function set($key, $value) {
90     $this->setMultiple([$key => $value]);
91   }
92
93   /**
94    * {@inheritdoc}
95    */
96   public function setMultiple(array $data) {
97     foreach ($data as $key => $value) {
98       $this->cache[$key] = $value;
99     }
100     $this->keyValueStore->setMultiple($data);
101   }
102
103   /**
104    * {@inheritdoc}
105    */
106   public function delete($key) {
107     $this->deleteMultiple([$key]);
108   }
109
110   /**
111    * {@inheritdoc}
112    */
113   public function deleteMultiple(array $keys) {
114     foreach ($keys as $key) {
115       $this->cache[$key] = NULL;
116     }
117     $this->keyValueStore->deleteMultiple($keys);
118   }
119
120   /**
121    * {@inheritdoc}
122    */
123   public function resetCache() {
124     $this->cache = [];
125     static::$all = FALSE;
126   }
127
128   /**
129    * {@inheritdoc}
130    */
131   public function deleteAll() {
132     $this->keyValueStore->deleteAll();
133     $this->resetCache();
134   }
135
136   /**
137    * {@inheritdoc}
138    */
139   public function disableAll() {
140     $projects = $this->keyValueStore->getAll();
141     foreach (array_keys($projects) as $key) {
142       $projects[$key]['status'] = 0;
143       if (isset($cache[$key])) {
144         $cache[$key] = $projects[$key];
145       }
146     }
147     $this->keyValueStore->setMultiple($projects);
148
149   }
150
151   /**
152    * {@inheritdoc}
153    */
154   public function countProjects() {
155     return count($this->getAll());
156   }
157
158   /**
159    * {@inheritdoc}
160    */
161   public function getAll() {
162     if (!static::$all) {
163       $this->cache = $this->keyValueStore->getAll();
164       static::$all = TRUE;
165     }
166     return $this->cache;
167   }
168
169 }