PluginProbe ʕ •ᴥ•ʔ
Independent Analytics – WordPress Analytics Plugin / 2.2.0
Independent Analytics – WordPress Analytics Plugin v2.2.0
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 1.19.1 1.2 1.20.0 1.21.0 1.22.0 1.22.1 1.23.0 1.23.1 1.24.0 1.24.1 1.25.0 1.25.1 1.26.0 1.27.0 1.28.0 1.28.1 1.28.2 1.28.3 1.29.0 1.3 1.30.0 1.30.1 1.4 1.5 1.6 1.7 1.8 1.9 2.0.0 2.0.1 2.1.4 2.1.5 2.1.6 2.10.0 2.10.1 2.10.2 2.10.3 2.10.4 2.11.0 2.11.1 2.11.10 2.11.2 2.11.3 2.11.4 2.11.5 2.11.6 2.11.7 2.11.8 2.11.9 2.12.0 2.12.1 2.12.2 2.13.1 2.13.2 2.13.5 2.13.6 2.14.0 2.14.1 2.14.2 2.14.4 2.14.6 2.14.7 2.14.8 2.14.9 2.2.0 2.2.1 2.3.1 2.3.2 2.4.2 2.4.3 2.5.0 2.5.1 2.6.0 2.6.1 2.6.2 2.6.3 2.6.4 2.7.0 2.7.1 2.7.2 2.7.3 2.8.2 2.8.3 2.8.4 2.8.5 2.8.6 2.8.7 2.8.8 2.8.9 2.9.2 2.9.3 2.9.4 2.9.5 2.9.6 2.9.7
independent-analytics / vendor / doctrine / cache / lib / Doctrine / Common / Cache / SQLite3Cache.php
independent-analytics / vendor / doctrine / cache / lib / Doctrine / Common / Cache Last commit date
Psr6 2 years ago ApcCache.php 2 years ago ApcuCache.php 2 years ago ArrayCache.php 2 years ago Cache.php 2 years ago CacheProvider.php 2 years ago ChainCache.php 2 years ago ClearableCache.php 2 years ago CouchbaseBucketCache.php 2 years ago CouchbaseCache.php 2 years ago ExtMongoDBCache.php 2 years ago FileCache.php 2 years ago FilesystemCache.php 2 years ago FlushableCache.php 2 years ago InvalidCacheId.php 2 years ago LegacyMongoDBCache.php 2 years ago MemcacheCache.php 2 years ago MemcachedCache.php 2 years ago MongoDBCache.php 2 years ago MultiDeleteCache.php 2 years ago MultiGetCache.php 2 years ago MultiOperationCache.php 2 years ago MultiPutCache.php 2 years ago PhpFileCache.php 2 years ago PredisCache.php 2 years ago RedisCache.php 2 years ago SQLite3Cache.php 2 years ago Version.php 2 years ago VoidCache.php 2 years ago WinCacheCache.php 2 years ago XcacheCache.php 2 years ago ZendDataCache.php 2 years ago
SQLite3Cache.php
155 lines
1 <?php
2
3 namespace IAWP_SCOPED\Doctrine\Common\Cache;
4
5 use SQLite3;
6 use SQLite3Result;
7 use function array_search;
8 use function implode;
9 use function serialize;
10 use function sprintf;
11 use function time;
12 use function unserialize;
13 use const SQLITE3_ASSOC;
14 use const SQLITE3_BLOB;
15 use const SQLITE3_TEXT;
16 /**
17 * SQLite3 cache provider.
18 *
19 * @deprecated Deprecated without replacement in doctrine/cache 1.11. This class will be dropped in 2.0
20 * @internal
21 */
22 class SQLite3Cache extends CacheProvider
23 {
24 /**
25 * The ID field will store the cache key.
26 */
27 public const ID_FIELD = 'k';
28 /**
29 * The data field will store the serialized PHP value.
30 */
31 public const DATA_FIELD = 'd';
32 /**
33 * The expiration field will store a date value indicating when the
34 * cache entry should expire.
35 */
36 public const EXPIRATION_FIELD = 'e';
37 /** @var SQLite3 */
38 private $sqlite;
39 /** @var string */
40 private $table;
41 /**
42 * Calling the constructor will ensure that the database file and table
43 * exist and will create both if they don't.
44 *
45 * @param string $table
46 */
47 public function __construct(SQLite3 $sqlite, $table)
48 {
49 $this->sqlite = $sqlite;
50 $this->table = (string) $table;
51 $this->ensureTableExists();
52 }
53 private function ensureTableExists() : void
54 {
55 $this->sqlite->exec(sprintf('CREATE TABLE IF NOT EXISTS %s(%s TEXT PRIMARY KEY NOT NULL, %s BLOB, %s INTEGER)', $this->table, static::ID_FIELD, static::DATA_FIELD, static::EXPIRATION_FIELD));
56 }
57 /**
58 * {@inheritdoc}
59 */
60 protected function doFetch($id)
61 {
62 $item = $this->findById($id);
63 if (!$item) {
64 return \false;
65 }
66 return unserialize($item[self::DATA_FIELD]);
67 }
68 /**
69 * {@inheritdoc}
70 */
71 protected function doContains($id)
72 {
73 return $this->findById($id, \false) !== null;
74 }
75 /**
76 * {@inheritdoc}
77 */
78 protected function doSave($id, $data, $lifeTime = 0)
79 {
80 $statement = $this->sqlite->prepare(sprintf('INSERT OR REPLACE INTO %s (%s) VALUES (:id, :data, :expire)', $this->table, implode(',', $this->getFields())));
81 $statement->bindValue(':id', $id);
82 $statement->bindValue(':data', serialize($data), SQLITE3_BLOB);
83 $statement->bindValue(':expire', $lifeTime > 0 ? time() + $lifeTime : null);
84 return $statement->execute() instanceof SQLite3Result;
85 }
86 /**
87 * {@inheritdoc}
88 */
89 protected function doDelete($id)
90 {
91 [$idField] = $this->getFields();
92 $statement = $this->sqlite->prepare(sprintf('DELETE FROM %s WHERE %s = :id', $this->table, $idField));
93 $statement->bindValue(':id', $id);
94 return $statement->execute() instanceof SQLite3Result;
95 }
96 /**
97 * {@inheritdoc}
98 */
99 protected function doFlush()
100 {
101 return $this->sqlite->exec(sprintf('DELETE FROM %s', $this->table));
102 }
103 /**
104 * {@inheritdoc}
105 */
106 protected function doGetStats()
107 {
108 // no-op.
109 }
110 /**
111 * Find a single row by ID.
112 *
113 * @param mixed $id
114 *
115 * @return mixed[]|null
116 */
117 private function findById($id, bool $includeData = \true) : ?array
118 {
119 [$idField] = $fields = $this->getFields();
120 if (!$includeData) {
121 $key = array_search(static::DATA_FIELD, $fields);
122 unset($fields[$key]);
123 }
124 $statement = $this->sqlite->prepare(sprintf('SELECT %s FROM %s WHERE %s = :id LIMIT 1', implode(',', $fields), $this->table, $idField));
125 $statement->bindValue(':id', $id, SQLITE3_TEXT);
126 $item = $statement->execute()->fetchArray(SQLITE3_ASSOC);
127 if ($item === \false) {
128 return null;
129 }
130 if ($this->isExpired($item)) {
131 $this->doDelete($id);
132 return null;
133 }
134 return $item;
135 }
136 /**
137 * Gets an array of the fields in our table.
138 *
139 * @psalm-return array{string, string, string}
140 */
141 private function getFields() : array
142 {
143 return [static::ID_FIELD, static::DATA_FIELD, static::EXPIRATION_FIELD];
144 }
145 /**
146 * Check if the item is expired.
147 *
148 * @param mixed[] $item
149 */
150 private function isExpired(array $item) : bool
151 {
152 return isset($item[static::EXPIRATION_FIELD]) && $item[self::EXPIRATION_FIELD] !== null && $item[self::EXPIRATION_FIELD] < time();
153 }
154 }
155