| | |
| | | <?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 |
| | |
| | | $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, |
| | |
| | | ] |
| | | ); |
| | | |
| | | |
| | | return new WP_REST_Response([ |
| | | 'success' => 'true', |
| | | 'message' => 'Probably' |
| | | ]); |
| | | return $this->queued($operationID); |
| | | } |
| | | |
| | | |
| | |
| | | '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) { |
| | |
| | | |
| | | do_action('jvbOptionsRoute', $data); |
| | | |
| | | $cache = new CacheManager('options', 1800); |
| | | $cache::invalidateGroup('options'); |
| | | $cache = Cache::for('options', 1800); |
| | | $cache->flush(); |
| | | return [ |
| | | 'success' => true, |
| | | 'result' => $results |