2016-03-30 23:50:06 +00:00
< ? php
/**
2017-02-11 14:51:41 +00:00
* REST API Product Reviews Controller
2016-03-30 23:50:06 +00:00
*
2016-07-29 19:43:59 +00:00
* Handles requests to / products /< product_id >/ reviews .
2016-03-30 23:50:06 +00:00
*
* @ author WooThemes
* @ category API
* @ package WooCommerce / API
* @ since 2.6 . 0
*/
if ( ! defined ( 'ABSPATH' ) ) {
exit ;
}
/**
2016-07-29 19:43:59 +00:00
* REST API Product Reviews Controller Class .
2016-03-30 23:50:06 +00:00
*
* @ package WooCommerce / API
2017-02-11 14:51:41 +00:00
* @ extends WC_REST_Product_Reviews_V1_Controller
2016-03-30 23:50:06 +00:00
*/
2017-02-11 14:51:41 +00:00
class WC_REST_Product_Reviews_Controller extends WC_REST_Product_Reviews_V1_Controller {
2016-03-30 23:50:06 +00:00
/**
* Endpoint namespace .
*
* @ var string
*/
2017-02-09 17:06:13 +00:00
protected $namespace = 'wc/v2' ;
2016-03-30 23:50:06 +00:00
/**
* Route base .
*
* @ var string
*/
protected $rest_base = 'products/(?P<product_id>[\d]+)/reviews' ;
/**
* Register the routes for product reviews .
*/
public function register_routes () {
2017-02-11 14:51:41 +00:00
parent :: register_routes ();
2016-07-29 19:37:29 +00:00
register_rest_route ( $this -> namespace , '/' . $this -> rest_base . '/batch' , array (
2017-01-26 20:33:39 +00:00
'args' => array (
'product_id' => array (
'description' => __ ( 'Unique identifier for the variable product.' , 'woocommerce' ),
'type' => 'integer' ,
),
),
2016-07-29 19:37:29 +00:00
array (
'methods' => WP_REST_Server :: EDITABLE ,
'callback' => array ( $this , 'batch_items' ),
'permission_callback' => array ( $this , 'batch_items_permissions_check' ),
'args' => $this -> get_endpoint_args_for_item_schema ( WP_REST_Server :: EDITABLE ),
),
'schema' => array ( $this , 'get_public_batch_schema' ),
) );
2016-03-30 23:50:06 +00:00
}
2016-07-29 19:37:29 +00:00
/**
* Check if a given request has access to batch manage product reviews .
*
* @ param WP_REST_Request $request Full details about the request .
* @ return WP_Error | boolean
*/
public function batch_items_permissions_check ( $request ) {
if ( ! wc_rest_check_post_permissions ( 'product' , 'batch' ) ) {
2016-08-08 21:52:46 +00:00
return new WP_Error ( 'woocommerce_rest_cannot_edit' , __ ( 'Sorry, you are not allowed to batch manipulate this resource.' , 'woocommerce' ), array ( 'status' => rest_authorization_required_code () ) );
2016-07-29 19:37:29 +00:00
}
return true ;
}
/**
* Bulk create , update and delete items .
*
* @ since 2.7 . 0
* @ param WP_REST_Request $request Full details about the request .
* @ return array Of WP_Error or WP_REST_Response .
*/
public function batch_items ( $request ) {
$items = array_filter ( $request -> get_params () );
$params = $request -> get_url_params ();
$product_id = $params [ 'product_id' ];
$body_params = array ();
foreach ( array ( 'update' , 'create' , 'delete' ) as $batch_type ) {
if ( ! empty ( $items [ $batch_type ] ) ) {
$injected_items = array ();
foreach ( $items [ $batch_type ] as $item ) {
2017-02-07 18:46:03 +00:00
$injected_items [] = is_array ( $item ) ? array_merge ( array ( 'product_id' => $product_id ), $item ) : $item ;
2016-07-29 19:37:29 +00:00
}
$body_params [ $batch_type ] = $injected_items ;
}
2016-07-28 22:12:49 +00:00
}
2016-07-29 19:37:29 +00:00
$request = new WP_REST_Request ( $request -> get_method () );
$request -> set_body_params ( $body_params );
return parent :: batch_items ( $request );
2016-07-28 22:12:49 +00:00
}
2016-03-30 23:50:06 +00:00
}