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 / class-cache-invalidator.php
advanced-ads / includes Last commit date
abstracts 1 day ago admin 1 week ago ads 1 week ago compatibility 1 week ago crons 1 week ago frontend 1 week ago groups 1 day ago importers 1 day ago installation 1 year ago interfaces 5 months ago license 3 months ago placements 1 week ago rest 1 day ago traits 1 week ago utilities 1 week ago cap_map.php 3 years ago class-assets-registry.php 4 weeks ago class-autoloader.php 1 week ago class-cache-invalidator.php 1 week ago class-constants.php 1 year ago class-content-injector.php 4 weeks ago class-entities.php 3 months ago class-modal.php 1 year ago class-modules.php 1 year ago class-options.php 1 year ago class-plugin.php 1 week ago class-post-data.php 10 months ago class-shortcodes.php 1 week ago class-upgrades.php 1 day ago class-widget.php 11 months ago default-hooks.php 5 months ago functions-ad.php 1 week ago functions-components.php 3 months ago functions-conditional.php 1 year ago functions-core.php 1 year ago functions-group.php 1 day ago functions-placement.php 1 week ago functions.php 1 week ago index.php 2 years ago load_modules.php 2 years ago
class-cache-invalidator.php
153 lines
1 <?php
2 /**
3 * Cache invalidation for Advanced Ads entity list caches.
4 *
5 * @package AdvancedAds
6 * @author Advanced Ads <info@wpadvancedads.com>
7 * @since 2.0.14
8 */
9
10 namespace AdvancedAds;
11
12 use AdvancedAds\Framework\Interfaces\Integration_Interface;
13 use AdvancedAds\Utilities\Cache;
14 use AdvancedAds\Utilities\Validation;
15
16 defined( 'ABSPATH' ) || exit;
17
18 /**
19 * Cache_Invalidator.
20 */
21 class Cache_Invalidator implements Integration_Interface {
22
23 /**
24 * Hook into WordPress.
25 *
26 * @return void
27 */
28 public function hooks(): void {
29 add_action( 'save_post', [ $this, 'invalidate_on_save_post' ], 99, 2 );
30 add_action( 'deleted_post', [ $this, 'invalidate_on_post_change' ], 99 );
31 add_action( 'trashed_post', [ $this, 'invalidate_on_post_change' ], 99 );
32 add_action( 'untrashed_post', [ $this, 'invalidate_on_post_change' ], 99 );
33
34 add_action( 'created_term', [ $this, 'invalidate_on_term_change' ], 99, 3 );
35 add_action( 'edited_term', [ $this, 'invalidate_on_term_change' ], 99, 3 );
36 add_action( 'delete_term', [ $this, 'invalidate_on_term_change' ], 99, 3 );
37
38 add_action( 'advanced-ads-import', [ Cache_Invalidator::class, 'invalidate_all' ], 99 );
39 }
40
41 /**
42 * Invalidate ad list caches and factory instances.
43 *
44 * @return void
45 */
46 public static function invalidate_ads(): void {
47 Cache::flush_group( Cache::PREFIX_ADS );
48 wp_advads_get_ad_factory()->clear_instance_cache();
49 }
50
51 /**
52 * Invalidate group list caches and factory instances.
53 *
54 * @return void
55 */
56 public static function invalidate_groups(): void {
57 Cache::flush_group( Cache::PREFIX_GROUPS );
58 wp_advads_get_group_factory()->clear_instance_cache();
59 }
60
61 /**
62 * Invalidate placement list caches and factory instances.
63 *
64 * @return void
65 */
66 public static function invalidate_placements(): void {
67 Cache::flush_group( Cache::PREFIX_PLACEMENTS );
68 wp_advads_get_placement_factory()->clear_instance_cache();
69 }
70
71 /**
72 * Invalidate all entity list caches and factory instances.
73 *
74 * @return void
75 */
76 public static function invalidate_all(): void {
77 Cache::flush_all();
78 wp_advads_get_ad_factory()->clear_instance_cache();
79 wp_advads_get_group_factory()->clear_instance_cache();
80 wp_advads_get_placement_factory()->clear_instance_cache();
81 }
82
83 /**
84 * Invalidate caches when an ad or placement post is saved.
85 *
86 * @param int $post_id Post ID.
87 * @param WP_Post $post Post object.
88 *
89 * @return void
90 */
91 public function invalidate_on_save_post( $post_id, $post ): void {
92 if ( ! Validation::check_save_post( $post_id, $post ) ) {
93 return;
94 }
95
96 $this->invalidate_post_type( $post->post_type );
97 }
98
99 /**
100 * Invalidate caches when an ad or placement post is trashed, untrashed, or deleted.
101 *
102 * @param int $post_id Post ID.
103 *
104 * @return void
105 */
106 public function invalidate_on_post_change( $post_id ): void {
107 $post_type = get_post_type( $post_id );
108
109 if ( ! $post_type ) {
110 return;
111 }
112
113 $this->invalidate_post_type( $post_type );
114 }
115
116 /**
117 * Invalidate caches when a group term is created, edited, or deleted.
118 *
119 * @param int $term_id Term ID.
120 * @param int $tt_id Term taxonomy ID.
121 * @param string $taxonomy Taxonomy slug.
122 *
123 * @return void
124 */
125 public function invalidate_on_term_change( $term_id, $tt_id, $taxonomy ): void {
126 unset( $term_id, $tt_id );
127
128 if ( Constants::TAXONOMY_GROUP !== $taxonomy ) {
129 return;
130 }
131
132 self::invalidate_groups();
133 }
134
135 /**
136 * Invalidate caches for a supported post type.
137 *
138 * @param string $post_type Post type slug.
139 *
140 * @return void
141 */
142 private function invalidate_post_type( $post_type ): void {
143 if ( Constants::POST_TYPE_AD === $post_type ) {
144 self::invalidate_ads();
145 return;
146 }
147
148 if ( Constants::POST_TYPE_PLACEMENT === $post_type ) {
149 self::invalidate_placements();
150 }
151 }
152 }
153