PluginProbe
Route ‑ Shipping Protection / 2.4.5
Route ‑ Shipping Protection v2.4.5
2.4.19 2.4.18 2.4.17 2.4.16 2.4.15 2.4.14 2.4.13 2.4.12 2.4.11 2.4.10 2.4.9 2.4.8 2.4.7 2.4.6 2.4.5 2.4.4 2.4.3 2.4.2 2.2.4 2.2.5 2.2.6 2.2.8 2.2.9 2.3.0 2.3.1 All 153 releases
routeapp / includes / tracking-providers / class-routeapp-common-tracking-providers.php

class-routeapp-common-tracking-providers.php in Route ‑ Shipping Protection 2.4.5, at includes/tracking-providers/class-routeapp-common-tracking-providers.php

110 lines 4.1 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 use Automattic\WooCommerce\Utilities\OrderUtil;
4 class Routeapp_WooCommerce_Common_Tracking_Provider {
5
6 public function get_order_products($order_id)
7 {
8 $order = wc_get_order( $order_id );
9 $product_ids = array();
10
11 foreach ( $order->get_items() as $order_item ) {
12 ## Using WC_Order_Item_Product methods ##
13 $product = $order_item->get_product(); // Get the WC_Product object
14
15 if ($product instanceof WC_Product) {
16 for ($iterator = 1; $iterator <= $order_item->get_quantity(); $iterator++) {
17 array_push($product_ids, $order_item->get_product()->get_id());
18 }
19 }
20
21 }
22 return $product_ids;
23 }
24
25 public function remove_custom_post_meta($order_id)
26 {
27 delete_post_meta( $order_id, 'routeapp_shipment_api_called' );
28 delete_post_meta( $order_id, 'routeapp_shipment_tracking_number' );
29 delete_post_meta( $order_id, 'routeapp_shipment_tracking_provider' );
30 return true;
31 }
32
33 public function add_custom_post_meta($order_id, $tracking_number, $courier_id = false)
34 {
35 //validate if the tracking number already exists and ignore the update
36 $existing_tracking_numbers = $this->get_meta_data( $order_id, 'routeapp_shipment_tracking_number' );
37 if ( $existing_tracking_numbers === $tracking_number ) {
38 return true;
39 }
40 self::update_post_meta_value($order_id, 'routeapp_shipment_api_called', 'success');
41 self::update_post_meta_value( $order_id, 'routeapp_shipment_tracking_number', $tracking_number );
42 if ($courier_id) {
43 self::update_post_meta_value($order_id, 'routeapp_shipment_tracking_provider', $courier_id);
44 }
45 return true;
46 }
47
48 /**
49 * Update post meta value
50 *
51 * @param $order_id
52 * @param $post_meta
53 * @param $value
54 */
55 public static function update_post_meta_value( $order_id, $post_meta, $value) {
56
57 if ( class_exists('Automattic\WooCommerce\Utilities\OrderUtil')
58 && OrderUtil::custom_orders_table_usage_is_enabled() ) {
59 $order = wc_get_order($order_id);
60 $order->update_meta_data($post_meta, $value );
61 $order->save();
62 } else {
63 // Traditional CPT-based orders are in use.
64 update_post_meta( $order_id, $post_meta, $value );
65 }
66 }
67
68 /**
69 * get meta data if custom order table is enabled
70 * @param $order_id
71 * @param $post_meta
72 * @return array|mixed|string
73 */
74 public static function get_meta_data( $order_id, $post_meta ) {
75 if ( class_exists('Automattic\WooCommerce\Utilities\OrderUtil')
76 && OrderUtil::custom_orders_table_usage_is_enabled() ) {
77 $order = wc_get_order($order_id);
78 return $order->get_meta($post_meta);
79 } else {
80 // Traditional CPT-based orders are in use.
81 return get_post_meta($order_id, $post_meta, true);
82 }
83 }
84
85 public function cancel($order_id, $tracking_number, $product_ids, $routeapp) {
86 if ( is_null($order_id) || is_null($tracking_number) ) {
87 return false;
88 }
89 if (!empty($tracking_number)) {
90 $shipmentResponse = $routeapp->routeapp_api_client->get_shipment($tracking_number, $order_id);
91 if (!is_wp_error($shipmentResponse) && isset($shipmentResponse['response']['code']) && $shipmentResponse['response']['code'] == 200) {
92 $response = $routeapp->routeapp_api_client->cancel_shipment($tracking_number, array(
93 'source_order_id' => $order_id,
94 'source_product_ids' => $product_ids
95 ));
96 if ( is_wp_error( $response ) ) {
97 return false;
98 } else {
99 //$this->remove_custom_post_meta($order_id);
100 if($response['response']['code'] === 400) {
101 return false;
102 }
103 return true;
104 }
105 }
106 }
107 return false;
108 }
109 }
110