Jake Vanderwerf
5 days ago a9b3b28d001941921aa70d37fdc87c758a163a44
inc/rest/routes/OptionsRoutes.php
@@ -1,39 +1,40 @@
<?php
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\registrar\Registrar;
use JVBase\rest\PermissionHandler;
use JVBase\rest\Rest;
use JVBase\managers\Cache;
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 +42,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 +58,7 @@
         ]
      );
      return new WP_REST_Response([
         'success'   => 'true',
         'message'   => 'Probably'
      ]);
      return $this->queued($operationID);
   }
@@ -87,8 +81,8 @@
         'success'   => []
      ];
      $meta = new MetaManager(null, 'options');
      $fields = jvbGetFields('options');
      $meta = Meta::forOptions('options');
      $fields = Registrar::getFieldsFor('options');
      $allowedFields = array_filter($data,
      function ($key) use ($fields) {
@@ -109,8 +103,8 @@
      do_action('jvbOptionsRoute', $data);
      $cache = CacheManager::for('options', 1800);
      $cache->invalidate();
      $cache = Cache::for('options', 1800);
      $cache->flush();
      return [
         'success'   => true,
         'result' => $results