feat: Implement cache invalidation system for master dashboard

- Added HVAC_Master_Dashboard_Data::clear_cache() static method
- Clears all 5 cached metrics when events or user data changes
- Added WordPress hooks for automatic cache invalidation:
  - save_post/delete_post for events and ticket types
  - user_register/deleted_user for trainer changes
- Ensures data consistency while maintaining performance benefits
- Cache keys organized under 'hvac_master_dashboard' group

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
bengizmo 2025-08-06 17:03:23 -03:00
parent 8faf2791cd
commit 1d299e0c82
2 changed files with 58 additions and 0 deletions

View file

@ -140,6 +140,12 @@ class HVAC_Community_Events {
// Force correct content on master dashboard // Force correct content on master dashboard
add_filter('the_content', array($this, 'force_master_dashboard_content'), 1); add_filter('the_content', array($this, 'force_master_dashboard_content'), 1);
// Cache invalidation hooks for master dashboard performance
add_action('save_post', array($this, 'clear_master_dashboard_cache'), 10, 1);
add_action('delete_post', array($this, 'clear_master_dashboard_cache'), 10, 1);
add_action('user_register', array($this, 'clear_master_dashboard_cache_on_user_change'));
add_action('deleted_user', array($this, 'clear_master_dashboard_cache_on_user_change'));
// Authentication checks - these should eventually move to HVAC_Access_Control // Authentication checks - these should eventually move to HVAC_Access_Control
add_action('template_redirect', array($this, 'check_event_summary_auth')); add_action('template_redirect', array($this, 'check_event_summary_auth'));
add_action('template_redirect', array($this, 'check_email_attendees_auth')); add_action('template_redirect', array($this, 'check_email_attendees_auth'));
@ -1119,4 +1125,36 @@ class HVAC_Community_Events {
)); ));
} }
/**
* Clear master dashboard cache when posts are saved/deleted
*
* @param int $post_id Post ID
*/
public function clear_master_dashboard_cache($post_id) {
$post_type = get_post_type($post_id);
// Clear cache for event-related post types or ticket types
$cache_trigger_types = [
'tribe_events',
'tec_tc_attendee',
'tribe_tpp_attendees',
'tribe_rsvp_attendees'
];
if (in_array($post_type, $cache_trigger_types)) {
if (class_exists('HVAC_Master_Dashboard_Data')) {
HVAC_Master_Dashboard_Data::clear_cache();
}
}
}
/**
* Clear master dashboard cache when user data changes
*/
public function clear_master_dashboard_cache_on_user_change() {
if (class_exists('HVAC_Master_Dashboard_Data')) {
HVAC_Master_Dashboard_Data::clear_cache();
}
}
} // End class HVAC_Community_Events } // End class HVAC_Community_Events

View file

@ -290,6 +290,26 @@ class HVAC_Master_Dashboard_Data {
return $total_revenue; return $total_revenue;
} }
/**
* Clear all cached master dashboard data
* Should be called when events, tickets, or trainer data changes
*
* @return void
*/
public static function clear_cache() {
$cache_keys = [
'hvac_master_total_events_count',
'hvac_master_upcoming_events_count',
'hvac_master_past_events_count',
'hvac_master_total_tickets_sold',
'hvac_master_total_revenue'
];
foreach ($cache_keys as $key) {
wp_cache_delete($key, 'hvac_master_dashboard');
}
}
/** /**
* Get trainer statistics - count and individual performance data * Get trainer statistics - count and individual performance data
* *