Jake Vanderwerf
2026-01-25 b38f03c0e7218762d90fa5092696b127f24f36db
inc/rest/routes/NotificationsRoutes.php
@@ -198,7 +198,6 @@
     */
    protected function getItemLink(int $ID, string $content):string
    {
        error_log('Type: '.print_r($content, true));
        switch ($content) {
            case BASE.'artist':
            case BASE.'artwork':
@@ -379,28 +378,35 @@
    {
        $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 {
@@ -437,14 +443,15 @@
                    '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,
@@ -457,9 +464,9 @@
                    'total' => 0,
                    'page' => $offset,
                    'per_page' => $limit,
                    'pages' => 0,
                    'has_more' => false
                ]
                    'pages' => 0
                ],
            'has_more' => false
            ]);
        }
    }
@@ -830,9 +837,9 @@
                    '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
@@ -852,9 +859,9 @@
                    'total' => 0,
                    'page' => $offset,
                    'per_page' => $limit,
                    'pages' => 0,
                    'has_more' => false
                ]
                    'pages' => 0
                ],
            'has_more' => false
            ];
        }
    }