From 86c6cd3cc099d2480932ede03c12cea01e625c94 Mon Sep 17 00:00:00 2001
From: Jake Vanderwerf <get@jakevanderwerf.ca>
Date: Sun, 26 Apr 2026 21:56:28 +0000
Subject: [PATCH] =Requiring files based on Site class settings

---
 inc/rest/routes/SettingsRoutes.php |   64 +++++++++++++++-----------------
 1 files changed, 30 insertions(+), 34 deletions(-)

diff --git a/inc/rest/routes/SettingsRoutes.php b/inc/rest/routes/SettingsRoutes.php
index 811984a..b5d4926 100644
--- a/inc/rest/routes/SettingsRoutes.php
+++ b/inc/rest/routes/SettingsRoutes.php
@@ -2,10 +2,12 @@
 namespace JVBase\rest\routes;
 
 use JVBase\JVB;
-use JVBase\rest\RestRouteManager;
-use JVBase\managers\CacheManager;
-use JVBase\meta\MetaManager;
-use JVBase\meta\MetaSanitizer;
+use JVBase\rest\PermissionHandler;
+use JVBase\rest\Rest;
+use JVBase\managers\Cache;
+use JVBase\meta\Meta;
+use JVBase\meta\Sanitizer;
+use JVBase\rest\Route;
 use WP_REST_Request;
 use WP_REST_Response;
 use WP_Error;
@@ -14,15 +16,15 @@
 if (!defined('ABSPATH')) {
     exit; // Exit if accessed directly
 }
-class SettingsRoutes extends RestRouteManager
+class SettingsRoutes extends Rest
 {
     protected int $count;
     public function __construct()
     {
-        $this->cache_name = 'user_settings';
+        $this->cacheName = 'user_settings';
         parent::__construct();
-        $this->action = 'dash-';
-        $this->operation_type = 'user_settings';
+//        $this->action = 'dash-';
+//        $this->operation_type = 'user_settings';
         $this->count = 1;
         add_filter(BASE.'handle_bulk_operation', [$this, 'processOperation'], 10, 3);
     }
@@ -33,12 +35,11 @@
      */
     public function registerRoutes():void
     {
-        register_rest_route($this->namespace, '/settings', [
-            [
-                'methods' => 'POST',
-                'callback' => [$this, 'saveSettings'],
-                'permission_callback' => [$this, 'checkPermission']
-            ]]);
+		Route::for('settings')
+			->post([$this, 'saveSettings'])
+			->auth(PermissionHandler::combine(['admin', ['actionNonce' => 'dash-']]))
+			->rateLimit(20)
+			->register();
     }
 
     /**
@@ -52,19 +53,14 @@
         $data = $request->get_params();
 		error_log('User: '.print_r($data['user'], true));
         error_log('Settings routes data: '.print_r($data, true));
-        $user_id = (int)$data['user'];
-        if (!$this->userCheck($user_id)) {
-            return new WP_REST_Response([
-                'success'   => false,
-                'message'   => 'Looks like you are not who you say you are. Bot?'
-            ]);
+        $user_id = absint($data['user']??0);
+        if ($user_id === 0) {
+            return $this->unauthorized();
         }
 
-		$this->queue = JVB()->queue();
-
 
         $fields = JVB()->getFields('user');
-        $meta = new MetaSanitizer();
+        $meta = new Sanitizer();
         $add = [];
         global $types;
         foreach ($data as $name => $value) {
@@ -81,7 +77,7 @@
                 //Sanitize values
                 $data[$name] = $meta->sanitize($value, $fields[$name]);
                 if ($name === 'notify') {
-                    CacheManager::for('usernames')->delete($user_id);
+                    Cache::for('usernames')->forget($user_id);
                 }
             }
         }
@@ -89,7 +85,7 @@
             $data['notification_preferences'] = $add;
         }
 
-        $this->queue->queueOperation(
+        JVB()->queue()->queueOperation(
             'user_settings',
             $user_id,
             $data,
@@ -98,9 +94,7 @@
             ]
         );
 
-        // Return standardized response
-        return new WP_REST_Response([
-            'success' =>true,
+        return $this->success([
             'message' => 'Request received and queued',
             'status' => 'queued'
         ]);
@@ -121,9 +115,9 @@
 
 
         $user_id = $operation->user_id;
-        $meta = new MetaManager($user_id, 'user');
+        $meta = Meta::forUser($user_id);
         $results = [];
-		$tempMeta = new MetaManager(null, 'options');
+		$tempMeta = Meta::forOptions('options');
         foreach ($data as $name => $value) {
             if ($name == 'notification_preferences') {
                 return $this->saveNotificationPreferences($user_id, $value);
@@ -143,14 +137,15 @@
 
             if ($name !== 'digest_override') { // digest_override should always reset to 'off'
 				if(array_key_exists($name, JVB_OPTIONS)) {
-					$results[] = $tempMeta->updateValue($name, $value);
+					$results[] = $tempMeta->set($name, $value);
 				} else {
-					$results[] = $meta->updateValue($name, $value);
+					$results[] = $meta->set($name, $value);
 				}
 
             }
-            CacheManager::for($this->cache_name)->invalidate();
+            $this->cache->flush();
         }
+
         return [
             'success'   => true,
             'result'   => $results,
@@ -165,6 +160,7 @@
      */
     protected function saveNotificationPreferences(int $user_id, array $data):array|WP_Error
     {
+		//TODO: This should be in with Notifications.php manager
         //TODO: Check what cache we are using to store user's preferences for the daily/weekly/monthly sendouts
         global $wpdb;
         $table = $wpdb->prefix . BASE . 'notification_preferences';
@@ -218,7 +214,7 @@
             // Success - commit transaction
             $wpdb->query('COMMIT');
 
-            CacheManager::for($this->cache_name)->invalidate();
+            $this->cache->flush();
             return [
                 'success' => true,
                 'result' => 'Notification preferences updated successfully'

--
Gitblit v1.10.0