HEX
Server: nginx/1.18.0
System: Linux iZj6c1ieg2jrpk1z5tzi19Z 6.3.9-1.el7.elrepo.x86_64 #1 SMP PREEMPT_DYNAMIC Wed Jun 21 22:18:40 EDT 2023 x86_64
User: www (1001)
PHP: 8.2.4
Disabled: passthru,exec,system,putenv,chroot,chgrp,chown,shell_exec,popen,proc_open,pcntl_exec,ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru,pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,imap_open,apache_setenv
Upload Files
File: /www/wwwroot/www.cytocare.cn/wp-content/plugins/woocommerce-orders-tracking/includes/data.php
<?php
if ( ! defined( 'ABSPATH' ) ) {
	exit;
}

class VI_WOOCOMMERCE_ORDERS_TRACKING_DATA {
	private $params;
	private $default;
	private $_wpnonce;
	protected static $instance = null;

	/**
	 * VI_WOOCOMMERCE_ORDERS_TRACKING_DATA constructor.
	 * Init setting
	 */
	public function __construct() {
		global $woo_orders_tracking_settings;
		if ( ! $woo_orders_tracking_settings ) {
			$woo_orders_tracking_settings = get_option( 'woo_orders_tracking_settings', array() );
		}
		$this->default = array(
			'export_settings_filename'                        => 'orders-%y-%m-%d_%h-%i-%s.csv',
			'export_settings_filter-order-date'               => 'date_created',
			'export_settings_filter-order-date-from'          => '',
			'export_settings_filter-order-date-to'            => '',
			'export_settings_filter-order-status'             => array(),
			'export_settings_filter-order-billing-address'    => array(),
			'export_settings_filter-order-shipping-address'   => array(),
			'export_settings_filter-order-payment-method'     => array(),
			'export_settings_filter-order-shipping-method'    => array(),
			'export_settings_filter-order-sort-order'         => 'order_id',
			'export_settings_filter-order-sort-order-in'      => 'ASC',
			'export_settings_filter-order-export-set-fields'  => array(
				'order_id',
				'order_item_id',
				'tracking_number',
				'carrier_slug',
			),
			'shipping_carrier_default'                        => '',
			'custom_carriers_list'                            => json_encode( array() ),
			'shipping_carriers_define_list'                   => json_encode( self::shipping_carriers() ),
			'service_carrier_enable'                          => 1,
			'service_carrier_type'                            => 'cainiao',
			'service_carrier_api_key'                         => '',
			'service_tracking_page'                           => get_option( 'vi_woo_orders_tracking_page_track_order' ),
			'service_cache_request'                           => 1,
			'service_add_tracking_if_not_exist'               => '',
			/*Tracking form*/
			'tracking_form_require_tracking_number'           => '1',
			'tracking_form_email'                             => '1',
			'tracking_form_require_email'                     => '',
			'tracking_form_order_id'                          => '1',
			'tracking_form_require_order_id'                  => '',
			'tracking_form_recaptcha_enable'                  => '1',
			'tracking_form_recaptcha_version'                 => '2',
			'tracking_form_recaptcha_site_key'                => '',
			'tracking_form_recaptcha_secret_key'              => '',
			'tracking_form_recaptcha_theme'                   => 'light',
			'tracking_form_button_track_title'                => 'Track',
			'tracking_form_button_track_color'                => '#ffffff',
			'tracking_form_button_track_bg_color'             => 'red',
			/*Timeline*/
			'timeline_track_info_sort_event'                  => 'most_recent_to_oldest',
			'timeline_track_info_date_format'                 => 'j F, Y',
			'timeline_track_info_time_format'                 => 'g:i a',
			'timeline_track_info_template'                    => '1',
			'timeline_track_info_title'                       => '{carrier_name}: {tracking_number}',
			'timeline_track_info_title_alignment'             => 'center',
			'timeline_track_info_title_color'                 => '#222',
			'timeline_track_info_title_font_size'             => '26',
			'timeline_track_info_status_color'                => '#fff',
			'timeline_track_info_status_background_delivered' => '#4cbb87',
			'timeline_track_info_status_background_pickup'    => '#f5a551',
			'timeline_track_info_status_background_transit'   => '#65aee0',
			'timeline_track_info_status_background_pending'   => '#f1f1f1',
			'timeline_track_info_status_background_alert'     => '#ff0000',
			'default_track_info_enable'                       => '',
			'default_track_info_number'                       => '',
			'default_track_info_message'                      => array(
				array(
					'time'           => 0,
					'description'    => 'Processing',
					'location'       => '',
					'status'         => 'pending',
					'order_statuses' => array( 'wc-processing', 'wc-completed' ),
				),
			),
			'default_track_info_carrier'                      => 'ePacket',
			'default_track_info_position'                     => 'after_order_table',
			'default_track_info_content'                      => '<p><a href="{tracking_url}" target="_blank" rel="nofollow">Track your order</a></p>',
			'timeline_track_info_template_one'                => array(
				'icon_delivered'          => '2',
				'icon_delivered_color'    => '#4cbb87',
				'icon_pickup'             => '14',
				'icon_pickup_color'       => '#fff',
				'icon_pickup_background'  => '#f5a551',
				'icon_transit'            => '21',
				'icon_transit_color'      => '#fff',
				'icon_transit_background' => '#65aee0',
			),
			'custom_css'                                      => '',
			'paypal_enable'                                   => '',
			'paypal_sandbox_enable'                           => array( '' ),
			'paypal_client_id_live'                           => array( '' ),
			'paypal_client_id_sandbox'                        => array( '' ),
			'paypal_secret_live'                              => array( '' ),
			'paypal_secret_sandbox'                           => array( '' ),
			'paypal_method'                                   => array( '' ),
			'paypal_add_after_aliexpress_order_synced'        => '',
			/*SMS*/
			'sms_enable'                                      => '',
			'sms_from_number'                                 => '',
			'sms_text'                                        => 'Hi {billing_first_name}, your order #{order_id} tracking code has changed. Click to track {tracking_url}',
			'sms_text_new'                                    => 'Hi {billing_first_name}, tracking code is added to your order #{order_id}. Click to track {tracking_url}',
			'sms_provider'                                    => 'twilio',
			'sms_twilio_app_id'                               => '',
			'sms_twilio_app_token'                            => '',
			'sms_nexmo_app_id'                                => '',
			'sms_nexmo_app_token'                             => '',
			'sms_nexmo_unicode'                               => '',
			'sms_plivo_app_id'                                => '',
			'sms_plivo_app_token'                             => '',
			'sms_plivo_powerpack_uuid'                        => '',
			'bitly_access_token'                              => '',
			'send_test_sms'                                   => '',
			/*Email WOO*/
			'email_woo_enable'                                => '1',
			'email_woo_status'                                => array( 'customer_completed_order' ),
			'email_woo_position'                              => 'after_order_table',
			'email_woo_html'                                  => '<h2 class="email-upsell-title">Tracking information</h2>Your tracking number: {tracking_list}',
			'email_woo_tracking_list_html'                    => '<a href="{tracking_url}" target="_blank">{tracking_number}</a> by {carrier_name}',
			'email_woo_tracking_number_html'                  => 'Tracking number: <a href="{tracking_url}" target="_blank">{tracking_number}</a>',
			'email_woo_tracking_carrier_html'                 => 'Carrier: <a href="{carrier_url}" target="_blank">{carrier_name}</a>',
			/*Email*/
			'email_enable'                                    => '1',
			'email_send_all_order_items'                      => '1',
			'email_send_after_aliexpress_order_synced'        => '',
			'email_column_tracking_number'                    => '<a href="{tracking_url}" target="_blank">{tracking_number}</a>',
			'email_column_carrier_name'                       => '{carrier_name}',
			'email_column_tracking_url'                       => '<a href="{tracking_url}" target="_blank">Track</a>',
			'email_time_send'                                 => '1',
			'email_time_send_type'                            => 'hour',
			'email_number_send'                               => '10',
			'email_template'                                  => '',
			'email_subject'                                   => 'Order tracking updated #{order_id}',
			'email_heading'                                   => 'Tracking info of order #{order_id}',
			'email_content'                                   => 'Dear {billing_first_name},

Your order #{order_id} has been updated as below:

{tracking_table}

Your sincerely',
			'supported_paypal_gateways'                       => array(
				'paypal',
				'ppec_paypal',
				'ppcp-gateway'
			),
			'orders_per_request'                              => 10,
			'custom_start'                                    => 2,
			'order_status'                                    => 'wc-completed',
			'key'                                             => '',
			'cron_update_tracking'                            => '',
			'cron_update_tracking_interval'                   => '1',
			'cron_update_tracking_hour'                       => '0',
			'cron_update_tracking_minute'                     => '0',
			'cron_update_tracking_second'                     => '0',
			'cron_update_tracking_range'                      => '60',
			'webhooks_enable'                                 => '',
			'webhooks_send_email_trackingmore'                => array( 'delivered' ),
			'webhooks_send_email_aftership'                   => array( 'delivered' ),
			'webhooks_send_email_easypost'                    => array( 'delivered' ),
			'webhooks_user_email'                             => '',
			'webhooks_secret'                                 => '',
			'webhooks_password'                               => md5( time() ),
			'change_order_status'                             => '',
			'translate_timeline'                              => '',
			'cloud_translation_api'                           => '',
			'dianxiaomi_enable'                               => '',
			'dianxiaomi_send_email'                           => '',
			'dianxiaomi_change_status'                        => '',
			'dianxiaomi_courier_mapping'                      => array(
				'dhl' => 'dhl'
			),
		);

		$this->params = apply_filters( 'woo_orders_tracking_settings', wp_parse_args( $woo_orders_tracking_settings, $this->default ) );
	}

	public static function get_instance( $new = false ) {
		if ( $new || null === self::$instance ) {
			self::$instance = new self;
		}

		return self::$instance;
	}

	public function get_params_old( $name = '', $type = '' ) {
		if ( ! $name ) {
			return $this->params;
		} elseif ( isset( $this->params[ $name ] ) ) {
			return apply_filters( 'woo_orders_tracking_settings-' . $name, $this->params[ $name ] );
		} elseif ( $type && isset( $this->params[ $type ][ $name ] ) ) {
			return apply_filters( 'woo_orders_tracking_settings-' . $type . '-' . $name, $this->params[ $type ][ $name ] );
		} else {
			return $this->get_default( $name, $type );
		}
	}

	public function get_params( $name = '', $name_sub = '', $language = '' ) {
		$language = apply_filters( 'woo_orders_tracking_settings_language', $language, $name, $name_sub );
		if ( ! $name ) {
			return $this->params;
		} elseif ( isset( $this->params[ $name ] ) ) {
			if ( $name_sub ) {
				if ( isset( $this->params[ $name ][ $name_sub ] ) ) {
					if ( $language ) {
						$name_language = $name_sub . '_' . $language;
						if ( isset( $this->params[ $name ][ $name_language ] ) ) {
							return apply_filters( 'woo_orders_tracking_settings-' . $name . '__' . $name_language, $this->params[ $name ][ $name_language ] );
						} else {
							return apply_filters( 'woo_orders_tracking_settings-' . $name . '__' . $name_language, $this->params[ $name ][ $name_sub ] );
						}
					} else {
						return apply_filters( 'woo_orders_tracking_settings-' . $name . '__' . $name_sub, $this->params[ $name ] [ $name_sub ] );
					}
				} elseif ( $this->default[ $name ] [ $name_sub ] ) {
					return apply_filters( 'woo_orders_tracking_settings-' . $name . '__' . $name_sub, $this->default[ $name ] [ $name_sub ] );
				} else {
					return false;
				}
			} else {
				if ( $language ) {
					$name_language = $name . '_' . $language;
					if ( isset( $this->params[ $name_language ] ) ) {
						return apply_filters( 'woo_orders_tracking_settings-' . $name_language, $this->params[ $name_language ] );
					} else {
						return apply_filters( 'woo_orders_tracking_settings-' . $name_language, $this->params[ $name ] );
					}
				} else {
					return apply_filters( 'woo_orders_tracking_settings-' . $name, $this->params[ $name ] );
				}
			}
		} else {
			return false;
		}
	}

	public function get_default( $name = '', $type = '' ) {
		if ( ! $name ) {
			return $this->default;
		} elseif ( isset( $this->default[ $name ] ) ) {
			return apply_filters( 'woo_orders_tracking_settings_default-' . $name, $this->default[ $name ] );
		} elseif ( $type && isset( $this->default[ $type ][ $name ] ) ) {
			return apply_filters( 'woo_orders_tracking_settings_default-' . $type . '-' . $name, $this->default[ $type ][ $name ] );
		} else {
			return false;
		}
	}

	public static function set( $name, $set_name = false, $prefix = 'woo-orders-tracking-' ) {
		if ( is_array( $name ) ) {
			return implode( ' ', array_map( array( 'VI_WOOCOMMERCE_ORDERS_TRACKING_DATA', 'set' ), $name ) );
		} else {
			if ( $set_name ) {
				return esc_attr( str_replace( '-', '_', $prefix . $name ) );

			} else {
				return esc_attr( $prefix . $name );

			}
		}
	}

