| | |
| | | ]); |
| | | } |
| | | |
| | | |
| | | $params = $this->getSanitizedData($user_id, $data); |
| | | $params['user'] = $user_id; |
| | | $key = $this->cache->generateKey($params); |
| | | // Check HTTP cache headers (includes notification types in timestamp check) |
| | | $cache_check = $this->checkUserHeaders($request, $user_id, 'notifications'); |
| | | $cache_check = $this->checkHeaders($request, $key); |
| | | if ($cache_check) { |
| | | return $cache_check; |
| | | } |
| | | |
| | | // Step 1: Build status/order/filter params |
| | | $params = $this->getSanitizedData($user_id, $data); |
| | | $status = $params['status']; |
| | | $limit = $params['limit']; |
| | | $offset = $params['page']; |
| | | $type = $params['type']; |
| | | |
| | | // Try cache first with validated parameters |
| | | $cache_key = "user_{$user_id}_merged_notifications_{$status}_{$type}_{$limit}_{$offset}"; |
| | | $cached = $this->cache->get($cache_key); |
| | | $cached = $this->cache->get($key); |
| | | if ($cached) { |
| | | $response = new WP_REST_Response($cached); |
| | | return $this->addCacheHeaders($response); |
| | |
| | | ]; |
| | | |
| | | // Cache the result |
| | | $this->cache->set($cache_key, $response, 'notifications_' . $user_id); |
| | | $this->cache->set($key, $response); |
| | | $response = new WP_REST_Response($response); |
| | | return $this->addCacheHeaders($response); |
| | | } catch (Exception $e) { |