/**
  * @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);
     }
 }