$tripId]); } public static function onTripUpdated(int $tripId): void { Cache::invalidateAfterTripWrite('update', $tripId); Logger::info("Cache invalidated for trip update", ['trip_id' => $tripId]); } public static function onTripDeleted(int $tripId): void { Cache::invalidateAfterTripWrite('delete', $tripId); Logger::info("Cache invalidated for trip deletion", ['trip_id' => $tripId]); } /** * Booking event handlers */ public static function onBookingCreated(int $bookingId): void { Cache::invalidateAfterBookingWrite($bookingId); Logger::info("Cache invalidated for booking creation", ['booking_id' => $bookingId]); } public static function onBookingUpdated(int $bookingId): void { Cache::invalidateAfterBookingWrite($bookingId); Logger::info("Cache invalidated for booking update", ['booking_id' => $bookingId]); } public static function onBookingDeleted(int $bookingId): void { Cache::invalidateAfterBookingWrite($bookingId); Logger::info("Cache invalidated for booking deletion", ['booking_id' => $bookingId]); } public static function onBookingStatusChanged(int $bookingId, string $oldStatus, string $newStatus): void { Cache::invalidateAfterBookingWrite($bookingId); Logger::info("Cache invalidated for booking status change", [ 'booking_id' => $bookingId, 'old_status' => $oldStatus, 'new_status' => $newStatus, ]); } /** * Customer event handlers */ public static function onCustomerCreated(int $customerId): void { self::invalidateStatsCaches(); Logger::info("Cache invalidated for customer creation", ['customer_id' => $customerId]); } public static function onCustomerUpdated(int $customerId): void { CacheService::invalidateEntity('customer', $customerId); Logger::info("Cache invalidated for customer update", ['customer_id' => $customerId]); } public static function onCustomerDeleted(int $customerId): void { CacheService::invalidateEntity('customer', $customerId); self::invalidateStatsCaches(); Logger::info("Cache invalidated for customer deletion", ['customer_id' => $customerId]); } /** * Activity event handlers */ public static function onActivityCreated(int $activityId): void { self::invalidateListingCaches(); Logger::info("Cache invalidated for activity creation", ['activity_id' => $activityId]); } public static function onActivityUpdated(int $activityId): void { CacheService::invalidateEntity('activity', $activityId); self::invalidateListingCaches(); Logger::info("Cache invalidated for activity update", ['activity_id' => $activityId]); } public static function onActivityDeleted(int $activityId): void { CacheService::invalidateEntity('activity', $activityId); self::invalidateListingCaches(); Logger::info("Cache invalidated for activity deletion", ['activity_id' => $activityId]); } /** * Destination event handlers */ public static function onDestinationCreated(int $destinationId): void { self::invalidateListingCaches(); Logger::info("Cache invalidated for destination creation", ['destination_id' => $destinationId]); } public static function onDestinationUpdated(int $destinationId): void { CacheService::invalidateEntity('destination', $destinationId); self::invalidateListingCaches(); Logger::info("Cache invalidated for destination update", ['destination_id' => $destinationId]); } public static function onDestinationDeleted(int $destinationId): void { CacheService::invalidateEntity('destination', $destinationId); self::invalidateListingCaches(); Logger::info("Cache invalidated for destination deletion", ['destination_id' => $destinationId]); } /** * Payment event handlers */ public static function onPaymentCreated(int $paymentId): void { self::invalidateStatsCaches(); Logger::info("Cache invalidated for payment creation", ['payment_id' => $paymentId]); } public static function onPaymentUpdated(int $paymentId): void { self::invalidateStatsCaches(); Logger::info("Cache invalidated for payment update", ['payment_id' => $paymentId]); } /** * WordPress post change handler */ public static function onPostChange(int $postId, \WP_Post $post): void { // Only handle Yatra-related post types if (in_array($post->post_type, ['yatra_trip', 'yatra_booking', 'yatra_customer'])) { self::invalidateListingCaches(); self::invalidateStatsCaches(); Logger::debug("Cache invalidated for WordPress post change", [ 'post_id' => $postId, 'post_type' => $post->post_type ]); } } /** * WordPress post deletion handler */ public static function onPostDeleted(int $postId): void { // Clear all caches as we don't know the post type self::invalidateListingCaches(); self::invalidateStatsCaches(); Logger::debug("Cache invalidated for WordPress post deletion", ['post_id' => $postId]); } /** * Cache management handlers */ public static function warmUpCache(): void { CacheService::warmUpCache(); Logger::info("Cache warm-up completed"); } public static function clearAllCaches(): void { Cache::flush(); Logger::info("All caches cleared via hook"); } /** * Clean up expired cache entries */ public static function cleanupExpiredCache(): void { // This would be implemented based on the cache backend // For now, we'll just log the cleanup attempt Logger::info("Cache cleanup scheduled task executed"); // Clear old log files Logger::cleanup(); } /** * Helper methods for cache invalidation */ private static function invalidateListingCaches(): void { Cache::invalidateListingCaches(); } private static function invalidateStatsCaches(): void { Cache::clearByPrefix(Cache::PREFIX_STATS); Cache::invalidateDashboardReportCaches(); } /** * Manual cache invalidation for admin use */ public static function invalidateAll(): void { Cache::flush(); Logger::info("Manual cache invalidation triggered"); } /** * Get cache status for admin dashboard */ public static function getCacheStatus(): array { return [ 'enabled' => true, 'backends' => Cache::getAvailableBackends(), 'stats' => Cache::getCacheStats(), 'performance' => CacheService::getPerformanceMetrics(), ]; } /** * Itinerary Day event handlers */ public static function onItineraryDayCreated(int $dayId, array $data): void { self::invalidateListingCaches(); Cache::clearByPrefix('yatra_trip_'); Logger::info("Cache invalidated for itinerary day creation", ['day_id' => $dayId]); } public static function onItineraryDayUpdated(int $dayId, array $data): void { Cache::delete(Cache::PREFIX_TRIP_DATA . ($data['trip_id'] ?? '')); self::invalidateListingCaches(); Cache::clearByPrefix('yatra_trip_'); Logger::info("Cache invalidated for itinerary day update", ['day_id' => $dayId]); } public static function onItineraryDayDeleted(int $dayId): void { self::invalidateListingCaches(); Cache::clearByPrefix('yatra_trip_'); Logger::info("Cache invalidated for itinerary day deletion", ['day_id' => $dayId]); } /** * Itinerary Activity event handlers */ public static function onItineraryActivityCreated(int $activityId, array $data): void { self::invalidateListingCaches(); Cache::clearByPrefix('yatra_trip_'); Logger::info("Cache invalidated for itinerary activity creation", ['activity_id' => $activityId]); } public static function onItineraryActivityUpdated(int $activityId, array $data): void { Cache::delete(Cache::PREFIX_TRIP_DATA . ($data['trip_id'] ?? '')); self::invalidateListingCaches(); Cache::clearByPrefix('yatra_trip_'); Logger::info("Cache invalidated for itinerary activity update", ['activity_id' => $activityId]); } public static function onItineraryActivityDeleted(int $activityId): void { self::invalidateListingCaches(); Cache::clearByPrefix('yatra_trip_'); Logger::info("Cache invalidated for itinerary activity deletion", ['activity_id' => $activityId]); } }