	/**
	 * @param $slug
	 * @param string $type
	 *
	 * @return bool|array
	 */
	public function get_shipping_carrier_by_slug( $slug, $type = '' ) {
		$result = false;
		if ( ! $type ) {
			if ( substr( $slug, 0, 7 ) === 'custom_' || substr( $slug, 0, 14 ) === 'custom-carrier' ) {
				$type = 'custom-carrier';
			} else {
				$type = 'define-carrier';
			}
		}
		switch ( $type ) {
			case 'custom-carrier':
				$carriers = self::get_custom_carriers();
				if ( count( $carriers ) ) {
					foreach ( $carriers as $carrier ) {
						if ( $carrier['slug'] === $slug ) {
							$carrier['carrier_type'] = $type;
							$result                  = $carrier;
							break;
						}
					}
				}
				break;
			case 'define-carrier':
				$carriers = self::get_defined_carriers();
				foreach ( $carriers as $carrier ) {
					if ( $carrier['slug'] === $slug ) {
						$carrier['carrier_type'] = $type;
						$result                  = $carrier;
						break;
					}
				}
				break;
			default:
		}

		return $result;
	}

	public function get_shipping_carrier_url( $slug, $type = '' ) {
		$result  = '';
		$carrier = $this->get_shipping_carrier_by_slug( $slug, $type );
		if ( is_array( $carrier ) && count( $carrier ) ) {
			$result = $carrier['url'];
		}

		return $result;
	}


	public function get_shipping_carrier_name( $slug, $type = '' ) {
		$result  = '';
		$carrier = $this->get_shipping_carrier_by_slug( $slug, $type );
		if ( is_array( $carrier ) && count( $carrier ) ) {
			$result = $carrier['name'];
		}

		return $result;
	}

	/**
	 * @param $url
	 * @param $tracking_number
	 * @param $slug
	 * @param string $postal_code
	 * @param bool $return_carrier_url
	 * @param bool $add_nonce
	 * @param string $order_id
	 *
	 * @return string
	 */
	public function get_url_tracking( $url, $tracking_number, $slug, $postal_code = '', $return_carrier_url = false, $add_nonce = true, $order_id = '' ) {
		if ( ! $tracking_number ) {
			return '';
		}
		$tracking_link = '';
		if ( ! $return_carrier_url && $this->get_params( 'service_carrier_enable' ) ) {
			$service_tracking_page = $this->get_params( 'service_tracking_page' );
			if ( $service_tracking_page && $service_tracking_page_url = get_the_permalink( $service_tracking_page ) ) {
				$tracking_link = add_query_arg( array( 'tracking_id' => $tracking_number ), $service_tracking_page_url );
				if ( $add_nonce ) {
					$this->_wpnonce = wp_create_nonce( 'woo_orders_tracking_nonce_action' );
					$tracking_link  = add_query_arg( array( 'woo_orders_tracking_nonce' => $this->_wpnonce ), $tracking_link );
				}
				if ( $order_id ) {
					if ( $this->get_params( 'tracking_form_order_id' ) ) {
						$tracking_link = add_query_arg( array( 'order_id' => $order_id ), $tracking_link );
					}
					if ( $this->get_params( 'tracking_form_email' ) ) {
						$tracking_link = add_query_arg( array( 'order_email' => get_post_meta( $order_id, '_billing_email', true ) ), $tracking_link );
					}
				}
			} else {
				switch ( $this->get_params( 'service_carrier_type' ) ) {
					case 'trackingmore':
						$tracking_link = 'http://track.trackingmore.com/choose-en-' . $tracking_number . '.html';
						break;
					case 'aftership':
						$tracking_link = 'https://track.aftership.com/' . $tracking_number;
						break;
					case 'cainiao':
						$tracking_link = 'https://global.cainiao.com/detail.htm?mailNoList=' . $tracking_number;
						break;
					default:
				}
			}
		}
		if ( ! $tracking_link ) {
			if ( ! $url ) {
				$url = $this->get_shipping_carrier_url( $slug, 'define-carrier' );
			}
			$tracking_link = str_replace( array( '{tracking_number}', '{postal_code}' ), array(
				$tracking_number,
				$postal_code
			), $url );
		}

		return $tracking_link;
	}

