Copyright (C) 2018 Webman Technologies */ defined( 'ABSPATH' ) or exit; /* Contact Form 7 check */ $active_plugins = get_option( 'active_plugins', array() ); if( !in_array( 'contact-form-7/wp-contact-form-7.php',$active_plugins ) ) { require_once( ABSPATH . 'wp-admin/includes/plugin.php' ); deactivate_plugins('WMAMC-cf7-address-autocomplete/WMAMC-cf7-address-autocomplete.php'); if( isset( $_GET['activate'] )) unset( $_GET['activate'] ); } class WMAMC_cf7_address_autocomplete { private $fields, $names; protected static $instance; protected $adminpage; protected $generator; public function __construct() { /* plugin activation */ register_activation_hook(__FILE__, array( $this, 'WMAMC_cf7_address_autocomplete_plugin_activate') ); /* plugin deactivation */ register_deactivation_hook(__FILE__, array( $this, 'WMAMC_cf7_address_autocomplete_plugin_deactivate') ); /* add address autocomplete field */ add_action('wpcf7_init', array($this, 'WMAMC_cf7_address_autocomplete_create_address_field')); /* create google place api menu under contacts menu */ add_action('admin_menu', array($this,'WMAMC_cf7_address_autocomplete_menu_item')); /* display fields on google place api page */ add_action('admin_init', array($this,'WMAMC_cf7_address_autocomplete_display_gpa_fields')); /* check version of contact form 7 */ add_action('admin_init', array($this,'WMAMC_cf7_address_autocomplete_wpcf7_version_check')); /* create tag for address autocomplete in admin panel*/ add_action( 'wpcf7_admin_init', array($this,'WMAMC_cf7_address_autocomplete_add_tag_generator'), 20 ); /* add shortcode for autocomplete field*/ add_action( 'wpcf7_init', array($this, 'WMAMC_cf7_address_autocomplete_shortcode_add')); /* validation for autocomplete field*/ add_filter( 'wpcf7_validate_address_geo_autocomplete', array($this, 'WMAMC_cf7_address_autocomplete_filter_validation' ), 10, 2); add_filter( 'wpcf7_validate_address_geo_autocomplete*', array($this, 'WMAMC_cf7_address_autocomplete_filter_validation' ), 10, 2); /* messages for address autocomplete field */ add_filter( 'wpcf7_messages', array($this, 'WMAMC_cf7_address_autocomplete_messages')); /* include plugin script*/ add_action( 'wp_footer', array($this,'WMAMC_cf7_gpa_plugin_script'), 21, 1 ); add_action('admin_init', array($this,'WMAMC_cf7_address_autocomplete_load_plugin')); /* load google api script*/ add_action( 'wp_enqueue_scripts', array($this,'WMAMC_cf7_gpa_load_user_api' )); /* Validation filter */ // end of construct function } /********************** check if current version of plugin ********************************************/ public function WMAMC_cf7_address_autocomplete_wpcf7_version_check() { $version = get_option( 'WMAMC_cf7_address_autocomplete_version' ); return version_compare($version, '1.0.0', '=') ? true : false; } /** * Display an error message when parent plugin is missing */ function WMAMC_cf7_address_autocomplete_self_deactivate_notice() { ?>
" . __( 'Please install and activate contact form 7 plugin before activating this plugin.', 'WMAMC_cf7_address_autocomplete_trdom' ) . ""; ?>
adminpage = add_submenu_page( 'wpcf7', __('Google Place API','google-place-api'), __('Google Place API','google-place-api'), 'manage_options', 'google-place-api', array($this, 'WMAMC_cf7_google_place_admin' ), 'dashicons-admin-post' ); } public function WMAMC_cf7_address_autocomplete_load_plugin() { /* do stuff once right after activation */ if (is_admin() && get_option('Activated_Plugin') == 'WMAMC-cf7-address-autocomplete') { delete_option( 'Activated_Plugin' ); if (!class_exists('WPCF7')) { add_action('admin_notices', array($this,'WMAMC_cf7_address_autocomplete_self_deactivate_notice')); /** Deactivate our plugin if contact form 7 is not installed ***/ deactivate_plugins(plugin_basename(__FILE__)); if (isset($_GET['activate'])) { unset($_GET['activate']); } } } } /*********************** creating google place api page in admin panel **********************************************************/ public function WMAMC_cf7_google_place_admin() { ?>

Google Places API Info.

true ) ); // end of function orem_cf7_address_autocomplete_create_address_field } /****************** handling autocomplete tag ***********************************************/ public function wpcf7_addrauto_form_tag_handler($tag) { /* $tag = new WPCF7_Shortcode($tag); */ if (empty($tag->name)) { return ''; } $validation_error = wpcf7_get_validation_error( $tag->name ); $class = wpcf7_form_controls_class( $tag->type, 'wpcf7-autocomplete' ); /* $class = wpcf7_form_controls_class( $tag->type ); */ if ( $validation_error ) { $class .= ' wpcf7-not-valid'; } $atts = array(); $atts['size'] = $tag->get_size_option( '40' ); $atts['maxlength'] = $tag->get_maxlength_option(); $atts['class'] = $tag->get_class_option( $class ); $atts['id'] = $tag->get_id_option(); $atts['tabindex'] = $tag->get_option( 'tabindex', 'int', true ); if ( $tag->has_option( 'readonly' ) ) { $atts['readonly'] = 'readonly'; } if ( $tag->is_required() ) { $atts['aria-required'] = 'true'; } $atts['aria-invalid'] = $validation_error ? 'true' : 'false'; if ( $tag->has_option( 'placeholder' ) ) { $place = $tag->get_option( 'placeholder', '[-0-9a-zA-Z_\s]+', true ); $place = str_replace("_", " ", $place); $atts['placeholder'] = $place; } $atts['type'] = 'text'; $atts['name'] = $tag->name; $atts = wpcf7_format_atts($atts); $this->fields[$tag->name] = $tag->values; $this->names[] = $tag->name; $html = sprintf( '%3$s', sanitize_html_class( $tag->name ), $atts, $validation_error ); return $html; // end of function wpcf7_addrauto_form_tag_handler } /******************** validating the autocomplete field ***************************************************/ public function WMAMC_cf7_address_autocomplete_filter_validation( $result, $tag ) { $tag = new WPCF7_Shortcode($tag); $name = $tag->name; $value = isset( $_POST[$name] ) ? trim( wp_unslash( strtr( (string) $_POST[$name], "\n", " " ) ) ) : ''; if ( $tag->is_required() && '' == $value) { $result->invalidate( $tag, wpcf7_get_message( 'invalid_required' ) ); } return $result; } /************************ tag is generated for address autocomplete *********************************************/ public function WMAMC_cf7_address_autocomplete_add_tag_generator() { if ( ! function_exists( 'wpcf7_add_tag_generator' ) ) return; wpcf7_add_tag_generator( 'address_geo_autocomplete', __( 'Address Autocomplete', 'WMAMC_cf7_address_autocomplete_trdom' ), 'tb-tg-pane-autocomplete', array($this, 'WMAMC_cf7_address_autocomplete_tag_generator_addrauto' ) ); } /****************** address autocomplete tag details and html genrated *********************************************************/ public function WMAMC_cf7_address_autocomplete_tag_generator_addrauto($contact_form, $args = '' ) { $args = wp_parse_args( $args, array() ); $type = 'address_geo_autocomplete'; $description = __( "Generate a form-tag for a group of autocomplete field.", 'WMAMC_cf7_address_autocomplete_trdom' ); $desc_link =""; ?>

