| | |
| | | global $wpdb; |
| | | $this->wpdb = $wpdb; |
| | | $this->table_name = $this->wpdb->prefix . BASE . 'user_term_index'; |
| | | // Get cache manager instance |
| | | $this->cache = new CacheManager($this->cacheGroup, $this->ttl); |
| | | |
| | | // Register hooks |
| | | add_action('save_post', [$this, 'updatePostUserTerms'], 10, 3); |
| | |
| | | */ |
| | | public function clearUserCache(int $user_id, string|null $taxonomy = null):void |
| | | { |
| | | $cache = CacheManager::for($user_id.'_term_relationships'); |
| | | if ($taxonomy) { |
| | | // Clear specific taxonomy cache |
| | | $pattern = "user_{$user_id}_" . str_replace(BASE, '', $taxonomy); |
| | | $this->cache->clearPattern($pattern); |
| | | $cache->delete(jvbNoBase($taxonomy)); |
| | | } else { |
| | | // Clear all user term caches |
| | | $pattern = "user_{$user_id}_"; |
| | | $this->cache->clearPattern($pattern); |
| | | $cache->invalidate(); |
| | | } |
| | | } |
| | | |
| | |
| | | private function fetchUserTerms(int $user_id, string $taxonomy, array $args):array |
| | | { |
| | | $taxonomy = jvbCheckBase($taxonomy); |
| | | $key = $this->cache->generateKey(array_merge( |
| | | $cache = CacheManager::for($user_id.'_term_relationships'); |
| | | $key = $cache->generateKey(array_merge( |
| | | [ |
| | | 'user' => $user_id, |
| | | 'taxonomy' => $taxonomy, |
| | |
| | | $args |
| | | )); |
| | | if (!$args['skip_cache']) { |
| | | $cache = $this->cache->get($key); |
| | | if ($cache) { |
| | | return $cache; |
| | | $cached = $cache->get($key); |
| | | if ($cached) { |
| | | return $cached; |
| | | } |
| | | } |
| | | |
| | |
| | | $this->wpdb->prepare($query, $query_args), |
| | | ARRAY_A |
| | | ); |
| | | $this->cache->set($key, $results); |
| | | $cache->set($key, $results); |
| | | |
| | | return $results; |
| | | } |