PluginProbe ʕ •ᴥ•ʔ
Advanced Ads – Ad Manager & AdSense / 2.0.24
Advanced Ads – Ad Manager & AdSense v2.0.24
2.0.24 2.0.23 2.0.22 2.0.21 1.38.0 1.39.0 1.39.1 1.39.2 1.39.3 1.39.4 1.4.0 1.4.1 1.4.2 1.4.3 1.4.4 1.4.5 1.4.6 1.4.7 1.4.8 1.4.9 1.40.0 1.40.1 1.40.2 1.41.0 1.42.0 1.42.1 1.42.2 1.43.0 1.44.0 1.44.1 1.45.0 1.45.1 1.46.0 1.47.0 1.47.1 1.47.2 1.47.3 1.47.4 1.47.5 1.48.0 1.48.1 1.49.0 1.5.0 1.5.0.1 1.5.1 1.5.2 1.5.2.1 1.5.4 1.5.4.1 1.5.5 1.50.0 1.51.0 1.51.1 1.51.2 1.51.3 1.52.0 1.52.1 1.52.2 1.52.3 1.52.4 1.53.0 1.53.1 1.53.2 1.54.0 1.54.1 1.55.0 1.56.0 1.56.1 1.56.2 1.56.3 1.56.4 1.6 1.6.1 1.6.10 1.6.10.1 1.6.10.2 1.6.11 1.6.11.1 1.6.12 1.6.13 1.6.14 1.6.15 1.6.16 1.6.17 1.6.17.1 1.6.17.2 1.6.2 1.6.2.1 1.6.3 1.6.4 1.6.4.1 1.6.5 1.6.6 1.6.6.1 1.6.7 1.6.7.1 1.6.8 1.6.8.1 1.6.8.2 1.6.8.3 1.6.9 1.6.9.1 1.6.9.2 1.6.9.3 1.6.9.4 1.7 1.7.0.1 1.7.0.2 1.7.0.3 1.7.1 1.7.1.1 1.7.1.2 1.7.1.3 1.7.1.4 1.7.1.5 1.7.10 trunk 1.7.11 1.0.1 1.7.12 1.0.2 1.7.13 1.0.3 1.7.14 1.1.0 1.7.15 1.1.1 1.7.16 1.1.2 1.7.17 1.1.3 1.7.18 1.10 1.7.19 1.10.1 1.7.2 1.10.10 1.7.2.1 1.10.11 1.7.20 1.10.12 1.7.21 1.10.2 1.7.22 1.10.3 1.7.23 1.10.4 1.7.24 1.10.5 1.7.25 1.10.6 1.7.3 1.10.7 1.7.4 1.10.8 1.7.4.1 1.10.9 1.7.4.2 1.11 1.7.4.3 1.11.1 1.7.4.4 1.11.2 1.7.4.5 1.12 1.7.5 1.13 1.7.5.1 1.13.1 1.7.6 1.13.2 1.7.7 1.13.3 1.7.8 1.13.4 1.7.9 1.13.5 1.7.9.1 1.13.6 1.7.9.2 1.13.7 1.7.9.3 1.13.8 1.8 1.14 1.8.1 1.14.1 1.8.10 1.14.10 1.8.11 1.14.11 1.8.12 1.14.2 1.8.13 1.14.3 1.8.14 1.14.4 1.8.15 1.14.5 1.8.16 1.14.6 1.8.17 1.14.7 1.8.18 1.14.8 1.8.19 1.14.9 1.8.2 1.15 1.8.20 1.16 1.8.21 1.16.1 1.8.22 1.17 1.8.23 1.17.1 1.8.24 1.17.10 1.8.25 1.17.10-rc.1 1.8.26 1.17.11 1.8.27 1.17.12 1.8.28 1.17.12-rc.1 1.8.29 1.17.2 1.8.3 1.17.3 1.8.30 1.17.4 1.8.4 1.17.5 1.8.5 1.17.6 1.8.6 1.17.7 1.8.7 1.17.8 1.8.8 1.17.9 1.8.9 1.17.9-beta.1 1.9 1.18.0 2.0.0 1.19.0 2.0.1 1.19.1 2.0.10 1.2 2.0.11 1.2.1 2.0.12 1.2.2 2.0.13 1.2.3 2.0.14 1.2.4 2.0.15 1.2.5 2.0.16 1.2.6 2.0.17 1.2.7 2.0.18 1.20.0 2.0.19 1.20.0-rc.1 2.0.2 1.20.0-rc.2 2.0.20 1.20.1 2.0.3 1.20.2 2.0.4 1.20.3 2.0.5 1.21.0 2.0.6 1.21.1 2.0.7 1.22.0 2.0.8 1.22.1 2.0.9 1.22.2 1.23.0 1.23.1 1.23.2 1.24.0 1.24.1 1.24.2 1.25.0 1.25.1 1.26.0 1.27.0 1.28.0 1.29.0 1.29.1 1.3 1.3.1 1.3.10 1.3.11 1.3.12 1.3.13 1.3.14 1.3.15 1.3.16 1.3.17 1.3.18 1.3.2 1.3.3 1.3.4 1.3.5 1.3.6 1.3.7 1.3.8 1.3.9 1.30.0 1.30.1 1.30.2 1.30.2-rc.1 1.30.3 1.30.4 1.30.4-rc.1 1.30.5 1.31.0 1.31.1 1.32.0 1.32.0-rc.1 1.33.0 1.33.1 1.33.2 1.34.0 1.35.0 1.35.1 1.36.0 1.36.1 1.36.2 1.36.3 1.37.0 1.37.1 1.37.2
advanced-ads / includes / utilities / class-cache.php
advanced-ads / includes / utilities Last commit date
class-ad-list-stats.php 1 week ago class-cache.php 1 week ago class-conditional.php 3 months ago class-content-injection.php 1 year ago class-data.php 1 week ago class-sanitize.php 1 year ago class-testing.php 1 year ago class-validation.php 1 year ago class-wordpress.php 1 week ago index.php 2 years ago
class-cache.php
190 lines
1 <?php
2 /**
3 * Object cache helper for Advanced Ads entity data.
4 *
5 * @package AdvancedAds
6 * @author Advanced Ads <info@wpadvancedads.com>
7 * @since 2.0.14
8 */
9
10 namespace AdvancedAds\Utilities;
11
12 defined( 'ABSPATH' ) || exit;
13
14 /**
15 * Cache.
16 *
17 * Wraps wp_cache_* with versioned keys per prefix so flush_group() can invalidate
18 * a whole namespace without deleting individual entries (Redis-friendly).
19 */
20 class Cache {
21
22 /**
23 * wp_cache group for all Advanced Ads cache entries.
24 *
25 * @var string
26 */
27 public const GROUP = 'advanced-ads';
28
29 /**
30 * Cache prefix for ad list / entity data.
31 *
32 * @var string
33 */
34 public const PREFIX_ADS = 'ads';
35
36 /**
37 * Cache prefix for group list / entity data.
38 *
39 * @var string
40 */
41 public const PREFIX_GROUPS = 'groups';
42
43 /**
44 * Cache prefix for placement list / entity data.
45 *
46 * @var string
47 */
48 public const PREFIX_PLACEMENTS = 'placements';
49
50 /**
51 * Logical key: ID => lightweight list row (all entity prefixes).
52 *
53 * @var string
54 */
55 public const KEY_SUMMARIES = 'summaries';
56
57 /**
58 * Logical key: ID => lightweight list row for post_status any (includes trash).
59 *
60 * @var string
61 */
62 public const KEY_SUMMARIES_ALL_STATUSES = 'summaries_all_statuses';
63
64 /**
65 * Logical key: all entity IDs.
66 *
67 * @var string
68 */
69 public const KEY_ALL_IDS = 'all_ids';
70
71 /**
72 * Suffix for version counter keys stored in the object cache.
73 *
74 * @var string
75 */
76 private const VERSION_SUFFIX = ':version';
77
78 /**
79 * Known prefixes that flush_all() invalidates.
80 *
81 * @var string[]
82 */
83 private const PREFIXES = [
84 self::PREFIX_ADS,
85 self::PREFIX_GROUPS,
86 self::PREFIX_PLACEMENTS,
87 ];
88
89 /**
90 * Read a cached value.
91 *
92 * Returns null on cache miss. Callers should build the value and store it with set().
93 *
94 * @param string $prefix Namespace prefix (e.g. self::PREFIX_ADS).
95 * @param string $key Logical cache key (e.g. self::KEY_SUMMARIES).
96 *
97 * @return mixed|null Cached value, or null when not found.
98 */
99 public static function get( string $prefix, string $key ) {
100 $cache_key = self::build_key( $prefix, $key );
101 $found = false;
102 $value = wp_cache_get( $cache_key, self::GROUP, false, $found );
103
104 if ( ! $found ) {
105 return null;
106 }
107
108 return $value;
109 }
110
111 /**
112 * Store a value in the cache.
113 *
114 * @param string $prefix Namespace prefix.
115 * @param string $key Logical cache key.
116 * @param mixed $value Value to store.
117 *
118 * @return bool
119 */
120 public static function set( string $prefix, string $key, $value ): bool {
121 return wp_cache_set( self::build_key( $prefix, $key ), $value, self::GROUP );
122 }
123
124 /**
125 * Delete a single cached value.
126 *
127 * @param string $prefix Namespace prefix.
128 * @param string $key Logical cache key.
129 *
130 * @return bool
131 */
132 public static function delete( string $prefix, string $key ): bool {
133 return wp_cache_delete( self::build_key( $prefix, $key ), self::GROUP );
134 }
135
136 /**
137 * Invalidate all entries under a prefix by bumping its version counter.
138 *
139 * @param string $prefix Namespace prefix.
140 *
141 * @return void
142 */
143 public static function flush_group( string $prefix ): void {
144 $version_key = $prefix . self::VERSION_SUFFIX;
145 wp_cache_set( $version_key, self::get_version( $prefix ) + 1, self::GROUP );
146 }
147
148 /**
149 * Invalidate all known entity cache prefixes.
150 *
151 * @return void
152 */
153 public static function flush_all(): void {
154 foreach ( self::PREFIXES as $prefix ) {
155 self::flush_group( $prefix );
156 }
157 }
158
159 /**
160 * Build the full wp_cache key for a logical key under a prefix.
161 *
162 * @param string $prefix Namespace prefix.
163 * @param string $key Logical cache key.
164 *
165 * @return string
166 */
167 public static function build_key( string $prefix, string $key ): string {
168 return $prefix . ':v' . self::get_version( $prefix ) . ':' . $key;
169 }
170
171 /**
172 * Get the current version counter for a prefix.
173 *
174 * @param string $prefix Namespace prefix.
175 *
176 * @return int
177 */
178 public static function get_version( string $prefix ): int {
179 $version_key = $prefix . self::VERSION_SUFFIX;
180 $found = false;
181 $version = wp_cache_get( $version_key, self::GROUP, false, $found );
182
183 if ( $found ) {
184 return (int) $version;
185 }
186
187 return 1;
188 }
189 }
190