	public static function shipping_carriers( $filter = true ) {
		$carriers = array(
			array(
				'name'               => 'Austrian Post',
				'slug'               => 'austria-post',
				'url'                => 'https://www.post.at/sendungsverfolgung.php?pnum1={tracking_number}',
				'country'            => 'AT',
				'active'             => '',
				'tracking_more_slug' => 'austria-post',
			),
			array(
				'name'               => 'DHL Austria',
				'slug'               => 'dhl-at',
				'url'                => 'https://www.logistics.dhl/at-en/home/tracking/tracking-ecommerce.html?tracking-id={tracking_number}',
				'country'            => 'AT',
				'active'             => '',
				'tracking_more_slug' => '',
			),
			array(
				'name'               => 'DPD Austria',
				'slug'               => 'dpd-at',
				'url'                => 'https://tracking.dpd.de/parcelstatus?locale=de_AT&query={tracking_number}',
				'country'            => 'AT',
				'active'             => '',
				'tracking_more_slug' => '',
			),
			array(
				'name'               => 'Australia Post',
				'slug'               => 'australia-post',
				'url'                => 'https://auspost.com.au/track/track.html?id={tracking_number}',
				'country'            => 'AU',
				'active'             => '',
				'tracking_more_slug' => 'australia-post',
			),
			array(
				'name'               => 'Australia EMS',
				'slug'               => 'australia-ems',
				'url'                => 'https://auspost.com.au/track/track.html?id={tracking_number}',
				'country'            => 'AU',
				'active'             => '',
				'tracking_more_slug' => 'australia-ems',
			),
			array(
				'name'               => 'Fastway Australia',
				'slug'               => 'fastway-au',
				'url'                => 'https://www.fastway.com.au/tools/track/?l={tracking_number}',
				'country'            => 'AU',
				'active'             => '',
				'tracking_more_slug' => 'fastway-au',
			),
			array(
				'name'               => 'Dai Post',
				'slug'               => 'dai-post-au',
				'url'                => 'https://daiglobaltrack.com/tracking.aspx?custtracknbr={tracking_number}',
				'country'            => 'AU',
				'active'             => '',
				'tracking_more_slug' => '',
			),
			array(
				'name'               => 'MyToll Australia',
				'slug'               => 'mytoll-au',
				'url'                => 'https://online.toll.com.au/trackandtrace/traceConsignments.do?consignments={tracking_number}',
				'country'            => 'AU',
				'active'             => '',
				'tracking_more_slug' => '',
			),
			array(
				'name'               => 'StarTrack',
				'slug'               => 'startrack-au',
				'url'                => 'https://sttrackandtrace.startrack.com.au/{tracking_number}',
				'country'            => 'AU',
				'active'             => '',
				'tracking_more_slug' => 'star-track',
			),
			array(
				'name'               => 'Couriers Please',
				'slug'               => 'couriers-please-au',
				'url'                => 'https://www.couriersplease.com.au/tools-track/no/{tracking_number}',
				'country'            => 'AU',
				'active'             => '',
				'tracking_more_slug' => 'couriers-please',
			),
			array(
				'name'               => 'Sendle',
				'slug'               => 'sendle-au',
				'url'                => 'https://track.sendle.com/tracking?ref={tracking_number}',
				'country'            => 'AU',
				'active'             => '',
				'tracking_more_slug' => 'sendle',
			),
			array(
				'name'               => 'TNT Australia',
				'slug'               => 'tnt-au',
				'url'                => 'https://www.tnt.com/express/en_au/site/shipping-tools/tracking.html?respCountry=au&respLang=en&cons={tracking_number}',
				'country'            => 'AU',
				'active'             => '',
				'tracking_more_slug' => 'tnt-au',
			),
			array(
				'name'               => 'Belgium Post',
				'slug'               => 'belgium-post',
				'url'                => 'https://track.bpost.be/btr/web/#/search?itemCode={tracking_number}',
				'country'            => 'BE',
				'active'             => '',
				'tracking_more_slug' => 'belgium-post',
			),
			array(
				'name'               => 'Brazil Correios',
				'slug'               => 'brazil-correios',
				'url'                => 'https://www.correios.com.br/',
				'country'            => 'BR',
				'active'             => '',
				'tracking_more_slug' => 'brazil-correios',
			),
			array(
				'name'               => 'Canada Post',
				'slug'               => 'canada-post',
				'url'                => 'https://www.canadapost.ca/cpotools/apps/track/personal/findByTrackNumber?trackingNumber={tracking_number}&LOCALE=en',
				'country'            => 'CA',
				'active'             => '',
				'tracking_more_slug' => 'canada-post',
			),
			array(
				'name'               => 'Canpar Courier',
				'slug'               => 'Courier-ca',
				'url'                => 'https://www.canpar.ca/en/track/tracking.jsp',
				'country'            => 'CA',
				'active'             => '',
				'tracking_more_slug' => 'canpar',
			),
			array(
				'name'               => 'Swiss Post',
				'slug'               => 'swiss-post',
				'url'                => 'https://service.post.ch/EasyTrack/submitParcelData.do?p_language=en&formattedParcelCodes={tracking_number}',
				'country'            => 'CH',
				'active'             => '',
				'tracking_more_slug' => 'swiss-post',
			),
			array(
				'name'               => 'Ivory Coast EMS',
				'slug'               => 'ivory-coast-ems',
				'url'                => 'https://laposte.ci.post/tracking-colis?identifiant={tracking_number}',
				'country'            => 'CI',
				'active'             => '',
				'tracking_more_slug' => 'ivory-coast-ems',
			),
			array(
				'name'               => 'Correos Chile',
				'slug'               => 'correos-chile',
				'url'                => 'https://www.correos.cl/web/guest/seguimiento-en-linea?codigos={tracking_number}',
				'country'            => 'CL',
				'active'             => '',
				'tracking_more_slug' => 'correos-chile',
			),
			array(
				'name'               => 'China Post',
				'slug'               => 'china-post',
				'url'                => 'english.chinapost.com.cn',
				'country'            => 'CN',
				'active'             => '',
				'tracking_more_slug' => 'china-post',
			),
			array(
				'name'               => 'China EMS( ePacket )',
				'slug'               => 'china-ems',
				'url'                => 'https://www.11183.com.cn/english.html',
				'country'            => 'CN',
				'active'             => '',
				'tracking_more_slug' => 'china-ems',
			),
			array(
				'name'               => 'S.F Express',
				'slug'               => 'sf-express-cn',
				'url'                => 'https://www.sf-express.com/cn/en/dynamic_function/waybill/#search/bill-number/{tracking_number}',
				'country'            => 'CN',
				'active'             => '',
				'tracking_more_slug' => 'sf-express',
			),
			array(
				'name'               => 'Yun Express',
				'slug'               => 'yun-express-cn',
				'url'                => 'http://www.yuntrack.com/Track/Detail/{tracking_number}',
				'country'            => 'CN',
				'active'             => '',
				'tracking_more_slug' => 'yunexpress',
			),
			array(
				'name'               => 'Cyprus Post',
				'slug'               => 'cyprus-post',
				'url'                => 'https://www.cypruspost.post/en/track-n-trace-results?code={tracking_number}',
				'country'            => 'CY',
				'active'             => '',
				'tracking_more_slug' => 'cyprus-post',
			),
			array(
				'name'               => 'DHL CZ',
				'slug'               => 'dhl-cz',
				'url'                => 'https://www.dhl.cz/cs/express/sledovani_zasilek.html?AWB={tracking_number}&brand=DHL',
				'country'            => 'CZ',
				'active'             => '',
				'tracking_more_slug' => '',
			),
			array(
				'name'               => 'DPD CZ',
				'slug'               => 'dpd-cz',
				'url'                => 'https://tracking.dpd.de/parcelstatus?locale=cs_CZ&query={tracking_number}',
				'country'            => 'CZ',
				'active'             => '',
				'tracking_more_slug' => '',
			),
			array(
				'name'               => 'Deutsche Post DHL',
				'slug'               => 'dhl-de',
				'url'                => 'https://nolp.dhl.de/nextt-online-public/set_identcodes.do?lang=de&idc={tracking_number}',
				'country'            => 'DE',
				'tracking_more_slug' => '',
				'active'             => '',
			),
			array(
				'name'               => 'Hermes Germany',
				'slug'               => 'hermes-de',
				'url'                => 'https://www.myhermes.de/empfangen/sendungsverfolgung/?suche={tracking_number}',
				'country'            => 'DE',
				'active'             => '',
				'tracking_more_slug' => 'hermes-de',
			),
			array(
				'name'               => 'UPS DE',
				'slug'               => 'ups-de',
				'url'                => 'https://wwwapps.ups.com/WebTracking?sort_by=status&tracknums_displayed=1&TypeOfInquiryNumber=T&loc=de_DE&InquiryNumber1={tracking_number}',
				'country'            => 'DE',
				'active'             => '',
				'tracking_more_slug' => '',
			),
			array(
				'name'               => 'DPD DE',
				'slug'               => 'dpd-de',
				'url'                => 'https://tracking.dpd.de/parcelstatus?query={tracking_number}&locale=en_DE',
				'country'            => 'DE',
				'active'             => '',
				'tracking_more_slug' => 'dpd-de',
			),
			array(
				'name'               => 'Deutsche Post',
				'slug'               => 'deutsche-post',
				'url'                => 'https://www.deutschepost.de/sendung/simpleQuery.html',
				'country'            => 'DE',
				'active'             => '',
				'tracking_more_slug' => 'deutsche-post',
			),
			array(
				'name'               => 'Denmark Post',
				'slug'               => 'denmark-post',
				'url'                => 'https://www.postnord.dk/en/track-and-trace#dynamicloading=true&shipmentid={tracking_number}',
				'country'            => 'DK',
				'active'             => '',
				'tracking_more_slug' => 'denmark-post',
			),
			array(
				'name'               => 'Colissimo',
				'slug'               => 'colissimo-fr',
				'url'                => 'https://www.laposte.fr/outils/suivre-vos-envois?code={tracking_number}',
				'country'            => 'FR',
				'active'             => '',
				'tracking_more_slug' => 'colissimo',
			),
			array(
				'name'               => 'Chronopost France',
				'slug'               => 'chronopost-fr',
				'url'                => 'https://www.chronopost.fr/fr/chrono_suivi_search?listeNumerosLT={tracking_number}',
				'country'            => 'FR',
				'active'             => '',
				'tracking_more_slug' => 'Chronopost',
			),
			array(
				'name'               => 'Colis Privé',
				'slug'               => 'colis-prive',
				'url'                => 'https://www.colisprive.fr/',
				'country'            => 'FR',
				'active'             => '',
				'tracking_more_slug' => 'colis-prive',
			),
			array(
				'name'               => 'La Poste',
				'slug'               => 'la-poste-fr',
				'url'                => 'https://www.laposte.fr/outils/track-a-parcel',
				'country'            => 'FR',
				'active'             => '',
				'tracking_more_slug' => 'laposte',
			),
			array(
				'name'               => 'Mondial Relay',
				'slug'               => 'mondial-relay-fr',
				'url'                => 'https://www.mondialrelay.fr/suivi-de-colis?numeroExpedition={tracking_number}',
				'country'            => 'FR',
				'active'             => '',
				'tracking_more_slug' => 'mondialrelay',
			),
			array(
				'name'               => 'TNT France',
				'slug'               => 'tnt-fr',
				'url'                => 'https://www.tnt.fr/public/suivi_colis/recherche/visubontransport.do',
				'country'            => 'FR',
				'active'             => '',
				'tracking_more_slug' => 'tnt-fr',
			),
			array(
				'name'               => 'DPD UK',
				'slug'               => 'dpd-uk',
				'url'                => 'https://www.dpd.co.uk/tracking/trackingSearch.do?search.searchType=0&search.parcelNumber={tracking_number}',
				'country'            => 'GB',
				'active'             => '',
				'tracking_more_slug' => 'dpd-uk',
			),
			array(
				'name'               => 'Parcelforce UK',
				'slug'               => 'parcelforce-uk',
				'url'                => 'https://www.parcelforce.com/portal/pw/track?trackNumber={tracking_number}',
				'country'            => 'GB',
				'active'             => '',
				'tracking_more_slug' => 'parcel-force',
			),
			array(
				'name'               => 'Royal Mail',
				'slug'               => 'royal-mail',
				'url'                => 'https://www.royalmail.com/track-your-item#/tracking-results/{tracking_number}',
				'country'            => 'GB',
				'active'             => '',
				'tracking_more_slug' => 'royal-mail',
			),
			array(
				'name'               => 'ArrowXL',
				'slug'               => 'arrowxl',
				'url'                => 'https://www.arrowxl.co.uk/',
				'country'            => 'GB',
				'active'             => '',
				'tracking_more_slug' => 'arrowxl',
			),
			array(
				'name'               => 'TNT UK',
				'slug'               => 'tnt-uk',
				'url'                => 'https://www.tnt.com/?searchType=con&cons={tracking_number}',
				'country'            => 'GB',
				'active'             => '',
				'tracking_more_slug' => 'tnt-uk',
			),
			array(
				'name'               => 'TNT Reference',
				'slug'               => 'tnt-reference-uk',
				'url'                => 'https://www.tnt.com/express/en_gb/site/shipping-tools/tracking.html?searchType=con&cons={tracking_number}',
				'country'            => 'GB',
				'active'             => '',
				'tracking_more_slug' => 'tnt-reference',
			),
			array(
				'name'               => 'DHL UK',
				'slug'               => 'dhl-uk',
				'url'                => 'https://www.dhl.co.uk/en/express/tracking.html?AWB={tracking_number}&brand=DHL',
				'country'            => 'GB',
				'active'             => '',
				'tracking_more_slug' => '',
			),
			array(
				'name'               => 'myHermes UK',
				'slug'               => 'myhermes-uk',
				'url'                => 'https://new.myhermes.co.uk/track.html#/parcel/{tracking_number}/details',
				'country'            => 'GB',
				'active'             => '',
				'tracking_more_slug' => '',
			),
			array(
				'name'               => 'Aliexpress Standard Shipping',
				'slug'               => 'aliexpress-standard-shipping',
				'url'                => 'https://global.cainiao.com/detail.htm?mailNoList={tracking_number}',
				'country'            => 'Global',
				'active'             => '',
				'tracking_more_slug' => 'cainiao',
			),
			array(
				'name'               => 'DHL Express',
				'slug'               => 'dhl',
				'url'                => 'https://www.dhl.com/en/express/tracking.html?AWB={tracking_number}&brand=DHL',
				'country'            => 'Global',
				'active'             => '',
				'tracking_more_slug' => 'dhl',
			),
			array(
				'name'               => 'Aramex',
				'slug'               => 'aramex',
				'url'                => 'https://www.aramex.com/track_results_multiple.aspx?ShipmentNumber={tracking_number}',
				'country'            => 'Global',
				'active'             => '',
				'tracking_more_slug' => 'aramex',
			),
			array(
				'name'               => 'Direct Link',
				'slug'               => 'direct-link',
				'url'                => 'https://tracking.directlink.com/?itemNumber={tracking_number}&locale=en',
				'country'            => 'Global',
				'active'             => '',
				'tracking_more_slug' => '',
			),
			array(
				'name'               => 'DHL Logistics',
				'slug'               => 'dhl-logistics',
				'url'                => 'https://www.logistics.dhl/global-en/home/tracking/tracking-freight.html?tracking-id={tracking_number}',
				'country'            => 'Global',
				'active'             => '',
				'tracking_more_slug' => '',
			),
			array(
				'name'               => 'GLS',
				'slug'               => 'gls',
				'url'                => 'https://gls-group.eu/EU/en/parcel-tracking?match={tracking_number}',
				'country'            => 'Global',
				'active'             => '',
				'tracking_more_slug' => 'gls',
			),
			array(
				'name'               => 'Fedex',
				'slug'               => 'fedex',
				'url'                => 'https://www.fedex.com/fedextrack/?cntry_code=us&tracknumbers={tracking_number}',
				'country'            => 'Global',
				'active'             => '',
				'tracking_more_slug' => 'fedex',
			),
			array(
				'name'               => 'UPS',
				'slug'               => 'ups',
				'url'                => 'https://wwwapps.ups.com/WebTracking/track?track=yes&trackNums={tracking_number}',
				'country'            => 'Global',
				'active'             => '',
				'tracking_more_slug' => 'ups',
			),
			array(
				'name'               => 'USPS',
				'slug'               => 'usps',
				'url'                => 'https://tools.usps.com/go/TrackConfirmAction_input?qtc_tLabels1={tracking_number}',
				'country'            => 'Global',
				'active'             => '',
				'tracking_more_slug' => 'usps',
			),
			array(
				'name'               => 'TNT',
				'slug'               => 'tnt',
				'url'                => 'https://www.tnt.com/?searchType=con&cons={tracking_number}',
				'country'            => 'Global',
				'active'             => '',
				'tracking_more_slug' => 'tnt',
			),
			array(
				'name'               => 'Hong Kong Post',
				'slug'               => 'hong-kong-post',
				'url'                => 'https://www.hongkongpost.hk/en/mail_tracking/index.html',
				'country'            => 'HK',
				'active'             => '',
				'tracking_more_slug' => 'hong-kong-post',
			),
			array(
				'name'               => 'Croatia Post',
				'slug'               => 'hrvatska-posta',
				'url'                => 'https://www.posta.hr/tracktrace.aspx?broj={tracking_number}',
				'country'            => 'HR',
				'active'             => '',
				'tracking_more_slug' => 'hrvatska-posta',
			),
			array(
				'name'               => 'DPD IE',
				'slug'               => 'dpd-ie',
				'url'                => 'https://www2.dpd.ie/Services/QuickTrack/tabid/222/ConsignmentID/{tracking_number}/Default.aspx',
				'country'            => 'IE',
				'active'             => '',
				'tracking_more_slug' => 'dpd-ireland',
			),
			array(
				'name'               => 'An Post',
				'slug'               => 'an-post',
				'url'                => 'https://www.anpost.com/Post-Parcels/Track/History?item={tracking_number}',
				'country'            => 'IE',
				'active'             => '',
				'tracking_more_slug' => 'an-post',
			),
			array(
				'name'               => 'Israel Post',
				'slug'               => 'israel-post',
				'url'                => 'https://mypost.israelpost.co.il/itemtrace?itemcode={tracking_number}',
				'country'            => 'IL',
				'active'             => '',
				'tracking_more_slug' => 'israel-post',
			),
			array(
				'name'               => 'India Post',
				'slug'               => 'india-post',
				'url'                => 'https://www.indiapost.gov.in/_layouts/15/dop.portal.tracking/trackconsignment.aspx',
				'country'            => 'IN',
				'active'             => '',
				'tracking_more_slug' => 'india-post',
			),
			array(
				'name'               => 'ABF',
				'slug'               => 'abf',
				'url'                => 'https://arcb.com/tools/tracking.html',
				'country'            => 'IN',
				'active'             => '',
				'tracking_more_slug' => 'abf',
			),
			array(
				'name'               => 'Delhivery',
				'slug'               => 'delhivery',
				'url'                => 'https://www.delhivery.com/track/package/{tracking_number}',
				'country'            => 'IN',
				'active'             => '',
				'tracking_more_slug' => 'delhivery',
			),
			array(
				'name'               => 'Ecom Express',
				'slug'               => 'ecom-express',
				'url'                => 'https://ecomexpress.in/tracking/?tflag=0&awb_field={tracking_number}',
				'country'            => 'IN',
				'active'             => '',
				'tracking_more_slug' => 'ecom-express',
			),
			array(
				'name'               => 'DTDC IN',
				'slug'               => 'dtdc-in',
				'url'                => 'https://www.dtdc.in/tracking/tracking_results.asp?Ttype=awb_no&strCnno={tracking_number}&TrkType2=awb_no',
				'country'            => 'IN',
				'active'             => '',
				'tracking_more_slug' => 'dtdc',
			),
			array(
				'name'               => 'TNT IT',
				'slug'               => 'tnt-it',
				'url'                => 'https://www.tnt.it/tracking/Tracking.do',
				'country'            => 'IT',
				'active'             => '',
				'tracking_more_slug' => 'tnt-it',
			),
			array(
				'name'               => 'GLS IT',
				'slug'               => 'gls-it',
				'url'                => 'https://www.gls-italy.com/?option=com_gls&view=track_e_trace&mode=search&numero_spedizione={tracking_number}&tipo_codice=nazionale',
				'country'            => 'IT',
				'active'             => '',
				'tracking_more_slug' => 'gls-italy',
			),
			array(
				'name'               => 'Japan Post',
				'slug'               => 'japan-post',
				'url'                => 'https://trackings.post.japanpost.jp/services/srv/sequenceNoSearch/?requestNo={tracking_number}&count=100&sequenceNoSearch.x=94&sequenceNoSearch.y=10&locale=en',
				'country'            => 'JP',
				'active'             => '',
				'tracking_more_slug' => 'japan-post',
			),
			array(
				'name'               => 'Korea Post',
				'slug'               => 'korea-post',
				'url'                => 'https://service.epost.go.kr/trace.RetrieveEmsRigiTraceList.comm?ems_gubun=E&sid1=&POST_CODE={tracking_number}',
				'country'            => 'KR',
				'active'             => '',
				'tracking_more_slug' => 'korea-post',
			),
			array(
				'name'               => 'Latvijas Pasts',
				'slug'               => 'latvijas-pasts',
				'url'                => 'https://www.pasts.lv/en/Category/Tracking_of_Postal_Items/',
				'country'            => 'LV',
				'active'             => '',
				'tracking_more_slug' => 'latvijas-pasts',
			),
			array(
				'name'               => 'Monaco EMS',
				'slug'               => 'monaco-ems',
				'url'                => 'https://www.lapostemonaco.mc/',
				'country'            => 'MC',
				'active'             => '',
				'tracking_more_slug' => 'monaco-ems',
			),
			array(
				'name'               => 'Malaysia Post',
				'slug'               => 'malaysia-post',
				'url'                => 'https://www.pos.com.my/postal-services/quick-access/?track-trace',
				'country'            => 'MY',
				'active'             => '',
				'tracking_more_slug' => 'malaysia-post',
			),
			array(
				'name'               => 'Netherlands Post( PostNL )',
				'slug'               => 'postnl',
				'url'                => 'https://jouw.postnl.nl/#!/track-en-trace/{tracking_number}/NL/',
				'country'            => 'NL',
				'active'             => '',
				'tracking_more_slug' => 'netherlands-post',
			),
			array(
				'name'               => 'DPD NL',
				'slug'               => 'dpd-nl',
				'url'                => 'https://track.dpdnl.nl/?parcelnumber={tracking_number}',
				'country'            => 'NL',
				'active'             => '',
				'tracking_more_slug' => '',
			),
			array(
				'name'               => 'DPD Netherlands',
				'slug'               => 'dpd-parcel-nl',
				'url'                => 'https://www.logistics.dhl/nl-en/home/tracking/tracking-parcel.html?tracking-id={tracking_number}',
				'country'            => 'NL',
				'active'             => '',
				'tracking_more_slug' => '',
			),
			array(
				'name'               => 'Fastway NZ',
				'slug'               => 'fastway-nz',
				'url'                => 'https://www.fastway.co.nz/tools/track?l={tracking_number}',
				'country'            => 'NZ',
				'active'             => '',
				'tracking_more_slug' => 'fastway-nz',
			),
			array(
				'name'               => 'Portugal Post - CTT',
				'slug'               => 'portugal-post-ctt',
				'url'                => 'https://www.ctt.pt/feapl_2/app/open/objectSearch/objectSearch.jspx?objects={tracking_number}',
				'country'            => 'PT',
				'active'             => '',
				'tracking_more_slug' => 'ctt',
			),
			array(
				'name'               => 'DPD RO',
				'slug'               => 'dpd-ro',
				'url'                => 'https://tracking.dpd.de/parcelstatus?query={tracking_number}&locale=ro_RO',
				'country'            => 'RO',
				'active'             => '',
				'tracking_more_slug' => '',
			),
			array(
				'name'               => 'DHL SE',
				'slug'               => 'dhl-se',
				'url'                => 'https://www.dhl.se/content/se/sv/express/godssoekning.shtml?AWB={tracking_number}&brand=DHL',
				'country'            => 'SE',
				'active'             => '',
				'tracking_more_slug' => '',
			),
			array(
				'name'               => 'UPS SE',
				'slug'               => 'ups-se',
				'url'                => 'https://wwwapps.ups.com/WebTracking/track?track=yes&loc=sv_SE&trackNums={tracking_number}',
				'country'            => 'SE',
				'active'             => '',
				'tracking_more_slug' => '',
			),
			array(
				'name'               => 'Singapore Post',
				'slug'               => 'singapore-post',
				'url'                => 'https://www.singpost.com/track-items',
				'country'            => 'SG',
				'active'             => '',
				'tracking_more_slug' => 'singapore-post',
			),
			array(
				'name'               => 'Ninja Van',
				'slug'               => 'ninja-van-sg',
				'url'                => 'https://www.ninjavan.co/en-sg/?tracking_id={tracking_number}',
				'country'            => 'SG',
				'active'             => '',
				'tracking_more_slug' => 'ninjavan',
			),
			array(
				'name'               => 'Roadbull',
				'slug'               => 'roadbull-sg',
				'url'                => 'https://cds.roadbull.com/order/track/{tracking_number}',
				'country'            => 'SG',
				'active'             => '',
				'tracking_more_slug' => 'roadbull',
			),
			array(
				'name'               => 'Ukraine EMS',
				'slug'               => 'ukraine-ems',
				'url'                => 'https://dpsz.ua/',
				'country'            => 'UA',
				'active'             => '',
				'tracking_more_slug' => 'ukraine-ems',
			),
			array(
				'name'               => 'Ukrposhta',
				'slug'               => 'ukrposhta',
				'url'                => 'https://ukrposhta.ua/en/vidslidkuvati-forma-poshuku',
				'country'            => 'UA',
				'active'             => '',
				'tracking_more_slug' => '',
			),
			array(
				'name'               => 'GSO',
				'slug'               => 'gso',
				'url'                => 'https://www.gso.com/tracking',
				'country'            => 'US',
				'active'             => '',
				'tracking_more_slug' => '',
			),
			array(
				'name'               => 'DHL Parcel US',
				'slug'               => 'dhl-parcel-us',
				'url'                => 'https://www.logistics.dhl/us-en/home/tracking/tracking-ecommerce.html?tracking-id={tracking_number}',
				'country'            => 'US',
				'active'             => '',
				'tracking_more_slug' => '',
			),
			array(
				'name'               => 'VietNam Post',
				'slug'               => 'vietnam-post',
				'url'                => 'https://www.vnpost.vn/en-us/dinh-vi/buu-pham?key={tracking_number}',
				'country'            => 'VN',
				'active'             => '',
				'tracking_more_slug' => 'vietnam-post',
			),
			array(
				'name'               => '4PX',
				'slug'               => '4px',
				'url'                => 'http://track.4px.com/query/{tracking_number}',
				'country'            => 'Global',
				'active'             => '',
				'tracking_more_slug' => '4px',
			),
			array(
				'name'               => 'YANWEN',
				'slug'               => 'yanwen',
				'url'                => 'https://track.yw56.com.cn/',
				'country'            => 'Global',
				'active'             => '',
				'tracking_more_slug' => 'yanwen',
			),
			array(
				'name'               => 'DHL ECommerce',
				'slug'               => 'dhlglobalmail',
				'url'                => 'http://webtrack.dhlglobalmail.com/?trackingnumber={tracking_number}',
				'country'            => 'DE',
				'active'             => '',
				'tracking_more_slug' => 'dhlglobalmail',
			),
		);
		if ( $filter ) {
			return apply_filters( 'woo_orders_tracking_defined_shipping_carriers', $carriers );
		} else {
			return $carriers;
		}
	}

