PluginProbe
Independent Analytics – WordPress Analytics Plugin / 2.10.4
Independent Analytics – WordPress Analytics Plugin v2.10.4
2.15.5 2.15.4 2.15.3 2.15.2 2.15.1 2.15.0 2.14.10 trunk 1.1 1.10 1.10.1 1.11 1.12 1.13 1.14 1.15 1.16 1.17 1.17.1 1.17.2 1.17.3 1.17.4 1.18 1.18.1 1.19.0 All 120 releases
independent-analytics / IAWP / Utils / Device_Cache.php
Device_Cache.php
98 lines 2.2 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 namespace IAWP\Utils;
4
5 use IAWPSCOPED\DeviceDetector\Cache\CacheInterface;
6 /** @internal */
7 class Device_Cache implements CacheInterface
8 {
9 private $cache = [];
10 private $dirty = \false;
11 /**
12 * @param string $id
13 * @return mixed
14 */
15 public function fetch(string $id)
16 {
17 return $this->cache[$id] ?? null;
18 }
19 /**
20 * @param string $id
21 * @return bool
22 */
23 public function contains(string $id) : bool
24 {
25 return \array_key_exists($id, $this->cache);
26 }
27 /**
28 * @param string $id
29 * @param $data
30 * @param int $lifeTime
31 * @return bool
32 */
33 public function save(string $id, $data, int $lifeTime = 0) : bool
34 {
35 $this->dirty = \true;
36 $this->cache[$id] = $data;
37 return \true;
38 }
39 /**
40 * @param string $id
41 * @return bool
42 */
43 public function delete(string $id) : bool
44 {
45 $this->dirty = \true;
46 unset($this->cache[$id]);
47 return \true;
48 }
49 /**
50 * @return bool
51 */
52 public function flushAll() : bool
53 {
54 $this->dirty = \true;
55 $this->cache = [];
56 return \true;
57 }
58 public function load_from_file()
59 {
60 if (!\file_exists($this->file())) {
61 $this->cache = [];
62 return;
63 }
64 $json = \file_get_contents($this->file());
65 if ($json === \false) {
66 $this->cache = [];
67 return;
68 }
69 $data = \json_decode($json, \true);
70 if ($data === null) {
71 $this->cache = [];
72 return;
73 }
74 $this->cache = $data;
75 }
76 public function save_to_file()
77 {
78 if ($this->dirty === \false) {
79 return;
80 }
81 $this->dirty = \false;
82 $contents = \json_encode($this->cache);
83 if ($contents === \false) {
84 \unlink($this->file());
85 return;
86 }
87 $response = \file_put_contents($this->file(), $contents);
88 if ($response === \false) {
89 \wp_mkdir_p(\IAWPSCOPED\iawp_temp_path_to(''));
90 \file_put_contents($this->file(), $contents);
91 }
92 }
93 private function file() : string
94 {
95 return \IAWPSCOPED\iawp_temp_path_to('device-detector.json');
96 }
97 }
98