| | |
| | | { |
| | | global $wpdb; |
| | | $this->wpdb = $wpdb; |
| | | $this->cache = new CacheManager('queue'); |
| | | $this->cache = CacheManager::for('queue', DAY_IN_SECONDS); |
| | | add_action('jvb_process_queue', [ $this, 'checkQueue' ]); |
| | | add_action('jvb_queue_maintenance', [$this, 'hourlyMaintenance']); |
| | | add_action('jvbEmailDailyMetricsReport', [$this, 'emailDailyMetricsReport']); |
| | |
| | | |
| | | $this->updateLastModified($user_id); |
| | | $this->invalidateQueueCache(); |
| | | $this->cache->invalidate(self::CACHE_USER_QUEUE_PREFIX . $user_id); |
| | | $this->cache->delete(self::CACHE_USER_QUEUE_PREFIX . $user_id); |
| | | $this->runQueueOnShutdown(); |
| | | |
| | | return [ |
| | |
| | | $this->processOperation($operation); |
| | | |
| | | // Invalidate operation cache after processing |
| | | $this->cache->invalidate(self::CACHE_OPERATION_PREFIX . $operation->id); |
| | | $this->cache->invalidate(self::CACHE_USER_QUEUE_PREFIX . $operation->user_id); |
| | | $this->cache->delete(self::CACHE_OPERATION_PREFIX . $operation->id); |
| | | $this->cache->delete(self::CACHE_USER_QUEUE_PREFIX . $operation->user_id); |
| | | } |
| | | |
| | | // Batch invalidate caches at the end |
| | |
| | | $keys = $cacheKeys[$scope] ?? $cacheKeys['all']; |
| | | |
| | | foreach ($keys as $key) { |
| | | $this->cache->invalidate($key); |
| | | $this->cache->delete($key); |
| | | } |
| | | |
| | | if ($scope === 'all') { |
| | | // Clear entire group for complete refresh |
| | | $this->cache->invalidateGroup($this->cacheGroup); |
| | | jvbUpdateCacheTimestamp('queue'); |
| | | $this->cache->invalidate(); |
| | | delete_transient('jvb_queue_status_counts'); |
| | | } |
| | | } |
| | |
| | | } |
| | | } |
| | | // Clear operation cache after any update |
| | | $this->cache->invalidate(self::CACHE_OPERATION_PREFIX . $operation->id); |
| | | $this->cache->delete(self::CACHE_OPERATION_PREFIX . $operation->id); |
| | | $this->updateLastModified($operation->user_id); |
| | | return $filterResult; |
| | | |