From f16cb88a3218ac7bb32e43f0e0a2542d35c7a01b Mon Sep 17 00:00:00 2001
From: Jake Vanderwerf <get@jakevanderwerf.ca>
Date: Wed, 17 Jun 2026 00:28:16 +0000
Subject: [PATCH] =Working on the Options Meta still. Group fields also needed some changes

---
 inc/rest/routes/OptionsRoutes.php |   61 +++++++++++-------------------
 1 files changed, 23 insertions(+), 38 deletions(-)

diff --git a/inc/rest/routes/OptionsRoutes.php b/inc/rest/routes/OptionsRoutes.php
index a4a1ead..de1f75a 100644
--- a/inc/rest/routes/OptionsRoutes.php
+++ b/inc/rest/routes/OptionsRoutes.php
@@ -1,39 +1,41 @@
 <?php
 namespace JVBase\rest\routes;
 
-use JVBase\JVB;
-use JVBase\rest\RestRouteManager;
+use JVBase\base\Options;
+use JVBase\registrar\Registrar;
+use JVBase\rest\PermissionHandler;
+use JVBase\rest\Rest;
 use JVBase\managers\Cache;
-use JVBase\meta\MetaManager;
-use JVBase\meta\MetaSanitizer;
+use JVBase\meta\Meta;
+use JVBase\rest\Route;
 use WP_REST_Request;
 use WP_REST_Response;
 use WP_Error;
-use Exception;
 
 if (!defined('ABSPATH')) {
 	exit; // Exit if accessed directly
 }
 
-class OptionsRoutes extends RestRouteManager
+class OptionsRoutes extends Rest
 {
 
 	public function __construct()
 	{
 		parent::__construct();
-		$this->action = 'dash-';
 		add_filter(BASE.'handle_bulk_operation', [$this, 'processOperation'], 10, 3);
 	}
 
-	public function registerRoutes()
+	public function registerRoutes():void
 	{
-		register_rest_route($this->namespace, '/options', [
-			[
-				'methods' => 'POST',
-				'callback' => [$this, 'saveOptions'],
-				'permission_callback' => [$this, 'checkPermission']
-			]
-		]);
+		Route::for('options')
+			->post([$this, 'saveOptions'])
+			->auth(PermissionHandler::combine(['user', ['actionNonce' => 'dash-']]))
+			->rateLimit(3)
+			->args([
+				'user'	=> 'int|required',
+				'id'	=> 'string|required',
+			])
+			->register();
 	}
 
 	public function saveOptions(WP_REST_Request $request):WP_REST_Response
@@ -41,16 +43,13 @@
 		$data = $request->get_params();
 		$user = $data['user'];
 		if ($user && !user_can($user, 'manage_options')) {
-			return new WP_REST_Response([
-				'success'	=> 'false',
-				'message'	=> 'User cannot modify options'
-			]);
+			return $this->error('User Cannot modify options');
 		}
 		unset($data['user']);
 		$operationID = $data['id'];
 		unset($data['id']);
-		$queue = JVB()->queue();
-		$queue->queueOperation(
+
+		JVB()->queue()->queueOperation(
 			'update_options',
 			$user,
 			$data,
@@ -60,11 +59,7 @@
 			]
 		);
 
-
-		return new WP_REST_Response([
-			'success'	=> 'true',
-			'message'	=> 'Probably'
-		]);
+		return $this->queued($operationID);
 	}
 
 
@@ -87,15 +82,7 @@
 			'success'	=> []
 		];
 
-		$meta = new MetaManager(null, 'options');
-		$fields = jvbGetFields('options');
-
-		$allowedFields = array_filter($data,
-		function ($key) use ($fields) {
-			return array_key_exists($key, $fields);
-		}, ARRAY_FILTER_USE_KEY);
-		error_log('Setting fields: '.print_r($allowedFields, true));
-		$results = $meta->setAll($allowedFields);
+		Options::setAll($data['changes']);
 //		foreach ($data as $field => $value) {
 //			if (array_key_exists($field, $fields)) {
 //				$success = $meta->updateValue($field, $value);
@@ -109,11 +96,9 @@
 
 		do_action('jvbOptionsRoute', $data);
 
-		$cache = Cache::for('options', 1800);
-		$cache->flush();
 		return [
 			'success'	=> true,
-			'result'	=> $results
+			'result'	=> []
 		];
 	}
 }

--
Gitblit v1.10.0