PluginProbe ʕ •ᴥ•ʔ
EmbedPress – PDF Embedder, Embed PDF viewer, YouTube Videos, 3D FlipBook, Social feeds & more / 4.4.11
EmbedPress – PDF Embedder, Embed PDF viewer, YouTube Videos, 3D FlipBook, Social feeds & more v4.4.11
4.5.6 4.5.5 4.5.4 4.5.3 4.5.2 trunk 1.0.0 1.1.0 1.1.1 1.1.2 1.1.3 1.2.0 1.3.0 1.3.1 1.4.0 1.4.1 1.4.2 1.4.3 1.4.4 1.5.0 1.6.0 1.6.1 1.6.2 1.6.3 1.7.0 1.7.1 1.7.2 1.7.3 1.7.4 1.7.5 2.0.0 2.0.1 2.0.2 2.0.3 2.1.0 2.1.1 2.1.2 2.1.3 2.1.4 2.1.5 2.1.6 2.2.0 2.2.1 2.2.2 2.3.0 2.3.1 2.3.2 2.3.3 2.4.0 2.4.1 2.5.0 2.5.1 2.5.2 2.5.3 2.5.4 2.5.5 2.6.0 2.6.1 2.6.2 2.7.0 2.7.1 2.7.2 2.7.3 2.7.4 2.7.5 2.7.6 2.7.7 3.0.0 3.0.1 3.0.2 3.0.3 3.0.4 3.1.0 3.1.1 3.1.2 3.1.3 3.2.0 3.2.1 3.3.0 3.3.1 3.3.2 3.3.3 3.3.4 3.3.5 3.3.6 3.3.7 3.4.0 3.4.1 3.4.2 3.4.3 3.5.0 3.5.1 3.5.2 3.5.3 3.6.0 3.6.1 3.6.2 3.6.3 3.6.4 3.6.5 3.6.6 3.6.7 3.6.8 3.7.0 3.7.1 3.7.2 3.7.3 3.8.0 3.8.1 3.8.2 3.8.3 3.8.4 3.8.5 3.9.0 3.9.1 3.9.10 3.9.11 3.9.12 3.9.13 3.9.14 3.9.15 3.9.16 3.9.17 3.9.2 3.9.3 3.9.4 3.9.5 3.9.6 3.9.7 3.9.8 3.9.9 4.0.0 4.0.1 4.0.10 4.0.11 4.0.12 4.0.13 4.0.14 4.0.2 4.0.3 4.0.4 4.0.5 4.0.6 4.0.7 4.0.8 4.0.9 4.1.0 4.1.1 4.1.10 4.1.2 4.1.3 4.1.4 4.1.5 4.1.6 4.1.7 4.1.8 4.1.9 4.2.0 4.2.1 4.2.2 4.2.3 4.2.4 4.2.5 4.2.6 4.2.7 4.2.8 4.2.9 4.3.0 4.3.1 4.4.0 4.4.1 4.4.10 4.4.11 4.4.2 4.4.3 4.4.4 4.4.5 4.4.6 4.4.7 4.4.8 4.4.9 4.5.0 4.5.1
embedpress / EmbedPress / Includes / Classes / Analytics / Content_Cache_Manager.php
embedpress / EmbedPress / Includes / Classes / Analytics Last commit date
Analytics_Manager.php 8 months ago Browser_Detector.php 9 months ago Content_Cache_Manager.php 9 months ago Data_Collector.php 7 months ago Email_Reports.php 9 months ago Export_Manager.php 9 months ago License_Manager.php 9 months ago Milestone_Manager.php 9 months ago Pro_Data_Collector.php 9 months ago REST_API.php 9 months ago
Content_Cache_Manager.php
117 lines
1 <?php
2
3 namespace EmbedPress\Includes\Classes\Analytics;
4
5 /**
6 * Content Cache Manager
7 *
8 * Manages cache invalidation for EmbedPress content counting
9 */
10 class Content_Cache_Manager
11 {
12 /**
13 * Data collector instance
14 *
15 * @var Data_Collector
16 */
17 private $data_collector;
18
19 /**
20 * Constructor
21 */
22 public function __construct()
23 {
24 $this->data_collector = new Data_Collector();
25 $this->init_hooks();
26 }
27
28 /**
29 * Initialize WordPress hooks
30 */
31 private function init_hooks()
32 {
33 // Clear cache when posts are saved/updated
34 add_action('save_post', [$this, 'clear_cache_on_post_update'], 10, 1);
35 add_action('wp_trash_post', [$this, 'clear_cache_on_post_update'], 10, 1);
36 add_action('untrash_post', [$this, 'clear_cache_on_post_update'], 10, 1);
37 add_action('delete_post', [$this, 'clear_cache_on_post_update'], 10, 1);
38
39 // Clear cache when Elementor data is updated
40 add_action('elementor/editor/after_save', [$this, 'clear_cache_on_elementor_update'], 10, 2);
41
42 // Clear cache when blocks are updated (Gutenberg)
43 add_action('rest_after_insert_post', [$this, 'clear_cache_on_post_update'], 10, 1);
44
45 // Manual cache clear action for admin
46 add_action('wp_ajax_embedpress_clear_content_cache', [$this, 'ajax_clear_cache']);
47 }
48
49 /**
50 * Clear cache when post is updated
51 *
52 * @param int $post_id
53 */
54 public function clear_cache_on_post_update($post_id)
55 {
56 // Only clear cache for content types that can contain embeds
57 $post_type = get_post_type($post_id);
58 $allowed_post_types = apply_filters('embedpress_cache_clear_post_types', [
59 'post', 'page', 'product', 'event', 'portfolio'
60 ]);
61
62 if (in_array($post_type, $allowed_post_types)) {
63 $this->data_collector->clear_content_count_cache();
64 }
65 }
66
67 /**
68 * Clear cache when Elementor content is updated
69 *
70 * @param int $post_id
71 * @param array $editor_data
72 */
73 public function clear_cache_on_elementor_update($post_id, $editor_data)
74 {
75 $this->data_collector->clear_content_count_cache();
76 }
77
78 /**
79 * AJAX handler to manually clear cache
80 */
81 public function ajax_clear_cache()
82 {
83 // Check permissions
84 if (!current_user_can('manage_options')) {
85 wp_die('Unauthorized');
86 }
87
88 // Verify nonce
89 if (!wp_verify_nonce($_POST['nonce'], 'embedpress_clear_cache')) {
90 wp_die('Invalid nonce');
91 }
92
93 $this->data_collector->clear_content_count_cache();
94
95 wp_send_json_success([
96 'message' => 'Content count cache cleared successfully'
97 ]);
98 }
99
100 /**
101 * Get cache status for admin display
102 *
103 * @return array
104 */
105 public function get_cache_status()
106 {
107 $cache_key = 'embedpress_total_content_count';
108 $cached_data = get_transient($cache_key);
109
110 return [
111 'is_cached' => $cached_data !== false,
112 'cache_expiry' => $cached_data !== false ? get_option('_transient_timeout_' . $cache_key) : null,
113 'last_updated' => $cached_data !== false ? time() - (HOUR_IN_SECONDS - (get_option('_transient_timeout_' . $cache_key) - time())) : null
114 ];
115 }
116 }
117