2019-05-10 16:56:07 +00:00
< ? php
/**
* REST API Settings controller
*
* Handles requests to the / settings endpoints .
*
2020-09-17 14:56:08 +00:00
* @ package WooCommerce\RestApi
2019-05-10 16:56:07 +00:00
* @ since 3.0 . 0
*/
defined ( 'ABSPATH' ) || exit ;
/**
* REST API Settings controller class .
*
2020-09-17 14:56:08 +00:00
* @ package WooCommerce\RestApi
2019-05-10 16:56:07 +00:00
* @ extends WC_REST_Settings_V2_Controller
*/
class WC_REST_Settings_Controller extends WC_REST_Settings_V2_Controller {
/**
* Endpoint namespace .
*
* @ var string
*/
protected $namespace = 'wc/v3' ;
/**
* Register routes .
*/
public function register_routes () {
parent :: register_routes ();
register_rest_route ( $this -> namespace , '/' . $this -> rest_base . '/batch' , array (
array (
'methods' => WP_REST_Server :: EDITABLE ,
'callback' => array ( $this , 'batch_items' ),
'permission_callback' => array ( $this , 'update_items_permissions_check' ),
),
'schema' => array ( $this , 'get_public_batch_schema' ),
) );
}
/**
* Makes sure the current user has access to WRITE the settings APIs .
*
* @ param WP_REST_Request $request Full data about the request .
* @ return WP_Error | bool
*/
public function update_items_permissions_check ( $request ) {
if ( ! wc_rest_check_manager_permissions ( 'settings' , 'edit' ) ) {
2020-08-06 12:48:18 +00:00
return new WP_Error ( 'woocommerce_rest_cannot_edit' , __ ( 'Sorry, you cannot edit this resource.' , 'woocommerce' ), array ( 'status' => rest_authorization_required_code () ) );
2019-05-10 16:56:07 +00:00
}
return true ;
}
/**
* Update a setting .
*
* @ param WP_REST_Request $request Request data .
* @ return WP_Error | WP_REST_Response
*/
public function update_item ( $request ) {
$options_controller = new WC_REST_Setting_Options_Controller ();
$response = $options_controller -> update_item ( $request );
return $response ;
}
/**
* Get the groups schema , conforming to JSON Schema .
*
* @ since 3.0 . 0
* @ return array
*/
public function get_item_schema () {
$schema = array (
'$schema' => 'http://json-schema.org/draft-04/schema#' ,
'title' => 'setting_group' ,
'type' => 'object' ,
'properties' => array (
'id' => array (
2020-08-06 12:48:18 +00:00
'description' => __ ( 'A unique identifier that can be used to link settings together.' , 'woocommerce' ),
2019-05-10 16:56:07 +00:00
'type' => 'string' ,
'context' => array ( 'view' , 'edit' ),
),
'label' => array (
2020-08-06 12:48:18 +00:00
'description' => __ ( 'A human readable label for the setting used in interfaces.' , 'woocommerce' ),
2019-05-10 16:56:07 +00:00
'type' => 'string' ,
'context' => array ( 'view' , 'edit' ),
),
'description' => array (
2020-08-06 12:48:18 +00:00
'description' => __ ( 'A human readable description for the setting used in interfaces.' , 'woocommerce' ),
2019-05-10 16:56:07 +00:00
'type' => 'string' ,
'context' => array ( 'view' , 'edit' ),
),
'parent_id' => array (
2020-08-06 12:48:18 +00:00
'description' => __ ( 'ID of parent grouping.' , 'woocommerce' ),
2019-05-10 16:56:07 +00:00
'type' => 'string' ,
'context' => array ( 'view' , 'edit' ),
),
'sub_groups' => array (
2020-08-06 12:48:18 +00:00
'description' => __ ( 'IDs for settings sub groups.' , 'woocommerce' ),
2019-05-10 16:56:07 +00:00
'type' => 'string' ,
'context' => array ( 'view' , 'edit' ),
),
),
);
return $this -> add_additional_fields_schema ( $schema );
}
}