	public static function get_delivered_icons() {
		return array(
			'1'  => 'vi_wot_shipment_icons-verified',
			'2'  => 'vi_wot_shipment_icons-tick',
			'3'  => 'vi_wot_shipment_icons-tick-inside-circle',
			'4'  => 'vi_wot_shipment_icons-circle-with-check-symbol',
			'5'  => 'vi_wot_shipment_icons-check-mark',
			'6'  => 'vi_wot_shipment_icons-check',
			'7'  => 'vi_wot_shipment_icons-checkmark',
			'8'  => 'vi_wot_shipment_icons-verified-1',
			'9'  => 'vi_wot_shipment_icons-verification-circular-symbol',
			'10' => 'vi_wot_shipment_icons-checked',
			'11' => 'vi_wot_shipment_icons-checked-1',
			'12' => 'vi_wot_shipment_icons-check-circular-button',
			'13' => 'vi_wot_shipment_icons-check-mark-1',
			'14' => 'vi_wot_shipment_icons-accept-symbol',
			'15' => 'vi_wot_shipment_icons-check-circle',
			'16' => 'vi_wot_shipment_icons-button',
			'17' => 'vi_wot_shipment_icons-time',
			'18' => 'vi_wot_shipment_icons-check-box',
			'19' => 'vi_wot_shipment_icons-tick-1',
			'20' => 'vi_wot_shipment_icons-check-1',
			'21' => 'vi_wot_shipment_icons-check-mark-in-a-circle',
		);
	}

	public static function get_pickup_icons() {
		return array(
			'1'  => 'vi_wot_shipment_icons-delivery-package-opened',
			'2'  => 'vi_wot_shipment_icons-box',
			'3'  => 'vi_wot_shipment_icons-boxes',
			'4'  => 'vi_wot_shipment_icons-trolley',
			'5'  => 'vi_wot_shipment_icons-trolley-1',
			'6'  => 'vi_wot_shipment_icons-trolley-2',
			'7'  => 'vi_wot_shipment_icons-box-1',
			'8'  => 'vi_wot_shipment_icons-box-2',
			'9'  => 'vi_wot_shipment_icons-box-3',
			'10' => 'vi_wot_shipment_icons-cart',
			'11' => 'vi_wot_shipment_icons-box-4',
			'12' => 'vi_wot_shipment_icons-box-5',
			'13' => 'vi_wot_shipment_icons-trolley-3',
			'14' => 'vi_wot_shipment_icons-box-6',
			'15' => 'vi_wot_shipment_icons-trolley-4',
			'16' => 'vi_wot_shipment_icons-cart-1',
			'17' => 'vi_wot_shipment_icons-box-7',
			'18' => 'vi_wot_shipment_icons-trolley-5',
			'19' => 'vi_wot_shipment_icons-box-8',
			'20' => 'vi_wot_shipment_icons-cargo-1',
		);
	}

	public static function get_transit_icons() {
		return array(
			'1'  => 'vi_wot_shipment_icons-fast-delivery',
			'2'  => 'vi_wot_shipment_icons-fast-delivery-1',
			'3'  => 'vi_wot_shipment_icons-fast-delivery-2',
			'4'  => 'vi_wot_shipment_icons-fast-delivery-3',
			'5'  => 'vi_wot_shipment_icons-truck',
			'6'  => 'vi_wot_shipment_icons-delivery',
			'7'  => 'vi_wot_shipment_icons-tracking',
			'8'  => 'vi_wot_shipment_icons-shipped',
			'9'  => 'vi_wot_shipment_icons-delivery-truck',
			'10' => 'vi_wot_shipment_icons-delivery-truck-1',
			'11' => 'vi_wot_shipment_icons-delivery-truck-2',
			'12' => 'vi_wot_shipment_icons-delivery-1',
			'13' => 'vi_wot_shipment_icons-truck-2',
			'14' => 'vi_wot_shipment_icons-lorry',
			'15' => 'vi_wot_shipment_icons-delivery-2',
			'16' => 'vi_wot_shipment_icons-truck-3',
			'17' => 'vi_wot_shipment_icons-truck-4',
			'18' => 'vi_wot_shipment_icons-van',
			'19' => 'vi_wot_shipment_icons-truck-1',
			'20' => 'vi_wot_shipment_icons-shipping',
			'21' => 'vi_wot_shipment_icons-delivery-3',
			'22' => 'vi_wot_shipment_icons-delivery-4',
			'23' => 'vi_wot_shipment_icons-cargo',
			'24' => 'vi_wot_shipment_icons-shipping-1',
		);
	}

	/**Cainiao get country info by cp code
	 *
	 * @param $cpCode
	 *
	 * @return array
	 */
	public static function get_country_by_cp_code( $cpCode ) {
		$cp_list = self::get_cp_list();
		$found   = array();
		foreach ( $cp_list as $cp ) {
			if ( $cp['cpCode'] === $cpCode ) {
				$found = $cp;
				break;
			}
		}

		return $found;
	}

