From b64c55de49d73803305e6ca43f70600502abe0de Mon Sep 17 00:00:00 2001 From: Mike Jolley Date: Tue, 16 Aug 2016 13:55:10 +0100 Subject: [PATCH] Format item meta --- .../api/class-wc-rest-orders-controller.php | 54 ++++++++++++++++++- includes/class-wc-order-item.php | 4 +- 2 files changed, 53 insertions(+), 5 deletions(-) diff --git a/includes/api/class-wc-rest-orders-controller.php b/includes/api/class-wc-rest-orders-controller.php index c2d9ae62785..26ab949044b 100644 --- a/includes/api/class-wc-rest-orders-controller.php +++ b/includes/api/class-wc-rest-orders-controller.php @@ -50,6 +50,12 @@ class WC_REST_Orders_Controller extends WC_REST_Posts_Controller { */ protected $dp = '2'; + /** + * Stores the request. + * @var array + */ + protected $request = array(); + /** * Initialize orders actions. */ @@ -133,6 +139,20 @@ class WC_REST_Orders_Controller extends WC_REST_Posts_Controller { } } + // Remove order id + unset( $data['order_id'] ); + + // Format meta data + $hideprefix = 'true' === $this->request['all_item_meta'] ? null : '_'; + $item_meta = $item->get_formatted_meta_data( $hideprefix ); + + foreach ( $item_meta as $key => $values ) { + // Label was used in previous version of API - set it here + $item_meta[ $key ]->label = $values->display_key; + } + + $data['meta'] = $item_meta; + return $data; } @@ -146,7 +166,8 @@ class WC_REST_Orders_Controller extends WC_REST_Posts_Controller { public function prepare_item_for_response( $post, $request ) { global $wpdb; - $this->dp = $request['dp']; + $this->request = $request; + $this->dp = $request['dp']; $format_decimal = array( 'discount_total', 'discount_tax', 'shipping_total', 'shipping_tax', 'shipping_total', 'shipping_tax', 'cart_tax', 'total', 'total_tax' ); $format_date = array( 'date_created', 'date_modified', 'date_completed' ); $format_line_items = array( 'line_items', 'tax_lines', 'shipping_lines', 'fee_lines', 'coupon_lines' ); @@ -167,13 +188,23 @@ class WC_REST_Orders_Controller extends WC_REST_Posts_Controller { // Format the order status $data['status'] = 'wc-' === substr( $data['status'], 0, 3 ) ? substr( $data['status'], 3 ) : $data['status']; + // Format meta data + $data['meta'] = $data['meta_data']; + unset( $data['meta_data'] ); + // Format line items foreach ( $format_line_items as $key ) { $data[ $key ] = array_map( array( $this, 'get_order_item_data' ), $data[ $key ] ); } // refunds - + foreach ( $order->get_refunds() as $refund ) { + $data['refunds'][] = array( + 'id' => $refund->id, + 'refund' => $refund->get_refund_reason() ? $refund->get_refund_reason() : '', + 'total' => '-' . wc_format_decimal( $refund->get_refund_amount(), $this->dp ), + ); + } /* // Add addresses. @@ -225,6 +256,25 @@ class WC_REST_Orders_Controller extends WC_REST_Posts_Controller { 'meta' => $item_meta, ); + sku + price + + + + "product_id": 0, + "variation_id": 0, + "qty": 0, + "tax_class": "", + "subtotal": "0.00", + "subtotal_tax": "0.00", + "total": "0.00", + "total_tax": "0.00", + "taxes": { + "subtotal": [], + "total": [] + }, + "meta_data": + $item_line_taxes = maybe_unserialize( $item['line_tax_data'] ); if ( isset( $item_line_taxes['total'] ) ) { $line_tax = array(); diff --git a/includes/class-wc-order-item.php b/includes/class-wc-order-item.php index 1db542369d3..58da7b0eb54 100644 --- a/includes/class-wc-order-item.php +++ b/includes/class-wc-order-item.php @@ -73,8 +73,6 @@ class WC_Order_Item extends WC_Data implements ArrayAccess { foreach ( $data as $key => $value ) { if ( is_callable( array( $this, "set_$key" ) ) ) { $this->{"set_$key"}( $value ); - } else { - $this->_data[ $key ] = $value; } } } @@ -235,7 +233,7 @@ class WC_Order_Item extends WC_Data implements ArrayAccess { if ( is_numeric( $item ) && ! empty( $item ) ) { $data = $wpdb->get_row( $wpdb->prepare( "SELECT * FROM {$wpdb->prefix}woocommerce_order_items WHERE order_item_id = %d LIMIT 1;", $item ) ); - } elseif ( ! empty( $item->id ) ) { + } elseif ( ! empty( $item->order_item_id ) ) { $data = $item; } else { $data = false;