array( 'description' => __( "The value selected is invalid.", 'WMAMC_cf7_address_autocomplete_trdom' ), 'default' => __( 'Autocomplete value seems invalid.', 'WMAMC_cf7_address_autocomplete_trdom' ) ), 'invalid_required' => array( 'description' => 'Please fill in the required field.', 'default' => 'Please fill in the required field.' ) ) ); } public function WMAMC_cf7_address_autocomplete_plugin_activate() { $user_permission = current_user_can( 'update_core' ); if ($user_permission == true) { add_option('Activated_Plugin', 'WMAMC-cf7-address-autocomplete'); } $version = get_option( 'WMAMC_cf7_address_autocomplete_version' ); if( version_compare($version, '5.0.1', '<')) { // Do some special things when we update to 5.0.1. } if ($user_permission == true) { update_option( 'WMAMC_cf7_address_autocomplete_version','1.0.0'); } // end of function orem_cf7_address_autocomplete_plugin_activate } public function WMAMC_cf7_address_autocomplete_plugin_deactivate() { // end of function orem_cf7_address_autocomplete_plugin_deactivate } public function WMAMC_cf7_address_autocomplete_instance() { if ( is_null( self::$instance ) ) { self::$instance = new self(); } return self::$instance; // end of function orem_cf7_address_autocomplete_instance } // end of class Orem_cf7_address_autocomplete } function WMAMC_cf7_address_autocomplete() { return WMAMC_cf7_address_autocomplete::WMAMC_cf7_address_autocomplete_instance(); } WMAMC_cf7_address_autocomplete(); ?>