	/**Cainiao cp list
	 *
	 * @param string $name
	 * @param string $col
	 *
	 * @return array|mixed|string
	 */
	public static function get_cp_list( $name = '', $col = 'cpName' ) {
		$cp_list = '[{"country":"Afghanistan","cpCode":"POSTAF","cpName":"Afghan Post"},{"country":"Albania","cpCode":"POSTAL","cpName":"Albanian Post"},{"country":"American Samoa","cpCode":"POSTAS","cpName":"POSTAS"},{"country":"Andorra","cpCode":"POSTAD","cpName":"La Poste"},{"country":"Argentina","cpCode":"POSTAR","cpName":"Correo Argentina"},{"country":"Armenia","cpCode":"POSTAM","cpName":"POSTAM Post"},{"country":"Australia","cpCode":"POSTAU","cpName":"Australia Post"},{"country":"Austria","cpCode":"POSTAT","cpName":"Austrian Post"},{"country":"Azerbaijan","cpCode":"POSTAZ","cpName":"Azer Express Post"},{"country":"Bahrain","cpCode":"POSTBH","cpName":"Bahrain Post (EMS)"},{"country":"Bailiwick of Guernsey","cpCode":"POSTGG","cpName":"Guernsey Post"},{"country":"Barbados","cpCode":"POSTBB","cpName":"Barbados Post"},{"country":"Belarus","cpCode":"POSTBY","cpName":"Belpost"},{"country":"Belgium","cpCode":"BLSYZ","cpName":"Bpost"},{"country":"Belgium","cpCode":"BLS2YZ","cpName":"Bpost"},{"country":"Belgium","cpCode":"BLS2YZ","cpName":"Belgium Post"},{"country":"Belize","cpCode":"POSTBZ","cpName":"Belize Post"},{"country":"Benin","cpCode":"POSTBJ","cpName":"Benin Post"},{"country":"Bermuda","cpCode":"POSTBM","cpName":"Bermuda Post"},{"country":"Bhutan","cpCode":"POSTBT","cpName":"Bhutan Post"},{"country":"Bolivia","cpCode":"POSTBO","cpName":"Correos Bolivia"},{"country":"Bosnia and Herzegovina","cpCode":"POSTBA","cpName":"POSTBA Post"},{"country":"Botswana","cpCode":"POSTBW","cpName":"Botswana Post"},{"country":"Brazil","cpCode":"POSTBR_EN","cpName":"Correios Brazil"},{"country":"Brazil","cpCode":"POSTBR_EN","cpName":"Brazil Correios"},{"country":"Brunei Darussalam","cpCode":"POSTBN","cpName":"Brunei Post"},{"country":"Bulgaria","cpCode":"POSTBG","cpName":"Bulgarian Post"},{"country":"Burkinafaso","cpCode":"POSTBF","cpName":"Sonapost"},{"country":"Burundi","cpCode":"POSTBI","cpName":"Burundi Post"},{"country":"Cameroon","cpCode":"POSTCM","cpName":"Campost"},{"country":"Canada","cpCode":"POSTCA","cpName":"Canada Post"},{"country":"Cape Verde","cpCode":"POSTCV","cpName":"Correios Cabo Verde"},{"country":"Chile","cpCode":"POSTCL","cpName":"Correos Chile"},{"country":"China","cpCode":"POSTCN","cpName":"China Post"},{"country":"China","cpCode":"POSTEYB","cpName":"易邮宝"},{"country":"China","cpCode":"RUSTONZR","cpName":"Russia Post"},{"country":"China","cpCode":"ETONGSHOU","cpName":"ETONGSHOU"},{"country":"China","cpCode":"RUSTONTEA","cpName":"RUSTONTEA"},{"country":"China","cpCode":"CROSSBORDER4PX","cpName":"4PX"},{"country":"China","cpCode":"CBYANWEN","cpName":"CBYANWEN"},{"country":"China","cpCode":"CBYANWEN","cpName":"YANWEN"},{"country":"China","cpCode":"CBCKY","cpName":"CKY"},{"country":"China","cpCode":"CBWANOUGJ","cpName":"WANOUGJ"},{"country":"China","cpCode":"SANTAI","cpName":"SANTAI"},{"country":"China","cpCode":"CBFLYT","cpName":"FLYT"},{"country":"China","cpCode":"CBCNE","cpName":""},{"country":"China","cpCode":"CBCDEK","cpName":"CDEK"},{"country":"China","cpCode":"CBYUNTU","cpName":"YUNTU"},{"country":"China","cpCode":"CBYUNTU","cpName":"Yun Express"},{"country":"China","cpCode":"CBIML","cpName":""},{"country":"China","cpCode":"CBMIUSON","cpName":""},{"country":"China","cpCode":"CBUBI","cpName":""},{"country":"China","cpCode":"CBJNET","cpName":""},{"country":"China","cpCode":"CBASENDIA","cpName":""},{"country":"China","cpCode":"CBEQUICK","cpName":"Equick"},{"country":"China","cpCode":"POSTTR_CRAW","cpName":""},{"country":"China","cpCode":"CBYLBDT","cpName":""},{"country":"China","cpCode":"CBESHUNWL","cpName":""},{"country":"Colombia","cpCode":"POSTCO","cpName":"4-72"},{"country":"Costa Rica","cpCode":"POSTCR","cpName":"Correos Costa Rica"},{"country":"Croatia","cpCode":"POSTHR","cpName":"Croatian Post"},{"country":"Cyprus","cpCode":"POSTCY","cpName":"POSTCY Post"},{"country":"Cyprus","cpCode":"POSTCY","cpName":"Cyprus Post"},{"country":"Czech","cpCode":"JKYZ","cpName":"Czech Post"},{"country":"Denmark","cpCode":"DMYZ","cpName":"PostNord Danmark"},{"country":"Djibouti","cpCode":"POSTDJ","cpName":"La Poste De Djibouti"},{"country":"Dominica","cpCode":"POSTDM","cpName":"Dominica Post"},{"country":"Dominican Republic","cpCode":"POSTDO","cpName":"Inposdom"},{"country":"Ecuador","cpCode":"POSTEC","cpName":"Correos Ecuador"},{"country":"Egypt","cpCode":"POSTEG","cpName":"Egypt Post"},{"country":"El Salvador","cpCode":"POSTSV","cpName":"Correo El Salvador"},{"country":"Estonia","cpCode":"POSTEE","cpName":"Omniva"},{"country":"Estonia","cpCode":"POSTEE2","cpName":"Omniva (Advanced)"},{"country":"Ethiopia","cpCode":"POSTET","cpName":"Ethiopian Post"},{"country":"Faroe Islands","cpCode":"POSTFO","cpName":"Faroe Post"},{"country":"Fiji","cpCode":"POSTFJ","cpName":"Fiji Post"},{"country":"Finland","cpCode":"POSTFI","cpName":"Itella Posti"},{"country":"France","cpCode":"FGYZ","cpName":"La Poste"},{"country":"Georgia","cpCode":"POSTGE","cpName":"Georgian Post"},{"country":"Ghana","cpCode":"POSTGH","cpName":"Ghana Post"},{"country":"Gibraltar","cpCode":"POSTGI","cpName":"Gibraltar Post"},{"country":"Greece","cpCode":"POSTGR","cpName":"ELTA"},{"country":"Greenland","cpCode":"POSTGL","cpName":"Greenland Post"},{"country":"Guatemala","cpCode":"POSTGT","cpName":"Correos Guatemala"},{"country":"Honduras","cpCode":"POSTHN","cpName":"Correos de Honduras"},{"country":"Hong Kong","cpCode":"POSTHK","cpName":"HongKong Post"},{"country":"Hong Kong","cpCode":"POSTHK","cpName":"Hong Kong Post"},{"country":"Hong Kong","cpCode":"EXSHDQ","cpName":"EXSHDQ"},{"country":"HunGary","cpCode":"POSTHU","cpName":"Magyar Post"},{"country":"Iceland","cpCode":"POSTIS","cpName":"Iceland Post"},{"country":"India","cpCode":"POSTIN","cpName":"India Post"},{"country":"Indonesia","cpCode":"POSTID","cpName":"India Post"},{"country":"Iran","cpCode":"POSTIR","cpName":"Iran Post"},{"country":"Ireland","cpCode":"POSTIE","cpName":"An Post"},{"country":"Israel","cpCode":"POSTIL","cpName":"Israel Post"},{"country":"Italy","cpCode":"POSTIT","cpName":"Poste Italiane"},{"country":"Jamaica","cpCode":"POSTJM","cpName":"Jamaica Post"},{"country":"Japan","cpCode":"RBYZEMS_EN","cpName":"Japan Post"},{"country":"Jordan","cpCode":"POSTJO","cpName":"Jordan Post"},{"country":"Kampuchea","cpCode":"POSTKH","cpName":"Cambodia Post"},{"country":"Kazakhstan","cpCode":"KAZPOST","cpName":"Kaz Post"},{"country":"Kenya","cpCode":"POSTKE","cpName":"Kenya Post"},{"country":"Kuwait","cpCode":"POSTKW","cpName":"Kuwait Post"},{"country":"Kyrgyzstan","cpCode":"POSTKG","cpName":"Kyrgyz Post"},{"country":"Laos","cpCode":"POSTLA","cpName":"Enterprise des Poste Lao (VTE)"},{"country":"Latvia","cpCode":"POSTLV","cpName":"Latvia Post"},{"country":"Lebanon","cpCode":"POSTLB","cpName":"Liban Post"},{"country":"Lesotho","cpCode":"POSTLS","cpName":"Lesotho Post"},{"country":"Lithuania","cpCode":"POSTLT","cpName":"Lithuania Post"},{"country":"Luxembourg","cpCode":"POSTLU","cpName":"Luxembourg Post"},{"country":"Macao","cpCode":"POSTMO","cpName":"Macau Post"},{"country":"Macedonia","cpCode":"POSTMK","cpName":"Macedonia Post"},{"country":"Malaysia","cpCode":"POSTMY","cpName":"Pos Malaysia"},{"country":"Malaysia","cpCode":"POSTMY","cpName":"Malaysia Post"},{"country":"Malaysia","cpCode":"CROSSBORDERSHUNYOU","cpName":"SHUNYOU"},{"country":"Maldives","cpCode":"POSTMV","cpName":"Maldives Post"},{"country":"Malta","cpCode":"POSTMT","cpName":"Malta Post"},{"country":"Martinique","cpCode":"POSTMQ","cpName":"La Poste"},{"country":"Mauritius","cpCode":"POSTMU","cpName":"Mauritius Post"},{"country":"Mexico","cpCode":"POSTMX","cpName":"Mexico Post"},{"country":"Mongolia","cpCode":"POSTMN","cpName":"Mongol Post"},{"country":"Montenegro","cpCode":"POSTMNE","cpName":"Montenegro Post"},{"country":"Morocco","cpCode":"POSTMA","cpName":"Morocco Post"},{"country":"Myanmar","cpCode":"POSTMM","cpName":"Myanma Post"},{"country":"Namibia","cpCode":"POSTNA","cpName":"Namibia Post"},{"country":"Netherlands","cpCode":"POSTHL","cpName":"PostNL International Mail"},{"country":"Netherlands","cpCode":"POSTHL","cpName":"Netherlands Post( PostNL )"},{"country":"Netherlands Antilles","cpCode":"POSTAN","cpName":"Antilles Post"},{"country":"New Caledonia","cpCode":"POSTNC","cpName":"New Post"},{"country":"New Zealand","cpCode":"XXLYZ","cpName":"New Zealand Post"},{"country":"Nicaragua","cpCode":"POSTNI","cpName":"Nicaragua Post"},{"country":"Nigeria","cpCode":"NIPOST","cpName":"Nigerian Post"},{"country":"Norway","cpCode":"POSTNO","cpName":"Norway Post"},{"country":"Oman","cpCode":"POSTOM","cpName":"Oman Post"},{"country":"Pakistan","cpCode":"POSTPK","cpName":"Pakistan Post"},{"country":"Panama","cpCode":"POSTPA","cpName":"Correos Panama"},{"country":"Papua New Guinea","cpCode":"POSTPG","cpName":"PNG Post"},{"country":"Paraguay","cpCode":"POSTPY","cpName":"Correo Paraguayo"},{"country":"Peru","cpCode":"SERPOST","cpName":"Serpost"},{"country":"Philippines","cpCode":"POSTPH","cpName":"Philippine Post"},{"country":"Poland","cpCode":"BLYZ","cpName":"Poland Post"},{"country":"Portugal","cpCode":"POSTPT_EN","cpName":"CTT"},{"country":"Portugal","cpCode":"POSTPT_EN","cpName":"Portugal Post - CTT"},{"country":"Qatar","cpCode":"POSTQA","cpName":"Q-Post"},{"country":"Republic of Moldova","cpCode":"POSTMD","cpName":"Moldova Post"},{"country":"Romania","cpCode":"POSTRO","cpName":"Romania Post"},{"country":"Russian Federation","cpCode":"POSTRU","cpName":"Russia Post"},{"country":"Russian Federation","cpCode":"POSTRU2","cpName":"Russia Post"},{"country":"Russian Federation","cpCode":"PICKPOINT","cpName":"PICKPOINT"},{"country":"Rwanda","cpCode":"POSTRW","cpName":"Rwanda Post"},{"country":"Saint Lucia","cpCode":"POSTLC","cpName":"Saint Lucia Post"},{"country":"Samoa","cpCode":"POSTWS","cpName":"Samoa Post"},{"country":"San Marino","cpCode":"POSTSM","cpName":"San Post"},{"country":"Saudi Arabia","cpCode":"POSTSA","cpName":"Saudi Post"},{"country":"Senegal","cpCode":"POSTSN","cpName":"La Poste De Senegal"},{"country":"Serbia","cpCode":"POSTSRB","cpName":"Serbia Post"},{"country":"Seychelles","cpCode":"POSTSC","cpName":"Seychelles Post"},{"country":"Singapore","cpCode":"SPEEDPOST","cpName":"Speedpost"},{"country":"Singapore","cpCode":"POSTSG","cpName":"Singapore Post"},{"country":"Slovakia","cpCode":"POSTSK","cpName":"Slovakia Post"},{"country":"Slovenia","cpCode":"POSTSI","cpName":"Slovenia Post"},{"country":"Solomon Islands","cpCode":"POSTSB","cpName":"Solomon Post"},{"country":"South Africa","cpCode":"POSTZA","cpName":"South Africa Post"},{"country":"South korea","cpCode":"EPOST","cpName":"Korea Post"},{"country":"Spain","cpCode":"POSTES","cpName":"Correos Spain"},{"country":"Sudan","cpCode":"POSTSD","cpName":"Sudan Post"},{"country":"Sweden","cpCode":"POSTSELINK","cpName":"Direct Link"},{"country":"Sweden","cpCode":"POSTSE_EN","cpName":"PostNord"},{"country":"Switzerland","cpCode":"POSTCH","cpName":"Swiss Post"},{"country":"Taiwan","cpCode":"POSTTW","cpName":"Chunghwa Post (Registered)"},{"country":"Thailand","cpCode":"POSTTH","cpName":"Thailand Post"},{"country":"Togo","cpCode":"POSTTG","cpName":"Togo Post"},{"country":"Tonga","cpCode":"POSTTO","cpName":"Tonga Post"},{"country":"Tunisia","cpCode":"POSTTN","cpName":"La Poste De Tunisia"},{"country":"Turkey","cpCode":"POSTTR","cpName":"PTT"},{"country":"Uganda","cpCode":"POSTUG","cpName":"Uganda Post"},{"country":"Ukraine","cpCode":"POSTUA","cpName":"Ukrposhta"},{"country":"United Arab Emirates","cpCode":"POSTAE","cpName":"Emirates Post"},{"country":"United Kingdom","cpCode":"ROYALMAIL","cpName":"Royal Mail"},{"country":"United Kingdom","cpCode":"PARCELFORCE","cpName":"Parcelforce"},{"country":"United Kingdom","cpCode":"PARCELFORCE","cpName":"Parcelforce UK"},{"country":"United Republic of Tanzania","cpCode":"POSTTZ","cpName":"Tanzania Post"},{"country":"United States of America","cpCode":"USPS","cpName":"USPS"},{"country":"United States of America","cpCode":"UPS2","cpName":"UPS"},{"country":"United States of America","cpCode":"FEDEXPAC","cpName":"FEDEX"},{"country":"Uruguay","cpCode":"POSTUY","cpName":"Correo Uruguayo"},{"country":"Uzbekistan","cpCode":"POSTUZ","cpName":"Brunei Post"},{"country":"Vanuatu","cpCode":"POSTVU","cpName":"Vanuatu Post"},{"country":"Venezuela","cpCode":"POSTVE","cpName":"Ipostel"},{"country":"Vietnam","cpCode":"POSTVN","cpName":"VietNam Post"},{"country":"Zambia","cpCode":"POSTZM","cpName":"Zambia Post"},{"country":"Zimbabwe","cpCode":"POSTZW","cpName":"Zimbabwe Post"}]';
		$cp_list = vi_wot_json_decode( $cp_list );
		if ( $name ) {
			$return = '';
			$search = self::array_search_case_insensitive( $name, array_column( $cp_list, $col ) );
			if ( $search !== false ) {
				$return = $cp_list[ $search ]['cpCode'];
			}

			return $return;
		} else {
			return $cp_list;
		}
	}

