| | |
| | | */ |
| | | protected function getItemLink(int $ID, string $content):string |
| | | { |
| | | error_log('Type: '.print_r($content, true)); |
| | | switch ($content) { |
| | | case BASE.'artist': |
| | | case BASE.'artwork': |
| | |
| | | { |
| | | $data = $request->get_params(); |
| | | $user_id = $data['user']; |
| | | if (!$this->userCheck($user_id)) { |
| | | $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?' |
| | | ]); |
| | | } |
| | | if (!$this->userCheck($user_id)) { |
| | | $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?' |
| | | ]); |
| | | } |
| | | |
| | | |
| | | $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->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) { |
| | | return new WP_REST_Response($cached); |
| | | $response = new WP_REST_Response($cached); |
| | | return $this->addCacheHeaders($response); |
| | | } |
| | | |
| | | try { |
| | |
| | | 'total' => $total_count, |
| | | 'page' => $offset, |
| | | 'per_page' => $limit, |
| | | 'pages' => ceil($total_count / $limit), |
| | | 'has_more' => ($offset * $limit + count($notifications)) < $total_count |
| | | ] |
| | | 'pages' => ceil($total_count / $limit) |
| | | ], |
| | | 'has_more' => ($offset * $limit + count($notifications)) < $total_count |
| | | ]; |
| | | |
| | | // Cache the result |
| | | $this->cache->set($cache_key, $response, 'notifications_' . $user_id); |
| | | return new WP_REST_Response($response); |
| | | $this->cache->set($key, $response); |
| | | $response = new WP_REST_Response($response); |
| | | return $this->addCacheHeaders($response); |
| | | } catch (Exception $e) { |
| | | $this->logError("Error retrieving notifications", [ |
| | | 'user_id' => $user_id, |
| | |
| | | 'total' => 0, |
| | | 'page' => $offset, |
| | | 'per_page' => $limit, |
| | | 'pages' => 0, |
| | | 'has_more' => false |
| | | ] |
| | | 'pages' => 0 |
| | | ], |
| | | 'has_more' => false |
| | | ]); |
| | | } |
| | | } |
| | |
| | | 'total' => (int)$total_count, |
| | | 'page' => $offset, |
| | | 'per_page' => $limit, |
| | | 'pages' => ceil($total_count / $limit), |
| | | 'has_more' => ($offset + $limit) < $total_count |
| | | ] |
| | | 'pages' => ceil($total_count / $limit) |
| | | ], |
| | | 'has_more' => ($offset + $limit) < $total_count |
| | | ]; |
| | | |
| | | // Cache the results |
| | |
| | | 'total' => 0, |
| | | 'page' => $offset, |
| | | 'per_page' => $limit, |
| | | 'pages' => 0, |
| | | 'has_more' => false |
| | | ] |
| | | 'pages' => 0 |
| | | ], |
| | | 'has_more' => false |
| | | ]; |
| | | } |
| | | } |