class-wc-order-item-data-store.php 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155
  1. <?php
  2. /**
  3. * Class WC_Order_Item_Data_Store file.
  4. *
  5. * @package WooCommerce\DataStores
  6. */
  7. if ( ! defined( 'ABSPATH' ) ) {
  8. exit;
  9. }
  10. /**
  11. * WC Order Item Data Store: Misc Order Item Data functions.
  12. *
  13. * @version 3.0.0
  14. */
  15. class WC_Order_Item_Data_Store implements WC_Order_Item_Data_Store_Interface {
  16. /**
  17. * Add an order item to an order.
  18. *
  19. * @since 3.0.0
  20. * @param int $order_id Order ID.
  21. * @param array $item order_item_name and order_item_type.
  22. * @return int Order Item ID
  23. */
  24. public function add_order_item( $order_id, $item ) {
  25. global $wpdb;
  26. $wpdb->insert(
  27. $wpdb->prefix . 'woocommerce_order_items',
  28. array(
  29. 'order_item_name' => $item['order_item_name'],
  30. 'order_item_type' => $item['order_item_type'],
  31. 'order_id' => $order_id,
  32. ),
  33. array(
  34. '%s',
  35. '%s',
  36. '%d',
  37. )
  38. );
  39. return absint( $wpdb->insert_id );
  40. }
  41. /**
  42. * Update an order item.
  43. *
  44. * @since 3.0.0
  45. * @param int $item_id Item ID.
  46. * @param array $item order_item_name or order_item_type.
  47. * @return boolean
  48. */
  49. public function update_order_item( $item_id, $item ) {
  50. global $wpdb;
  51. return $wpdb->update( $wpdb->prefix . 'woocommerce_order_items', $item, array( 'order_item_id' => $item_id ) );
  52. }
  53. /**
  54. * Delete an order item.
  55. *
  56. * @since 3.0.0
  57. * @param int $item_id Item ID.
  58. */
  59. public function delete_order_item( $item_id ) {
  60. global $wpdb;
  61. $wpdb->query( $wpdb->prepare( "DELETE FROM {$wpdb->prefix}woocommerce_order_items WHERE order_item_id = %d", $item_id ) );
  62. $wpdb->query( $wpdb->prepare( "DELETE FROM {$wpdb->prefix}woocommerce_order_itemmeta WHERE order_item_id = %d", $item_id ) );
  63. }
  64. /**
  65. * Update term meta.
  66. *
  67. * @since 3.0.0
  68. * @param int $item_id Item ID.
  69. * @param string $meta_key Meta key.
  70. * @param mixed $meta_value Meta value.
  71. * @param string $prev_value (default: '').
  72. * @return bool
  73. */
  74. public function update_metadata( $item_id, $meta_key, $meta_value, $prev_value = '' ) {
  75. return update_metadata( 'order_item', $item_id, $meta_key, is_string( $meta_value ) ? wp_slash( $meta_value ) : $meta_value, $prev_value );
  76. }
  77. /**
  78. * Add term meta.
  79. *
  80. * @since 3.0.0
  81. * @param int $item_id Item ID.
  82. * @param string $meta_key Meta key.
  83. * @param mixed $meta_value Meta value.
  84. * @param bool $unique (default: false).
  85. * @return int New row ID or 0
  86. */
  87. public function add_metadata( $item_id, $meta_key, $meta_value, $unique = false ) {
  88. return add_metadata( 'order_item', $item_id, $meta_key, is_string( $meta_value ) ? wp_slash( $meta_value ) : $meta_value, $unique );
  89. }
  90. /**
  91. * Delete term meta.
  92. *
  93. * @since 3.0.0
  94. * @param int $item_id Item ID.
  95. * @param string $meta_key Meta key.
  96. * @param string $meta_value (default: '').
  97. * @param bool $delete_all (default: false).
  98. * @return bool
  99. */
  100. public function delete_metadata( $item_id, $meta_key, $meta_value = '', $delete_all = false ) {
  101. return delete_metadata( 'order_item', $item_id, $meta_key, is_string( $meta_value ) ? wp_slash( $meta_value ) : $meta_value, $delete_all );
  102. }
  103. /**
  104. * Get term meta.
  105. *
  106. * @since 3.0.0
  107. * @param int $item_id Item ID.
  108. * @param string $key Meta key.
  109. * @param bool $single (default: true).
  110. * @return mixed
  111. */
  112. public function get_metadata( $item_id, $key, $single = true ) {
  113. return get_metadata( 'order_item', $item_id, $key, $single );
  114. }
  115. /**
  116. * Get order ID by order item ID.
  117. *
  118. * @since 3.0.0
  119. * @param int $item_id Item ID.
  120. * @return int
  121. */
  122. public function get_order_id_by_order_item_id( $item_id ) {
  123. global $wpdb;
  124. return (int) $wpdb->get_var(
  125. $wpdb->prepare(
  126. "SELECT order_id FROM {$wpdb->prefix}woocommerce_order_items WHERE order_item_id = %d",
  127. $item_id
  128. )
  129. );
  130. }
  131. /**
  132. * Get the order item type based on Item ID.
  133. *
  134. * @since 3.0.0
  135. * @param int $item_id Item ID.
  136. * @return string
  137. */
  138. public function get_order_item_type( $item_id ) {
  139. global $wpdb;
  140. $item_data = $wpdb->get_row( $wpdb->prepare( "SELECT order_item_type FROM {$wpdb->prefix}woocommerce_order_items WHERE order_item_id = %d LIMIT 1;", $item_id ) );
  141. return $item_data->order_item_type;
  142. }
  143. }