/var/www/html_us/wp-content/plugins/checkout-for-woocommerce/includes/Features/SmartyStreets.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
<?php

namespace Objectiv\Plugins\Checkout\Features;

use 
Objectiv\Plugins\Checkout\Action\SmartyStreetsAddressValidationAction;
use 
Objectiv\Plugins\Checkout\Admin\Pages\PageAbstract;
use 
Objectiv\Plugins\Checkout\Interfaces\SettingsGetterInterface;
use 
Objectiv\Plugins\Checkout\Managers\PlanManager;
use 
Objectiv\Plugins\Checkout\Managers\SettingsManager;

class 
SmartyStreets extends FeaturesAbstract {
    public function 
__constructbool $enabledbool $availablestring $required_plans_listSettingsGetterInterface $settings_getter ) {
        
parent::__construct$enabled$available$required_plans_list$settings_getter );
    }

    public function 
init() {
        
parent::init();

        
add_action'cfw_do_plugin_activation', array( $this'run_on_plugin_activation' ) );
        
add_action'cfw_checkout_after_main_admin_page_controls', array( $this'output_admin_settings' ) );
    }

    protected function 
run_if_cfw_is_enabled() {
        
add_action'cfw_checkout_customer_info_tab', array( $this'output_modal' ), 60 );
        
add_filter'cfw_event_data', array( $this'add_localized_settings' ) );
    }

    
/**
     * @param PageAbstract $checkout_admin_page
     */
    
public function output_admin_settingsPageAbstract $checkout_admin_page ) {
        if ( ! 
$this->available ) {
            
$notice $checkout_admin_page->get_upgrade_required_notice$this->required_plans_list );
        }

        
$checkout_admin_page->output_checkbox_row(
            
'enable_smartystreets_integration',
            
cfw__'SmartyStreets''checkout-wc' ),
            
cfw__'Enable SmartyStreets address validation.''checkout-wc' ),
            
cfw__'Validates shipping address with SmartyStreets and provides alternative, corrected addresses for incorrect or incomplete addresses.''checkout-wc' ),
            
PlanManager::has_required_planPlanManager::PRO ),
            
$notice ?? ''
        
);

        
$checkout_admin_page->output_text_input_row(
            
'smartystreets_auth_id',
            
cfw__'SmartyStreets Auth ID''checkout-wc' ),
            
cfw__'SmartyStreets Auth ID. Available in your <a target="_blank" href="https://account.smartystreets.com/#keys">SmartyStreets Account</a>.''checkout-wc' )
        );

        
$checkout_admin_page->output_text_input_row(
            
'smartystreets_auth_token',
            
cfw__'SmartyStreets Auth Token''checkout-wc' ),
            
cfw__'SmartyStreets Auth Token. Available in your <a target="_blank" href="https://account.smartystreets.com/#keys">SmartyStreets Account</a>.''checkout-wc' )
        );
    }

    
/**
     * @param array $event_data
     * @return array
     */
    
public function add_localized_settings( array $event_data ): array {
        
$event_data['settings']['enable_smartystreets_integration'] = apply_filters'cfw_enable_smartystreets_integration'true );

        return 
$event_data;
    }

    public function 
output_modal() {
        
$translated_button_label __'Use This Address''checkout-wc' );
        
?>
        <a href="#cfw_smartystreets_confirm_modal" class="cfw-smartystreets-modal-trigger cfw-hidden"></a>
        <div id="cfw_smartystreets_confirm_modal" class="cfw-hidden">
            <h2><?php _e'Address Verification''checkout-wc' ); ?></h2>

            <h4 class="cfw-small">
                <?php _e'The shipping address you provided does not match the suggested address from our verification service. Please verify your address.''checkout-wc' ); ?>
            </h4>

            <div class="container">
                <div class="row">
                    <div class="cfw-smartystreets-option-wrap col-5 cfw-selected-smartystreets-address">
                        <h4>
                            <label>
                                <input type="radio" name="cfw_smartystreets_address_selection" class="cfw-radio-user-address" value="user-value" checked /> <?php _e'You Entered''checkout-wc' ); ?>
                            </label>
                        </h4>

                        <p class="cfw-smartystreets-user-address"></p>

                        <p class="cfw-smartystreets-button-wrap">
                            <a href="javascript:" class="cfw-smartystreets-button cfw-primary-btn cfw-smartystreets-user-address-button"><?php echo $translated_button_label?></a> 
                        </p>
                    </div>

                    <div class="cfw-smartystreets-option-wrap col-5 offset-2">
                        <h4>
                            <label>
                                <input type="radio" name="cfw_smartystreets_address_selection" class="cfw-radio-suggested-address" value="suggested-value" /> <?php _e'We Suggest''checkout-wc' ); ?>
                            </label>
                        </h4>

                        <p class="cfw-smartystreets-suggested-address"></p>

                        <p class="cfw-smartystreets-button-wrap">
                            <a href="javascript:" class="cfw-smartystreets-button cfw-primary-btn cfw-smartystreets-suggested-address-button"><?php echo $translated_button_label?></a>
                        </p>
                    </div>
                </div>
            </div>
        </div>
        <?php
    
}

    public function 
load_ajax_action() {
        ( new 
SmartyStreetsAddressValidationAction$this->settings_getter->get_setting'smartystreets_auth_id' ), $this->settings_getter->get_setting'smartystreets_auth_token' ) ) )->load();
    }

    public function 
run_on_plugin_activation() {
        
SettingsManager::instance()->add_setting'enable_smartystreets_integration''no' );
    }
}