all_settings =get_option('wf_address_autocomplete_validation_settings'); } //to initialize the settings fields private function wf_address_autocomplete_validation_get_fields() { $setting_fields = array( 'section_title' => array( 'name' => '', 'type' => 'title', 'desc' => '
Enable the required fields to activate Address Autocomplete and Validation. Respective API keys are MANDATORY requirements.', 'id' => 'wf_address_autocomplete_validation_settings[wf_address_autocomplete_validation_title]' ), 'enable_autocomplete' => array( 'title' => 'Address Autocomplete', 'type' => 'checkbox', 'default' => 'no', 'desc' => 'Enable
Activates Google Address Autocomplete on the checkout page.', 'id' => 'wf_address_autocomplete_validation_settings[wf_aac_enable_autocomplete]', 'class' =>'wf_aac_enable_autocomplete_class' ), 'google_api_key' => array( 'title' => __( 'Google API Key', 'wf_address_autocomplete_validation' ), 'type' => 'password', 'desc' => "
Enter the Google API Key.
By default, google address autocomplete api usage is limited.
To increase the usage limit, check this article from google.", 'custom_attributes' => array( 'autocomplete' => 'off'), 'id' => 'wf_address_autocomplete_validation_settings[wf_address_autocomplete_validation_google_api_key]', 'class' => 'wf_address_autocomplete_validation_google_api_key_class', ), 'Enable_disable_autocomplete_fields' => array( 'title' => __('Editable Address Fields','wf_address_autocomplete_validation'), 'type' => 'checkbox', 'default' => 'no', 'desc' => 'Enable
To make the checkout address fields editable when Address Autocomplete is already enabled.', 'id' => 'wf_address_autocomplete_validation_settings[wf_address_autocomplete_validation_enable_disable_autocomplete_fields]', 'class' => 'wf_address_autocomplete_validation_enable_disable_autocomplete_fields_class', ), 'label_name' =>array( 'title' => __('Label Name','wf_address_autocomplete_validation'), 'type' => 'text', 'placeholder' => __('Address Autocomplete','wf_address_autocomplete_validation'), 'desc' => __('
This controls the Label text in the checkout pagePremium','wf_address_autocomplete_validation'), 'class' => 'wf_address_autocomplete_validation_label_name_class', 'custom_attributes'=>array('disabled'=>'disabled') ), 'section_title1' => array( 'name' => '', 'type' => 'title', 'desc' => '', 'id' => 'wf_address_autocomplete_validation_settings[wf_address_autocomplete_validation_title1]' ), 'address_validation' =>array( 'type' => 'radio_inline', ), 'easypost_api_key' => array( 'title' => __( 'EasyPost API Key', 'wf_address_autocomplete_validation_get_fields' ), 'type' => 'password', 'desc' => "
Enter the EasyPost API Key.", 'custom_attributes' => array( 'autocomplete' => 'off'), 'id' => 'wf_address_autocomplete_validation_settings[wf_address_autocomplete_validation_easypost_api_key]', 'class' => 'wf_address_autocomplete_validation_easypost_api_key_class', ), 'validated_address_only' => array( 'title' => __('Enforce Address Validation','wf_address_autocomplete_validation_get_fields'), 'type' => 'checkbox', 'id' =>'wf_address_autocomplete_validation_settings[wf_address_autocomplete_validation_validated_address_only]', 'desc' => 'Enable
By enabling this, the user will not be able to proceed with checkout if address validation fails.
This option will be ignored if Easypost/UPS API server is down.
', 'class' => 'wf_address_autocomplete_validation_validated_address_only', ), 'record_log' => array( 'title' => __( 'Debug Log', 'wf_address_autocomplete_validation' ), 'type' => 'checkbox', 'default' => 'no', 'desc' => 'Enable
Find request and response logs here (wp-content\uploads\wc-logs)', 'custom_attributes' => array( 'autocomplete' => 'off'), 'id' => 'wf_address_autocomplete_validation_settings[wf_address_autocomplete_validation_record_log]', 'class' => 'wf_address_autocomplete_validation_record_log_class', ), 'confirm_validation' => array( 'title' => __( 'Confirm Before Validation', 'wf_address_autocomplete_validation' ), 'type' => 'checkbox', 'default' => 'yes', 'desc' => 'Enable
Enable it if you want customers to confirm any address before validation.', 'id' => 'wf_address_autocomplete_validation_settings[wf_address_autocomplete_validation_confirm_validation]', 'class' => 'wf_address_autocomplete_validation_confirm_validation_class', ), 'address_confirm' =>array( 'type' => 'radio_confirm', ), 'enable_address_popup_css_edit' =>array( 'title' => __('Confirmation Window CSS','wf_address_autocomplete_validation'), 'type' => 'textarea', 'css' => 'width:900px; height:500px', 'id' => 'wf_address_autocomplete_validation_settings[wf_address_autocomplete_validation_enable_address_popup_css_edit]', 'class' => 'wf_address_autocomplete_validation_enable_address_popup_css_edit_class', 'desc' => __('Modify the CSS to change the design of the address confirmation window. Leave it without modification to keep the default design. Clear the field to restore the default.','wf_address_autocomplete_validation'), 'desc_tip' => true, ), 'section_end' => array( 'type' => 'sectionend', 'id' => 'wf_address_autocomplete_validation_settings[wf_address_autocomplete_validation_section1_end]' ), 'section_end' => array( 'type' => 'sectionend', 'id' => 'wf_address_autocomplete_validation_settings[wf_address_autocomplete_validation_section_end]' ) ); include_once("market.php"); return apply_filters( 'wc_settings_tab_wf_address_autocomplete_validation', $setting_fields ); } //Get an option set in our settings tab public function wf_address_autocomplete_validation_get_option( $key ) { $fields = $this->wf_address_autocomplete_validation_get_fields(); return apply_filters( 'wc_option_' . $key, wf_address_autocomplete_validation_get_option( 'wc_settings_wf_address_autocomplete_validation' . '_' . $key, ( ( isset( $fields[$key] ) && isset( $fields[$key]['default'] ) ) ? $fields[$key]['default'] : '' ) ) ); } //Setup the WooCommerce settings public function wf_address_autocomplete_validation_setup() { add_filter( 'woocommerce_settings_tabs_array', array( $this, 'wf_address_autocomplete_validation_add_settings_tab' ), 70 ); add_action( 'woocommerce_settings_tabs_wf_address_autocomplete_validation', array( $this, 'wf_address_autocomplete_validation_tab_content' ) ); add_action( 'woocommerce_update_options_wf_address_autocomplete_validation', array( $this, 'wf_address_autocomplete_validation_update_settings' ) ); add_action('woocommerce_admin_field_radio_inline',array( $this, 'generate_radio_inline_html')); add_action('woocommerce_admin_field_radio_confirm',array( $this, 'generate_radio_confirm_html')); } //Add Address Validation settings tab to the settings page public function wf_address_autocomplete_validation_add_settings_tab( $settings_tabs ) { $settings_tabs['wf_address_autocomplete_validation'] = __( 'Address Validation & Autocomplete', 'wf_address_autocomplete_validation' ); return $settings_tabs; } //Output the tab content public function wf_address_autocomplete_validation_tab_content() { woocommerce_admin_fields( $this->wf_address_autocomplete_validation_get_fields() ); //Display settings data wc_enqueue_js(" jQuery('.wf_aac_enable_autocomplete_class').on('change',function(){ if(jQuery('.wf_aac_enable_autocomplete_class').is(':checked')){ jQuery('.wf_address_autocomplete_validation_google_api_key_class').closest('tr').show(); jQuery('.wf_address_autocomplete_validation_label_name_class').closest('tr').show(); jQuery('.wf_address_autocomplete_validation_enable_disable_autocomplete_fields_class').closest('tr').show(); }else{ jQuery('.wf_address_autocomplete_validation_google_api_key_class').closest('tr').hide(); jQuery('.wf_address_autocomplete_validation_label_name_class').closest('tr').hide(); jQuery('.wf_address_autocomplete_validation_enable_disable_autocomplete_fields_class').closest('tr').hide(); } }).change(); jQuery('.wf_address_autocomplete_validation_confirm_validation_class').on('change',function() { if(jQuery('.wf_address_autocomplete_validation_confirm_validation_class').is(':checked')) { jQuery('#confirm_using').closest('tr').show(); if(jQuery('#wf_address_autocomplete_validation_settings_popup').prop('checked') && jQuery('#wf_address_autocomplete_validation_settings_popup').val() == 'popup') { jQuery('.wf_address_autocomplete_validation_enable_address_popup_css_edit_class').closest('tr').show(); } }else { jQuery('#confirm_using').closest('tr').hide(); jQuery('.wf_address_autocomplete_validation_enable_address_popup_css_edit_class').closest('tr').hide(); } }).change(); jQuery(document).ready(function() { if(jQuery('#wf_address_autocomplete_validation_settings_popup').prop('checked') || jQuery('#wf_address_autocomplete_validation_settings_msg').prop('checked')) { jQuery('#wf_address_autocomplete_validation_settings_popup').change(function(){ if(jQuery('#wf_address_autocomplete_validation_settings_popup').prop('checked') && jQuery('#wf_address_autocomplete_validation_settings_popup').val() == 'popup') { jQuery('.wf_address_autocomplete_validation_enable_address_popup_css_edit_class').closest('tr').show(); } }).change(); jQuery('#wf_address_autocomplete_validation_settings_msg').change(function(){ if(jQuery('#wf_address_autocomplete_validation_settings_msg').prop('checked') && jQuery('#wf_address_autocomplete_validation_settings_msg').val() == 'msg') { jQuery('.wf_address_autocomplete_validation_enable_address_popup_css_edit_class').closest('tr').hide(); } }).change(); } }); jQuery(document).ready(function() { if(jQuery('#wf_address_autocomplete_validation_settings_none').prop('checked') || jQuery('#wf_address_autocomplete_validation_settings_easypost').prop('checked') ) { jQuery('#wf_address_autocomplete_validation_settings_none').change(function(){ if(jQuery('#wf_address_autocomplete_validation_settings_none').prop('checked') && jQuery('#wf_address_autocomplete_validation_settings_none').val() == 'none') { jQuery('#confirm_using').closest('tr').hide(); jQuery('.wf_address_autocomplete_validation_confirm_validation_class').closest('tr').hide(); jQuery('.wf_address_autocomplete_validation_enable_address_popup_css_edit_class').closest('tr').hide(); jQuery('.wf_address_autocomplete_validation_easypost_api_key_class').closest('tr').hide(); jQuery('.wf_address_autocomplete_validation_record_log_class').closest('tr').hide(); jQuery('.wf_address_autocomplete_validation_validated_address_only').closest('tr').hide(); } }).change(); jQuery('#wf_address_autocomplete_validation_settings_easypost').change(function(){ if(jQuery('#wf_address_autocomplete_validation_settings_easypost').prop('checked') && jQuery('#wf_address_autocomplete_validation_settings_easypost').val() == 'easypost') { jQuery('.wf_address_autocomplete_validation_confirm_validation_class').closest('tr').show(); if(jQuery('.wf_address_autocomplete_validation_confirm_validation_class').is(':checked')) { jQuery('#confirm_using').closest('tr').show(); if(jQuery('#wf_address_autocomplete_validation_settings_popup').prop('checked') && jQuery('#wf_address_autocomplete_validation_settings_popup').val() == 'popup') { jQuery('.wf_address_autocomplete_validation_enable_address_popup_css_edit_class').closest('tr').show(); } }else { jQuery('#confirm_using').closest('tr').hide(); jQuery('.wf_address_autocomplete_validation_enable_address_popup_css_edit_class').closest('tr').hide(); } jQuery('.wf_address_autocomplete_validation_easypost_api_key_class').closest('tr').show(); jQuery('.wf_address_autocomplete_validation_record_log_class').closest('tr').show(); jQuery('.wf_address_autocomplete_validation_validated_address_only').closest('tr').show(); } }).change(); } }); "); } //Update the settings public function wf_address_autocomplete_validation_update_settings() { $restore_css=plugin_dir_path( __DIR__ ).'assests/css/address-verification-popup-default.css'; $path=plugin_dir_path( __DIR__ ).'assests/css/address-verification-popup-current.css'; $temp =''; $temp = $_POST['wf_address_autocomplete_validation_settings']; if(! empty($temp['wf_address_autocomplete_validation_enable_address_popup_css_edit'])) file_put_contents($path, $temp['wf_address_autocomplete_validation_enable_address_popup_css_edit']); else { $temp['wf_address_autocomplete_validation_enable_address_popup_css_edit']=file_get_contents($restore_css); file_put_contents($path, file_get_contents($restore_css)); } $this->all_settings['wf_aac_enable_autocomplete'] = !empty($temp['wf_aac_enable_autocomplete']) ? 'yes':''; $this->all_settings['wf_address_autocomplete_validation_google_api_key'] = $temp['wf_address_autocomplete_validation_google_api_key']; $this->all_settings['wf_address_autocomplete_validation_enable_disable_autocomplete_fields'] = !empty($temp['wf_address_autocomplete_validation_enable_disable_autocomplete_fields']) ? 'yes':''; $this->all_settings['wf_address_autocomplete_validation_easypost_api_key'] = $temp['wf_address_autocomplete_validation_easypost_api_key']; $this->all_settings['wf_address_autocomplete_validation_record_log'] = !empty($temp['wf_address_autocomplete_validation_record_log']) ? 'yes':''; $this->all_settings['wf_address_autocomplete_validation_validated_address_only'] = !empty($temp['wf_address_autocomplete_validation_validated_address_only']) ? 'yes' : 'no'; $this->all_settings['wf_address_autocomplete_validation_confirm_validation'] = !empty($temp['wf_address_autocomplete_validation_confirm_validation']) ? 'yes':''; //$this->all_settings['wf_address_autocomplete_validation_enable_address_popup'] = !empty($temp['wf_address_autocomplete_validation_enable_address_popup']) ? 'yes':''; $this->all_settings['wf_address_autocomplete_validation_enable_address_popup_css_edit'] = $temp['wf_address_autocomplete_validation_enable_address_popup_css_edit']; update_option('wf_address_autocomplete_validation_settings', $this->all_settings); woocommerce_update_options( $this->wf_address_autocomplete_validation_get_fields() ); } public function generate_radio_inline_html(){ ?> Address Validation [Premium includes UPS & USPS]','wf_address_autocomplete_validation'); ?> all_settings[ 'xa_address_validation' ] = $temp['xa_address_validation']; update_option('wf_address_autocomplete_validation_settings', $this->all_settings); } $check= isset($this->all_settings[ 'xa_address_validation' ]) ? $this->all_settings[ 'xa_address_validation' ] : ''; if(empty($check)) { $this->all_settings[ 'xa_address_validation' ] = 'none'; update_option('wf_address_autocomplete_validation_settings', $this->all_settings); ?> jQuery('#wf_address_autocomplete_validation_settings_none').prop('checked', true)"; } if($check === 'easypost') { echo ""; } } public function generate_radio_confirm_html(){ ?> Confirm Using all_settings[ 'xa_address_validation_confirm' ] = $temp['xa_address_validation_confirm']; update_option('wf_address_autocomplete_validation_settings', $this->all_settings); } $check= isset($this->all_settings[ 'xa_address_validation_confirm' ]) ? $this->all_settings[ 'xa_address_validation_confirm' ] : ''; if(empty($check)) { $this->all_settings[ 'xa_address_validation_confirm' ] = 'popup'; update_option('wf_address_autocomplete_validation_settings', $this->all_settings); ?> jQuery('#wf_address_autocomplete_validation_settings_popup').prop('checked', true)"; } if($check === 'msg') { echo ""; } } }