/var/www/html_it/wp-content/plugins/woocommerce-orders-tracking/includes/admin/sms.php


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
<?php
if ( ! defined'ABSPATH' ) ) {
    exit;
}

class 
VI_WOOCOMMERCE_ORDERS_TRACKING_ADMIN_SMS {
    protected static 
$settings;

    public function 
__construct() {
        
self::$settings VI_WOOCOMMERCE_ORDERS_TRACKING_DATA::get_instance();
    }

    
/**
     * Send SMS when tracking changes
     *
     * @param      $tracking_number
     * @param      $carrier_name
     * @param      $carrier_url
     * @param      $tracking_url_import
     * @param      $order WC_Order
     * @param      $response
     * @param bool $add_new_tracking
     */
    
public static function send_sms$tracking_number$carrier_name$carrier_url$tracking_url_import$order, &$response$add_new_tracking false ) {
        
$billing_phone $order->get_billing_phone();
        if ( 
$billing_phone ) {
            
$order_id           $order->get_id();
            
$order_number       $order->get_order_number();
            
$billing_country    $order->get_billing_country();
            
$billing_first_name $order->get_billing_first_name();
            
$billing_last_name  $order->get_billing_last_name();

            
$sms_provider self::$settings->get_params'sms_provider' );
            
$language     '';
            if ( 
is_plugin_active'sitepress-multilingual-cms/sitepress.php' ) ) {
                
$language $order->get_meta'wpml_language'true );
            }
            if ( ! 
$language && function_exists'pll_get_post_language' ) ) {
                
$language pll_get_post_language$order_id );
            }
            if ( 
$add_new_tracking ) {
                
$text self::$settings->get_params'sms_text_new'''$language );
            } else {
                
$text self::$settings->get_params'sms_text'''$language );
            }
            
$shortlink $tracking_url_import;
            if ( 
$bitly_access_token self::$settings->get_params'bitly_access_token' ) ) {
                
$bitly             = new VI_WOOCOMMERCE_ORDERS_TRACKING_BITLY$bitly_access_token );
                
$shortlink_request $bitly->get_link$shortlink );
                if ( 
$shortlink_request['status'] === 'success' ) {
                    
$shortlink $shortlink_request['data']['link'];
                }
            }
            
$text str_replace( array(
                
'{tracking_number}',
                
'{tracking_url}',
                
'{carrier_name}',
                
'{carrier_url}',
                
'{order_id}',
                
'{order_number}',
                
'{billing_first_name}',
                
'{billing_last_name}'
            
), array(
                
$tracking_number,
                
remove_query_arg( array( 'woo_orders_tracking_nonce''order_id''order_email' ), $shortlink ),
                
$carrier_name,
                
str_replace( array(
                    
'{tracking_number}',
                    
'{postal_code}'
                
), ''esc_url$carrier_url ) ),
                
$order_id,
                
$order_number,
                
$billing_first_name,
                
$billing_last_name
            
), $text );

            
$app_id    self::$settings->get_params"sms_{$sms_provider}_app_id" );
            
$app_token self::$settings->get_params"sms_{$sms_provider}_app_token" );
            switch ( 
$sms_provider ) {
                case 
'twilio':
                    
$sms_object             = new VI_WOOCOMMERCE_ORDERS_TRACKING_TWILIO$app_id$app_token );
                    
$from_number            self::$settings->get_params'sms_from_number'''$language );
                    
$sms_response           $sms_object->send$from_number$billing_phone$text$billing_country );
                    
$response['sms_status'] = $sms_response['status'];
                    if ( 
$sms_response['status'] === 'error' ) {
                        
$response['sms_message']       = $sms_response['data'];
                        
$response['sms_message_title'] = esc_html__'Failed sending SMS message''woocommerce-orders-tracking' );
                    } elseif ( 
in_array$sms_response['data']['status'], array( 'failed''undelivered' ) ) ) {
                        
$response['sms_status']        = 'error';
                        
$response['sms_message']       = isset( $sms_response['data']['error_message'] ) ? $sms_response['data']['error_message'] : '';
                        
$response['sms_message_title'] = esc_html__'Failed sending SMS message''woocommerce-orders-tracking' );
                    } else {
                        
$response['sms_message_title'] = esc_html__'Send SMS message successfully''woocommerce-orders-tracking' );
                        
$response['sms_message']       = empty( $sms_response['body'] ) ? $text $sms_response['body'];
                    }
                    break;
                case 
'nexmo':
                    
$sms_object             = new VI_WOOCOMMERCE_ORDERS_TRACKING_NEXMO$app_id$app_token );
                    
$from_number            self::$settings->get_params'sms_from_number'''$language );
                    
$sms_response           $sms_object->send$from_number$billing_phone$text$billing_country );
                    
$response['sms_status'] = $sms_response['status'];
                    if ( 
$sms_response['status'] === 'error' ) {
                        
$response['sms_message_title'] = esc_html__'Failed sending SMS message''woocommerce-orders-tracking' );
                        
$response['sms_message']       = $sms_response['data'];
                    } else {
                        
$response['sms_message_title'] = esc_html__'Send SMS message successfully''woocommerce-orders-tracking' );
                        
$response['sms_message']       = $text;
                    }
                    break;
                case 
'plivo':
                    
$powerpack_uuid         self::$settings->get_params'sms_plivo_powerpack_uuid' );
                    
$sms_object             = new VI_WOOCOMMERCE_ORDERS_TRACKING_PLIVO$app_id$app_token );
                    
$sms_response           $sms_object->send$powerpack_uuid$billing_phone$text$billing_country );
                    
$response['sms_status'] = $sms_response['status'];
                    if ( 
$sms_response['status'] === 'error' ) {
                        
$response['sms_message_title'] = esc_html__'Failed sending SMS message''woocommerce-orders-tracking' );
                        
$response['sms_message']       = $sms_response['data'];
                    } else {
                        
$response['sms_message_title'] = esc_html__'Send SMS message successfully''woocommerce-orders-tracking' );
                        
$response['sms_message']       = $text;
                    }
                    break;
                default:
            }
        }
    }
}