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':
@@ -387,22 +386,24 @@
         ]);
      }
      $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);
@@ -442,13 +443,13 @@
                    '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);
            $this->cache->set($key, $response);
            $response = new WP_REST_Response($response);
         return $this->addCacheHeaders($response);
        } catch (Exception $e) {
@@ -463,9 +464,9 @@
                    'total' => 0,
                    'page' => $offset,
                    'per_page' => $limit,
                    'pages' => 0,
                    'has_more' => false
                ]
                    'pages' => 0
                ],
            'has_more' => false
            ]);
        }
    }
@@ -836,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
@@ -858,9 +859,9 @@
                    'total' => 0,
                    'page' => $offset,
                    'per_page' => $limit,
                    'pages' => 0,
                    'has_more' => false
                ]
                    'pages' => 0
                ],
            'has_more' => false
            ];
        }
    }