| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113 |
- <?php
- /**
- * REST API Settings controller
- *
- * Handles requests to the /settings endpoints.
- *
- * @package WooCommerce\RestApi
- * @since 3.0.0
- */
- defined( 'ABSPATH' ) || exit;
- /**
- * REST API Settings controller class.
- *
- * @package WooCommerce\RestApi
- * @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' ) ) {
- return new WP_Error( 'woocommerce_rest_cannot_edit', __( 'Sorry, you cannot edit this resource.', 'woocommerce' ), array( 'status' => rest_authorization_required_code() ) );
- }
- 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(
- 'description' => __( 'A unique identifier that can be used to link settings together.', 'woocommerce' ),
- 'type' => 'string',
- 'context' => array( 'view', 'edit' ),
- ),
- 'label' => array(
- 'description' => __( 'A human readable label for the setting used in interfaces.', 'woocommerce' ),
- 'type' => 'string',
- 'context' => array( 'view', 'edit' ),
- ),
- 'description' => array(
- 'description' => __( 'A human readable description for the setting used in interfaces.', 'woocommerce' ),
- 'type' => 'string',
- 'context' => array( 'view', 'edit' ),
- ),
- 'parent_id' => array(
- 'description' => __( 'ID of parent grouping.', 'woocommerce' ),
- 'type' => 'string',
- 'context' => array( 'view', 'edit' ),
- ),
- 'sub_groups' => array(
- 'description' => __( 'IDs for settings sub groups.', 'woocommerce' ),
- 'type' => 'string',
- 'context' => array( 'view', 'edit' ),
- ),
- ),
- );
- return $this->add_additional_fields_schema( $schema );
- }
- }
|