	public static function status_text() {
		return array(
			'pending'   => esc_html__( 'Pending', 'woocommerce-orders-tracking' ),
			'transit'   => esc_html__( 'In Transit', 'woocommerce-orders-tracking' ),
			'pickup'    => esc_html__( 'Pickup', 'woocommerce-orders-tracking' ),
			'delivered' => esc_html__( 'Delivered', 'woocommerce-orders-tracking' ),
			'alert'     => esc_html__( 'Alert', 'woocommerce-orders-tracking' ),
		);
	}

	public static function get_status_text( $status ) {
		$statuses = self::status_text();

		return isset( $statuses[ $status ] ) ? $statuses[ $status ] : '';
	}

	public static function convert_status( $status ) {
		if ( ! $status ) {
			return $status;
		} else {
			$status   = strtolower( $status );
			$statuses = array(
				/*cainiao*/
				'pending'                              => 'pending',
				'pickedup'                             => 'pickup',
				'shipping'                             => 'transit',
				'depart_from_original_country'         => 'transit',
				'arrived_at_dest_country'              => 'transit',
				'signin'                               => 'delivered',
				'wait4pickup'                          => 'pickup',
				'wait4signin'                          => 'pickup',
				'order_not_exists'                     => 'alert',
				'signin_exc'                           => 'alert',
				'return'                               => 'alert',
				'depart_from_original_country_exc'     => 'alert',
				'arrived_at_dest_country_exc'          => 'alert',
				'not_lazada_order'                     => 'alert',
				// OWS LIGHT map
				'ows_whcaccept'                        => 'transit',
				'ows_whcoutbound'                      => 'transit',
				'ows_cpaccept'                         => 'transit',
				'ows_delivering'                       => 'transit',
				'ows_wait4signin'                      => 'transit',
				'ows_deliver_fail'                     => 'alert',
				'ows_signin'                           => 'delivered',
				// LTL LIGHT map
				'ltl_consign'                          => 'pickup',
				'ltl_shipping'                         => 'transit',
				'ltl_delivering'                       => 'transit',
				'ltl_wait4signin'                      => 'transit',
				'ltl_deliver_fail'                     => 'alert',
				'ltl_signin'                           => 'delivered',
				// CWS LIGHT map
				'cws_whcaccept'                        => 'pickup',
				'cws_outbound'                         => 'pickup',
				'cws_depart_from_original_country'     => 'transit',
				'cws_arrived_at_dest_country'          => 'transit',
				'cws_depart_from_original_country_exc' => 'alert',
				'cws_arrived_at_dest_country_exc'      => 'alert',
				'cws_wait4signin'                      => 'transit',
				'cws_signin_exc'                       => 'alert',
				'cws_signin'                           => 'delivered',
				// RETURN map
				'returned_stage_start'                 => 'alert',
				'returned_stage_middle'                => 'alert',
				'returned_stage_end'                   => 'alert',
				// DESTORY map
				'rdestoryed_stage_start'               => 'alert',
				'rdestoryed_stage_middle'              => 'alert',
				'rdestoryed_stage_end'                 => 'alert',
			);
			$statuses = array_merge( $statuses, VI_WOOCOMMERCE_ORDERS_TRACKING_TRACKINGMORE::map_statuses(), VI_WOOCOMMERCE_ORDERS_TRACKING_EASYPOST::map_statuses(), VI_WOOCOMMERCE_ORDERS_TRACKING_AFTERSHIP::map_statuses() );

			return isset( $statuses[ $status ] ) ? $statuses[ $status ] : $status;
		}
	}

	public static function get_status_map( $status = '' ) {
		$status_map = array(
			array(
				'PICKEDUP'                     => esc_html__( 'Picked', 'woocommerce-orders-tracking' ),
				'SHIPPING'                     => esc_html__( 'In transit', 'woocommerce-orders-tracking' ),
				'DEPART_FROM_ORIGINAL_COUNTRY' => esc_html__( 'Origin leaving', 'woocommerce-orders-tracking' ),
				'ARRIVED_AT_DEST_COUNTRY'      => esc_html__( 'Destination arrived', 'woocommerce-orders-tracking' ),
				'SIGNIN'                       => esc_html__( 'Delivered', 'woocommerce-orders-tracking' ),
			),

			array(
				'WAIT4PICKUP' => esc_html__( 'Packed for picking', 'woocommerce-orders-tracking' ),
				'WAIT4SIGNIN' => esc_html__( 'Waiting for picking', 'woocommerce-orders-tracking' ),
			),
			array(
				'ORDER_NOT_EXISTS'                 => esc_html__( 'Not found', 'woocommerce-orders-tracking' ),
				'SIGNIN_EXC'                       => esc_html__( 'Unsuccessful delivery attempt', 'woocommerce-orders-tracking' ),
				'RETURN'                           => esc_html__( 'Parcel returned', 'woocommerce-orders-tracking' ),
				'DEPART_FROM_ORIGINAL_COUNTRY_EXC' => esc_html__( 'Unsuccessful air delivery', 'woocommerce-orders-tracking' ),
				'ARRIVED_AT_DEST_COUNTRY_EXC'      => esc_html__( 'Unsuccessful clearence', 'woocommerce-orders-tracking' ),
				'NOT_LAZADA_ORDER'                 => esc_html__( 'Not found', 'woocommerce-orders-tracking' ),
			),
			array(
				// OWS LIGHT map
				'OWS_WHCACCEPT'                        => esc_html__( 'Order received by warehouse', 'woocommerce-orders-tracking' ),
				'OWS_WHCOUTBOUND'                      => esc_html__( 'Left warehouse', 'woocommerce-orders-tracking' ),
				'OWS_CPACCEPT'                         => esc_html__( 'Shipment dispatched', 'woocommerce-orders-tracking' ),
				'OWS_DELIVERING'                       => esc_html__( 'In delivery', 'woocommerce-orders-tracking' ),
				'OWS_WAIT4SIGNIN'                      => esc_html__( 'Waiting self-take', 'woocommerce-orders-tracking' ),
				'OWS_DELIVER_FAIL'                     => esc_html__( 'Delivery failed', 'woocommerce-orders-tracking' ),
				'OWS_SIGNIN'                           => esc_html__( 'Delivered', 'woocommerce-orders-tracking' ),
				// LTL LIGHT map
				'LTL_CONSIGN'                          => esc_html__( 'Seller shipped', 'woocommerce-orders-tracking' ),
				'LTL_SHIPPING'                         => esc_html__( 'In transit', 'woocommerce-orders-tracking' ),
				'LTL_DELIVERING'                       => esc_html__( 'In delivery', 'woocommerce-orders-tracking' ),
				'LTL_WAIT4SIGNIN'                      => esc_html__( 'Waiting self-take', 'woocommerce-orders-tracking' ),
				'LTL_DELIVER_FAIL'                     => esc_html__( 'Delivery failed', 'woocommerce-orders-tracking' ),
				'LTL_SIGNIN'                           => esc_html__( 'Delivered', 'woocommerce-orders-tracking' ),
				// CWS LIGHT map
				'CWS_WHCACCEPT'                        => esc_html__( 'Order received by warehouse', 'woocommerce-orders-tracking' ),
				'CWS_OUTBOUND'                         => esc_html__( 'Departed warehouse', 'woocommerce-orders-tracking' ),
				'CWS_DEPART_FROM_ORIGINAL_COUNTRY'     => esc_html__( 'Origin leaving', 'woocommerce-orders-tracking' ),
				'CWS_ARRIVED_AT_DEST_COUNTRY'          => esc_html__( 'Destination arrived', 'woocommerce-orders-tracking' ),
				'CWS_DEPART_FROM_ORIGINAL_COUNTRY_EXC' => esc_html__( 'Unsuccessful air delivery', 'woocommerce-orders-tracking' ),
				'CWS_ARRIVED_AT_DEST_COUNTRY_EXC'      => esc_html__( 'Unsuccessful clearence', 'woocommerce-orders-tracking' ),
				'CWS_WAIT4SIGNIN'                      => esc_html__( 'Waiting for  picking', 'woocommerce-orders-tracking' ),
				'CWS_SIGNIN_EXC'                       => esc_html__( 'Unsuccessful delivery attempt', 'woocommerce-orders-tracking' ),
				'CWS_SIGNIN'                           => esc_html__( 'Delivered', 'woocommerce-orders-tracking' ),
				// RETURN map
				'RETURNED_STAGE_START'                 => esc_html__( 'Return', 'woocommerce-orders-tracking' ),
				'RETURNED_STAGE_MIDDLE'                => esc_html__( 'Return', 'woocommerce-orders-tracking' ),
				'RETURNED_STAGE_END'                   => esc_html__( 'Return', 'woocommerce-orders-tracking' ),
				// DESTORY map
				'RDESTORYED_STAGE_START'               => esc_html__( 'Parcel is destroyed', 'woocommerce-orders-tracking' ),
				'RDESTORYED_STAGE_MIDDLE'              => esc_html__( 'Parcel is destroyed', 'woocommerce-orders-tracking' ),
				'RDESTORYED_STAGE_END'                 => esc_html__( 'Parcel is destroyed', 'woocommerce-orders-tracking' ),
			),
		);
		if ( $status ) {
			return isset( $status_map[ $status ] ) ? $status_map[ $status ] : '';
		} else {
			return $status_map;
		}
	}

	public static function wp_remote_post( $url, $args = array() ) {
		$return         = array(
			'status' => '',
			'data'   => '',
			'code'   => '',
		);
		$args           = wp_parse_args( $args, array(
				'user-agent' => 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36',
				'timeout'    => 1000,
			)
		);
		$request        = wp_remote_post( $url, $args );
		$return['code'] = wp_remote_retrieve_response_code( $request );
		if ( ! is_wp_error( $request ) ) {
			$return['status'] = 'success';
			$return['data']   = $request['body'];
		} else {
			$return['status'] = 'error';
			$return['data']   = $request->get_error_message();
		}

		return $return;
	}

	public static function wp_remote_get( $url, $args = array() ) {
		$return         = array(
			'status' => '',
			'data'   => '',
			'code'   => '',
		);
		$args           = wp_parse_args( $args, array(
				'user-agent' => 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36',
				'timeout'    => 1000,
			)
		);
		$request        = wp_remote_get( $url, $args );
		$return['code'] = wp_remote_retrieve_response_code( $request );
		if ( ! is_wp_error( $request ) ) {
			$return['status'] = 'success';
			$return['data']   = $request['body'];
		} else {
			$return['status'] = 'error';
			$return['data']   = $request->get_error_message();
		}

		return $return;
	}

