/** * @param array $shipping_items Order items to save */ public function admin_update_pickup_point($shipping_items) { $shipping_methods = $shipping_items['shipping_method']; if ($shipping_methods) { foreach ($shipping_methods as $item_id => $shipping_method) { if (strpos($shipping_method, Fraktguiden_Helper::ID) !== false) { $pickup_point_id = $shipping_items['_fraktguiden_pickup_point_id'][$item_id]; $packages = $shipping_items['_fraktguiden_packages'][$item_id]; if ($packages) { wc_update_order_item_meta($item_id, '_fraktguiden_packages', json_decode(stripslashes($packages), true)); } if (!empty($pickup_point_id)) { $pickup_point_postcode = $shipping_items['_fraktguiden_pickup_point_postcode'][$item_id]; $pickup_point_info = $shipping_items['_fraktguiden_pickup_point_info_cached'][$item_id]; wc_update_order_item_meta($item_id, '_fraktguiden_pickup_point_id', $pickup_point_id); wc_update_order_item_meta($item_id, '_fraktguiden_pickup_point_postcode', $pickup_point_postcode); wc_update_order_item_meta($item_id, '_fraktguiden_pickup_point_info_cached', $pickup_point_info); } else { wc_delete_order_item_meta($item_id, '_fraktguiden_pickup_point_postcode'); wc_delete_order_item_meta($item_id, '_fraktguiden_pickup_point_id'); wc_delete_order_item_meta($item_id, '_fraktguiden_pickup_point_info_cached'); } } else { wc_delete_order_item_meta($item_id, '_fraktguiden_pickup_point_postcode'); wc_delete_order_item_meta($item_id, '_fraktguiden_pickup_point_id'); wc_delete_order_item_meta($item_id, '_fraktguiden_pickup_point_info_cached'); } } } }
/** * @deprecated */ function woocommerce_delete_order_item_meta($item_id, $meta_key, $meta_value = '', $delete_all = false) { return wc_delete_order_item_meta($item_id, $meta_key, $meta_value, $delete_all); }
protected static function _unconfirm_tickets($order, $oiids, $modify_meta = false, $modify_meta_extra = array()) { // for each order item foreach ($order->get_items() as $oiid => $item) { // make sure that this order item is one that should be cancelled if ($oiids !== '*' && (is_array($oiids) && !in_array(absint($oiid), $oiids))) { continue; } // if this order item is not a ticket, then skip it if (!apply_filters('qsot-item-is-ticket', false, $item)) { continue; } // aggregate the information about the reservation to change $where = array('event_id' => $item['event_id'], 'ticket_type_id' => $item['product_id'], 'order_id' => $order->id, 'qty' => $item['qty'], 'order_item_id' => array(0, $oiid)); $ostatus = $order->get_status(); // actaully perform the update that removes the reservations $res = apply_filters('qsot-zoner-update-reservation', false, $where, array('qty' => 0, '_delete' => true)); // if we are being asked to modify the meta for these items as well, then do so if ($modify_meta) { $delete_meta = apply_filters('qsot-zoner-unconfirm-ticket-delete-meta', array('_event_id'), $oiid, $item, $order, $order->id, $modify_meta_extra); $zero_meta = apply_filters('qsot-zoner-unconfirm-ticket-zero-meta', array(), $oiid, $item, $order, $order->id, $modify_meta_extra); if (!empty($delete_meta)) { foreach ($delete_meta as $k) { wc_delete_order_item_meta($oiid, $k); } } if (!empty($zero_meta)) { foreach ($zero_meta as $k) { wc_update_order_item_meta($oiid, $k, 0); } } } // let other plugins know that this happened do_action('qsot-unconfirmed-ticket', $order, $item, $oiid); } }