integrations_action = $integrations_action; } /** * Registers routes with WordPress. * * @return void */ public function register_routes() { $set_active_route = [ 'methods' => 'POST', 'callback' => [ $this, 'set_integration_active' ], 'permission_callback' => [ $this, 'can_manage_options' ], 'args' => [ 'active' => [ 'type' => 'boolean', 'required' => true, ], 'integration' => [ 'type' => 'string', 'required' => true, ], ], ]; \register_rest_route( Main::API_V1_NAMESPACE, self::INTEGRATIONS_ROUTE . self::SET_ACTIVE_ROUTE, $set_active_route ); } /** * Checks if the current user has the right capability. * * @return bool */ public function can_manage_options() { return \current_user_can( 'wpseo_manage_options' ); } /** * Sets integration state. * * @param WP_REST_Request $request The request. * * @return WP_REST_Response */ public function set_integration_active( WP_REST_Request $request ) { $params = $request->get_json_params(); $integration_name = $params['integration']; $value = $params['active']; $data = $this ->integrations_action ->set_integration_active( $integration_name, $value ); return new WP_REST_Response( [ 'json' => $data ] ); } }