	/**
	 * @param string $tracking_code
	 * @param string $order_id
	 * @param string $email
	 * @param string $carrier_slug
	 * @param bool $unique
	 *
	 * @return array
	 */
	public static function search_order_item_by_tracking_number( $tracking_code = '', $order_id = '', $email = '', $carrier_slug = '', $unique = true ) {
		global $wpdb;
		$args  = array();
		$where = array();
		if ( $tracking_code ) {
			$where[] = "vi_wot_woocommerce_order_itemmeta.meta_key IN ('_vi_wot_order_item_tracking_data','_vi_wot_order_item_tracking_data_by_quantity')";
			$where[] = "vi_wot_woocommerce_order_itemmeta.meta_value like %s";
			$args[]  = '%' . $wpdb->esc_like( $tracking_code ) . '%';
		} else {
			$where[] = "vi_wot_woocommerce_order_itemmeta.meta_key IN ('_vi_wot_order_item_tracking_data','_vi_wot_order_item_tracking_data_by_quantity')";
			$where[] = "vi_wot_woocommerce_order_itemmeta.meta_value != ''";
		}
		if ( $order_id ) {
			$where[] = "vi_wot_woocommerce_order_items.order_id=%s";
			$args[]  = $order_id;
		}
		if ( $email ) {
			$query   = "SELECT vi_wot_woocommerce_order_items.*,vi_wot_woocommerce_order_itemmeta.* FROM {$wpdb->prefix}woocommerce_order_items as vi_wot_woocommerce_order_items JOIN {$wpdb->prefix}woocommerce_order_itemmeta as vi_wot_woocommerce_order_itemmeta on vi_wot_woocommerce_order_items.order_item_id=vi_wot_woocommerce_order_itemmeta.order_item_id JOIN {$wpdb->prefix}postmeta as vi_wot_postmeta on vi_wot_woocommerce_order_items.order_id=vi_wot_postmeta.post_id";
			$where[] = "vi_wot_postmeta.meta_key='_billing_email'";
			$where[] = "vi_wot_postmeta.meta_value=%s";
			$args[]  = $email;
		} else {
			$query = "SELECT vi_wot_woocommerce_order_items.*,vi_wot_woocommerce_order_itemmeta.* FROM {$wpdb->prefix}woocommerce_order_items as vi_wot_woocommerce_order_items JOIN {$wpdb->prefix}woocommerce_order_itemmeta as vi_wot_woocommerce_order_itemmeta on vi_wot_woocommerce_order_items.order_item_id=vi_wot_woocommerce_order_itemmeta.order_item_id";
		}
		if ( count( $where ) ) {
			$query .= ' WHERE ' . implode( ' AND ', $where );
		}
		if ( count( $args ) ) {
			$query = $wpdb->prepare( $query, $args );
		}
		$results = $wpdb->get_results( $query, ARRAY_A );
		$return  = array();
//		print_r($query);
//		print_r($results);
		if ( count( $results ) ) {
			if ( $unique ) {
				$found_trackings = array();
				if ( $tracking_code ) {
					if ( $carrier_slug ) {
						foreach ( $results as $result ) {
							if ( $result['meta_value'] ) {
								$item_tracking_data = vi_wot_json_decode( $result['meta_value'] );
								if ( $result['meta_key'] === '_vi_wot_order_item_tracking_data' ) {
									$current_tracking_data = array_pop( $item_tracking_data );
									$found_tracking        = "{$current_tracking_data['tracking_number']}|{$current_tracking_data['carrier_slug']}";
									if ( $current_tracking_data['tracking_number'] == $tracking_code && $current_tracking_data['carrier_slug'] === $carrier_slug && ! in_array( $found_tracking, $found_trackings ) ) {
										$found_trackings[]                      = $found_tracking;
										$result['tracking_number']              = $current_tracking_data['tracking_number'];
										$result['carrier_slug']                 = $current_tracking_data['carrier_slug'];
										$result['tracking_number_carrier_pair'] = array(
											'tracking_number' => $current_tracking_data['tracking_number'],
											'carrier_slug'    => $current_tracking_data['carrier_slug'],
										);
										$return[]                               = $result;
									}
								} else {
									foreach ( $item_tracking_data as $current_tracking_data ) {
										$found_tracking = "{$current_tracking_data['tracking_number']}|{$current_tracking_data['carrier_slug']}";
										if ( $current_tracking_data['tracking_number'] == $tracking_code && $current_tracking_data['carrier_slug'] === $carrier_slug && ! in_array( $found_tracking, $found_trackings ) ) {
											$found_trackings[]                      = $found_tracking;
											$result['tracking_number']              = $current_tracking_data['tracking_number'];
											$result['carrier_slug']                 = $current_tracking_data['carrier_slug'];
											$result['tracking_number_carrier_pair'] = array(
												'tracking_number' => $current_tracking_data['tracking_number'],
												'carrier_slug'    => $current_tracking_data['carrier_slug'],
											);
											$return[]                               = $result;
//											break;
										}
									}
								}
							}
						}
					} else {
						foreach ( $results as $result ) {
							if ( $result['meta_value'] ) {
								$item_tracking_data = vi_wot_json_decode( $result['meta_value'] );
								if ( $result['meta_key'] === '_vi_wot_order_item_tracking_data' ) {
									$current_tracking_data = array_pop( $item_tracking_data );
									$found_tracking        = "{$current_tracking_data['tracking_number']}|{$current_tracking_data['carrier_slug']}";
									/*test*/
									if ( $current_tracking_data['tracking_number'] == $tracking_code && $current_tracking_data['carrier_slug'] && ! in_array( $found_tracking, $found_trackings ) ) {
//									if ( $current_tracking_data['tracking_number'] == $tracking_code && ! in_array( $found_tracking, $found_trackings ) ) {
										$found_trackings[]                      = $found_tracking;
										$result['tracking_number']              = $current_tracking_data['tracking_number'];
										$result['carrier_slug']                 = $current_tracking_data['carrier_slug'];
										$result['tracking_number_carrier_pair'] = array(
											'tracking_number' => $current_tracking_data['tracking_number'],
											'carrier_slug'    => $current_tracking_data['carrier_slug'],
										);
										$return[]                               = $result;
									}
								} else {
									foreach ( $item_tracking_data as $current_tracking_data ) {
										$found_tracking = "{$current_tracking_data['tracking_number']}|{$current_tracking_data['carrier_slug']}";
										/*test*/
										if ( $current_tracking_data['tracking_number'] == $tracking_code && $current_tracking_data['carrier_slug'] && ! in_array( $found_tracking, $found_trackings ) ) {
//										if ( $current_tracking_data['tracking_number'] == $tracking_code && ! in_array( $found_tracking, $found_trackings ) ) {
											$found_trackings[]                      = $found_tracking;
											$result['tracking_number']              = $current_tracking_data['tracking_number'];
											$result['carrier_slug']                 = $current_tracking_data['carrier_slug'];
											$result['tracking_number_carrier_pair'] = array(
												'tracking_number' => $current_tracking_data['tracking_number'],
												'carrier_slug'    => $current_tracking_data['carrier_slug'],
											);
											$return[]                               = $result;
//											break;
										}
									}
								}

							}
						}
					}
				} else {
					if ( $carrier_slug ) {
						foreach ( $results as $result ) {
							if ( $result['meta_value'] ) {
								$item_tracking_data = vi_wot_json_decode( $result['meta_value'] );
								if ( $result['meta_key'] === '_vi_wot_order_item_tracking_data' ) {
									$current_tracking_data = array_pop( $item_tracking_data );
									$found_tracking        = "{$current_tracking_data['tracking_number']}|{$current_tracking_data['carrier_slug']}";
									if ( $current_tracking_data['carrier_slug'] === $carrier_slug && ! in_array( $found_tracking, $found_trackings ) ) {
										$found_trackings[]                      = $found_tracking;
										$result['tracking_number']              = $current_tracking_data['tracking_number'];
										$result['carrier_slug']                 = $current_tracking_data['carrier_slug'];
										$result['tracking_number_carrier_pair'] = array(
											'tracking_number' => $current_tracking_data['tracking_number'],
											'carrier_slug'    => $current_tracking_data['carrier_slug'],
										);
										$return[]                               = $result;
									}
								} else {
									foreach ( $item_tracking_data as $current_tracking_data ) {
										$found_tracking = "{$current_tracking_data['tracking_number']}|{$current_tracking_data['carrier_slug']}";
										if ( $current_tracking_data['carrier_slug'] === $carrier_slug && ! in_array( $found_tracking, $found_trackings ) ) {
											$found_trackings[]                      = $found_tracking;
											$result['tracking_number']              = $current_tracking_data['tracking_number'];
											$result['carrier_slug']                 = $current_tracking_data['carrier_slug'];
											$result['tracking_number_carrier_pair'] = array(
												'tracking_number' => $current_tracking_data['tracking_number'],
												'carrier_slug'    => $current_tracking_data['carrier_slug'],
											);
											$return[]                               = $result;
//											break;
										}
									}
								}

							}
						}
					} else {
						foreach ( $results as $result ) {
							if ( $result['meta_value'] ) {
								$item_tracking_data = vi_wot_json_decode( $result['meta_value'] );
								if ( $result['meta_key'] === '_vi_wot_order_item_tracking_data' ) {
									$current_tracking_data = array_pop( $item_tracking_data );
									$found_tracking        = "{$current_tracking_data['tracking_number']}|{$current_tracking_data['carrier_slug']}";
									if ( ! in_array( $found_tracking, $found_trackings ) ) {
										$found_trackings[]                      = $found_tracking;
										$result['tracking_number']              = $current_tracking_data['tracking_number'];
										$result['carrier_slug']                 = $current_tracking_data['carrier_slug'];
										$result['tracking_number_carrier_pair'] = array(
											'tracking_number' => $current_tracking_data['tracking_number'],
											'carrier_slug'    => $current_tracking_data['carrier_slug'],
										);
										$return[]                               = $result;
									}
								} else {
									foreach ( $item_tracking_data as $current_tracking_data ) {
										$found_tracking = "{$current_tracking_data['tracking_number']}|{$current_tracking_data['carrier_slug']}";
										if ( ! in_array( $found_tracking, $found_trackings ) ) {
											$found_trackings[]                      = $found_tracking;
											$result['tracking_number']              = $current_tracking_data['tracking_number'];
											$result['carrier_slug']                 = $current_tracking_data['carrier_slug'];
											$result['tracking_number_carrier_pair'] = array(
												'tracking_number' => $current_tracking_data['tracking_number'],
												'carrier_slug'    => $current_tracking_data['carrier_slug'],
											);
											$return[]                               = $result;
//											break;
										}
									}
								}

							}
						}
					}
				}
			} else {
				if ( $tracking_code ) {
					if ( $carrier_slug ) {
						foreach ( $results as $result ) {
							if ( $result['meta_value'] ) {
								$item_tracking_data = vi_wot_json_decode( $result['meta_value'] );
								if ( $result['meta_key'] === '_vi_wot_order_item_tracking_data' ) {
									$current_tracking_data = array_pop( $item_tracking_data );
									if ( $current_tracking_data['tracking_number'] == $tracking_code && $current_tracking_data['carrier_slug'] === $carrier_slug ) {
										$result['tracking_number']              = $current_tracking_data['tracking_number'];
										$result['carrier_slug']                 = $current_tracking_data['carrier_slug'];
										$result['tracking_number_carrier_pair'] = array(
											'tracking_number' => $current_tracking_data['tracking_number'],
											'carrier_slug'    => $current_tracking_data['carrier_slug'],
										);
										$return[]                               = $result;
									}
								} else {
									foreach ( $item_tracking_data as $current_tracking_data ) {
										if ( $current_tracking_data['tracking_number'] == $tracking_code && $current_tracking_data['carrier_slug'] === $carrier_slug ) {
											$result['tracking_number']              = $current_tracking_data['tracking_number'];
											$result['carrier_slug']                 = $current_tracking_data['carrier_slug'];
											$result['tracking_number_carrier_pair'] = array(
												'tracking_number' => $current_tracking_data['tracking_number'],
												'carrier_slug'    => $current_tracking_data['carrier_slug'],
											);
											$return[]                               = $result;
//											break;
										}
									}
								}

							}
						}
					} else {
						foreach ( $results as $result ) {
							if ( $result['meta_value'] ) {
								$item_tracking_data = vi_wot_json_decode( $result['meta_value'] );
								if ( $result['meta_key'] === '_vi_wot_order_item_tracking_data' ) {
									$current_tracking_data = array_pop( $item_tracking_data );
									if ( $current_tracking_data['tracking_number'] == $tracking_code && $current_tracking_data['carrier_slug'] ) {
										$result['tracking_number']              = $current_tracking_data['tracking_number'];
										$result['carrier_slug']                 = $current_tracking_data['carrier_slug'];
										$result['tracking_number_carrier_pair'] = array(
											'tracking_number' => $current_tracking_data['tracking_number'],
											'carrier_slug'    => $current_tracking_data['carrier_slug'],
										);
										$return[]                               = $result;
									}
								} else {
									foreach ( $item_tracking_data as $current_tracking_data ) {
										$current_tracking_data = array_pop( $item_tracking_data );
										if ( $current_tracking_data['tracking_number'] == $tracking_code && $current_tracking_data['carrier_slug'] ) {
											$result['tracking_number']              = $current_tracking_data['tracking_number'];
											$result['carrier_slug']                 = $current_tracking_data['carrier_slug'];
											$result['tracking_number_carrier_pair'] = array(
												'tracking_number' => $current_tracking_data['tracking_number'],
												'carrier_slug'    => $current_tracking_data['carrier_slug'],
											);
											$return[]                               = $result;
//											break;
										}
									}
								}

							}
						}
					}
				} else {
					if ( $carrier_slug ) {
						foreach ( $results as $result ) {
							if ( $result['meta_value'] ) {
								$item_tracking_data = vi_wot_json_decode( $result['meta_value'] );
								if ( $result['meta_key'] === '_vi_wot_order_item_tracking_data' ) {
									$current_tracking_data = array_pop( $item_tracking_data );
									if ( $current_tracking_data['carrier_slug'] === $carrier_slug ) {
										$result['tracking_number']              = $current_tracking_data['tracking_number'];
										$result['carrier_slug']                 = $current_tracking_data['carrier_slug'];
										$result['tracking_number_carrier_pair'] = array(
											'tracking_number' => $current_tracking_data['tracking_number'],
											'carrier_slug'    => $current_tracking_data['carrier_slug'],
										);
										$return[]                               = $result;
									}
								} else {
									foreach ( $item_tracking_data as $current_tracking_data ) {
										if ( $current_tracking_data['carrier_slug'] === $carrier_slug ) {
											$result['tracking_number']              = $current_tracking_data['tracking_number'];
											$result['carrier_slug']                 = $current_tracking_data['carrier_slug'];
											$result['tracking_number_carrier_pair'] = array(
												'tracking_number' => $current_tracking_data['tracking_number'],
												'carrier_slug'    => $current_tracking_data['carrier_slug'],
											);
											$return[]                               = $result;
//											break;
										}
									}
								}

							}
						}
					} else {
						foreach ( $results as $result ) {
							if ( $result['meta_value'] ) {
								$item_tracking_data = vi_wot_json_decode( $result['meta_value'] );
								if ( $result['meta_key'] === '_vi_wot_order_item_tracking_data' ) {
									$current_tracking_data                  = array_pop( $item_tracking_data );
									$result['tracking_number']              = $current_tracking_data['tracking_number'];
									$result['carrier_slug']                 = $current_tracking_data['carrier_slug'];
									$result['tracking_number_carrier_pair'] = array(
										'tracking_number' => $current_tracking_data['tracking_number'],
										'carrier_slug'    => $current_tracking_data['carrier_slug'],
									);
									$return[]                               = $result;
								} else {
									foreach ( $item_tracking_data as $current_tracking_data ) {
										$result['tracking_number']              = $current_tracking_data['tracking_number'];
										$result['carrier_slug']                 = $current_tracking_data['carrier_slug'];
										$result['tracking_number_carrier_pair'] = array(
											'tracking_number' => $current_tracking_data['tracking_number'],
											'carrier_slug'    => $current_tracking_data['carrier_slug'],
										);
										$return[]                               = $result;
//										break;
									}
								}

							}
						}
					}
				}
			}
		}

		return apply_filters( 'wot_search_order_item_by_tracking_number', $return, $tracking_code, $order_id, $email, $carrier_slug );
	}

