| | |
| | | $data = $request->get_params(); |
| | | $user_id = $data['user']; |
| | | if (!$this->userCheck($user_id)) { |
| | | $this->logError("Invalid user ID for notifications", [ |
| | | 'user' => $user_id |
| | | ], 'warning'); |
| | | $this->logError("Invalid user ID for notifications", ['user' => $user_id], 'warning'); |
| | | return new WP_REST_Response([ |
| | | 'success' => false, |
| | | 'message' => 'User doesn\'t match. Are you a bot?' |
| | | ]); |
| | | } |
| | | |
| | | // Check HTTP cache headers (includes notification types in timestamp check) |
| | | $cache_check = $this->checkUserHeaders($request, $user_id, 'notifications'); |
| | | if ($cache_check) { |
| | | return $cache_check; |
| | | } |
| | | |
| | | // Step 1: Build status/order/filter params |
| | | $params = $this->getSanitizedData($user_id, $data); |
| | | $status = $params['status']; |
| | |
| | | $cache_key = "user_{$user_id}_merged_notifications_{$status}_{$type}_{$limit}_{$offset}"; |
| | | $cached = $this->cache->get($cache_key); |
| | | if ($cached) { |
| | | return new WP_REST_Response($cached); |
| | | $response = new WP_REST_Response($cached); |
| | | return $this->addCacheHeaders($response); |
| | | } |
| | | |
| | | try { |
| | |
| | | |
| | | // Cache the result |
| | | $this->cache->set($cache_key, $response, 'notifications_' . $user_id); |
| | | return new WP_REST_Response($response); |
| | | $response = new WP_REST_Response($response); |
| | | return $this->addCacheHeaders($response); |
| | | } catch (Exception $e) { |
| | | $this->logError("Error retrieving notifications", [ |
| | | 'user_id' => $user_id, |