	public static function array_search_case_insensitive( $search, $array, $to_lower = true ) {
		$return = false;
		if ( is_array( $array ) && count( $array ) ) {
			if ( function_exists( 'mb_strtolower' ) ) {
				$search = mb_strtolower( $search );
				foreach ( $array as $key => $value ) {
					if ( $search === mb_strtolower( $value ) ) {
						$return = $key;
						if ( $to_lower ) {
							$return = mb_strtolower( $return );
						}
						break;
					}
				}
			} else {
				$search = strtolower( $search );
				foreach ( $array as $key => $value ) {
					if ( $search === strtolower( $value ) ) {
						$return = $key;
						if ( $to_lower ) {
							$return = strtolower( $return );
						}
						break;
					}
				}
			}

		}

		return $return;
	}

	/**
	 * @param $phone_number
	 * @param $country_code
	 *
	 * @return string
	 */
	public static function format_phone_number( $phone_number, $country_code ) {
		require_once VI_WOOCOMMERCE_ORDERS_TRACKING_INCLUDES . 'libphonenumber/autoload.php';
		$phoneNumberUtil = \libphonenumber\PhoneNumberUtil::getInstance();
		$format_e164     = \libphonenumber\PhoneNumberFormat::E164;
		if ( $country_code ) {
			$country_code = strtoupper( $country_code );
			try {
				$phoneNumberObject = $phoneNumberUtil->parse( $phone_number, $country_code );
				$phone_number      = $phoneNumberUtil->format( $phoneNumberObject, $format_e164 );
			} catch ( \Exception $e ) {

			}
		}

		return $phone_number;
	}

	/**
	 * @param string $name
	 *
	 * @return array|mixed|string
	 */
	public static function service_carriers_list( $name = '' ) {
		$list = array(
			'cainiao'      => 'Cainiao',
			'trackingmore' => 'TrackingMore',
			'easypost'     => 'EasyPost',
			'aftership'    => 'AfterShip',
		);
		if ( $name ) {
			return isset( $list[ $name ] ) ? $list[ $name ] : '';
		} else {
			return $list;
		}
	}

	public static function get_defined_carriers() {
		$instance = self::get_instance();

		return vi_wot_json_decode( $instance->get_params( 'shipping_carriers_define_list' ) );
	}

	public static function get_custom_carriers() {
		$instance = self::get_instance();

		return vi_wot_json_decode( $instance->get_params( 'custom_carriers_list' ) );
	}

	public static function get_carriers() {
		return array_values( array_merge( self::get_defined_carriers(), self::get_custom_carriers() ) );
	}

	public static function extend_post_allowed_html() {
		$allow_html = wp_kses_allowed_html( 'post' );
		foreach ( $allow_html as $key => $value ) {
			if ( in_array( $key, array( 'div', 'span', 'a', 'input', 'form' ) ) ) {
				$allow_html[ $key ]['data-*'] = 1;
			}
		}

		return array_merge( $allow_html, array(
				'input' => array(
					'type'         => 1,
					'id'           => 1,
					'name'         => 1,
					'class'        => 1,
					'placeholder'  => 1,
					'autocomplete' => 1,
					'style'        => 1,
					'value'        => 1,
					'data-*'       => 1,
				),
			)
		);
	}

	public static function extend_post_allowed_style_html() {
		return array_merge( wp_kses_allowed_html( 'post' ), array(
				'style' => array(
					'type'  => 1,
					'id'    => 1,
					'name'  => 1,
					'class' => 1,
				),
			)
		);
	}

	public function get_cache_request_time() {
		return absint( HOUR_IN_SECONDS * self::get_params( 'service_cache_request' ) );
	}

	public static function is_email_template_customizer_active() {
		return ( class_exists( 'WooCommerce_Email_Template_Customizer' ) || class_exists( 'Woo_Email_Template_Customizer' ) );
	}

	public static function get_frontend_language() {
		$language = '';
		if ( is_plugin_active( 'sitepress-multilingual-cms/sitepress.php' ) ) {
			$default_lang     = apply_filters( 'wpml_default_language', null );
			$current_language = apply_filters( 'wpml_current_language', null );

			if ( $current_language && $current_language !== $default_lang ) {
				$language = $current_language;
			}
		} else if ( class_exists( 'Polylang' ) ) {
			$default_lang     = pll_default_language( 'slug' );
			$current_language = pll_current_language( 'slug' );
			if ( $current_language && $current_language !== $default_lang ) {
				$language = $current_language;
			}
		}

		return $language;
	}

	public function get_status_text_by_service_carrier( $status ) {
		$status               = strtolower( $status );
		$service_carrier_type = $this->get_params( 'service_carrier_type' );
		$status_text          = '';
		switch ( $service_carrier_type ) {
			case 'trackingmore':
				$status_text = VI_WOOCOMMERCE_ORDERS_TRACKING_TRACKINGMORE::get_status_text( $status );
				break;
			case 'aftership':
				$status_text = VI_WOOCOMMERCE_ORDERS_TRACKING_AFTERSHIP::get_status_text( $status );
				break;
			case 'easypost':
				$status_text = VI_WOOCOMMERCE_ORDERS_TRACKING_EASYPOST::get_status_text( $status );
				break;
			default:
		}
		if ( ! $status_text ) {
			$status_text = self::get_status_text( self::convert_status( $status ) );
		}

		return $status_text;
	}

	/**
	 * Add tracking data to currently active tracking service
	 * Do not handle if error occurs, used for 3rd integration only
	 *
	 * @param $current_tracking_data
	 * @param $order_id
	 */
	public static function add_tracking_number_to_tracking_service( $current_tracking_data, $order_id ) {
		$instance = self::get_instance();
		if ( $instance->get_params( 'service_carrier_enable' ) ) {
			$tracking_number = isset( $current_tracking_data['tracking_number'] ) ? $current_tracking_data['tracking_number'] : '';
			$carrier_slug    = isset( $current_tracking_data['carrier_slug'] ) ? $current_tracking_data['carrier_slug'] : '';
			$carrier_name    = isset( $current_tracking_data['carrier_name'] ) ? $current_tracking_data['carrier_name'] : '';
			if ( $tracking_number && $carrier_slug ) {
				$service_carrier_type         = $instance->get_params( 'service_carrier_type' );
				$response['tracking_service'] = self::service_carriers_list( $service_carrier_type );
				$status                       = '';
				$description                  = '';
				$track_info                   = '';
				$est_delivery_date            = '';
				switch ( $service_carrier_type ) {
					case 'trackingmore':
						$tracking_from_db   = VI_WOOCOMMERCE_ORDERS_TRACKING_TRACKINGMORE_TABLE::get_row_by_tracking_number( $tracking_number, $carrier_slug, $order_id );
						$trackingMore       = new VI_WOOCOMMERCE_ORDERS_TRACKING_TRACKINGMORE( $instance->get_params( 'service_carrier_api_key' ) );
						$tracking_more_slug = empty( $current_tracking_data['tracking_more_slug'] ) ? VI_WOOCOMMERCE_ORDERS_TRACKING_TRACKINGMORE::get_carrier_slug_by_name( $carrier_name ) : $current_tracking_data['tracking_more_slug'];
						if ( $tracking_more_slug ) {
							$track_data = $trackingMore->create_tracking( $tracking_number, $tracking_more_slug, $order_id );
							if ( $track_data['status'] === 'success' ) {
								$status = $track_data['data']['status'];
							}
						}
						if ( ! count( $tracking_from_db ) ) {
							VI_WOOCOMMERCE_ORDERS_TRACKING_TRACKINGMORE_TABLE::insert( $order_id, $tracking_number, $status, $carrier_slug, $carrier_name, VI_WOOCOMMERCE_ORDERS_TRACKING_FRONTEND_FRONTEND::get_shipping_country_by_order_id( $order_id ), $track_info, $description, '' );
						}
						break;
					case 'aftership':
						$tracking_from_db = VI_WOOCOMMERCE_ORDERS_TRACKING_TRACK_INFO_TABLE::get_row_by_tracking_number( $tracking_number, $carrier_slug, $service_carrier_type, $order_id );
						$find_carrier     = VI_WOOCOMMERCE_ORDERS_TRACKING_AFTERSHIP::get_carrier_slug_by_name( $carrier_name );
						$aftership        = new VI_WOOCOMMERCE_ORDERS_TRACKING_AFTERSHIP( $instance->get_params( 'service_carrier_api_key' ) );
						$track_data       = $aftership->create( $tracking_number, $find_carrier, $order_id );
						if ( $track_data['status'] === 'success' ) {
							$status            = $track_data['data']['tag'];
							$est_delivery_date = $track_data['est_delivery_date'];
						}
						if ( ! count( $tracking_from_db ) ) {
							VI_WOOCOMMERCE_ORDERS_TRACKING_TRACK_INFO_TABLE::insert( $tracking_number, $order_id, $carrier_slug, $service_carrier_type, $status, $track_info, $description, $est_delivery_date, '' );
						}
						break;
					case 'easypost':
						$tracking_from_db = VI_WOOCOMMERCE_ORDERS_TRACKING_TRACK_INFO_TABLE::get_row_by_tracking_number( $tracking_number, $carrier_slug, $service_carrier_type, $order_id );
						$find_carrier     = VI_WOOCOMMERCE_ORDERS_TRACKING_EASYPOST::get_carrier_slug_by_name( $carrier_name );
						$easyPost         = new VI_WOOCOMMERCE_ORDERS_TRACKING_EASYPOST( $instance->get_params( 'service_carrier_api_key' ) );
						$modify_at        = false;
						$track_data       = $easyPost->create( $tracking_number, $find_carrier );
						if ( $track_data['status'] === 'success' ) {
							if ( count( $track_data['data'] ) ) {
								$track_info                           = json_encode( $track_data['data'] );
								$last_event                           = array_shift( $track_data['data'] );
								$status                               = $last_event['status'];
								$description                          = $last_event['description'];
								$est_delivery_date                    = $track_data['est_delivery_date'];
								$current_tracking_data['status']      = $last_event['status'];
								$current_tracking_data['last_update'] = time();
							} else {
								$modify_at = '';
							}
						} else {
							$modify_at = '';
						}
						if ( ! count( $tracking_from_db ) ) {
							VI_WOOCOMMERCE_ORDERS_TRACKING_TRACK_INFO_TABLE::insert( $tracking_number, $order_id, $carrier_slug, $service_carrier_type, $status, $track_info, $description, $est_delivery_date, $modify_at );
						}
						break;
					case 'cainiao':
						$tracking_from_db = VI_WOOCOMMERCE_ORDERS_TRACKING_TRACK_INFO_TABLE::get_row_by_tracking_number( $tracking_number, $carrier_slug, $service_carrier_type, $order_id );
						if ( ! count( $tracking_from_db ) ) {
							VI_WOOCOMMERCE_ORDERS_TRACKING_TRACK_INFO_TABLE::insert( $tracking_number, $order_id, $carrier_slug, $service_carrier_type, '', '', '', '', '' );
						}
						break;
					default:
				}
			}
		}
	}
}