<?php
/**
 * Google Services Tab
 * ===================
 *
 * @since 4.8.2
 */
if( ! defined( 'ABSPATH' ) ) {  exit;  }    // Exit if accessed directly

global $avia_config, $avia_pages, $avia_elements;



$avia_elements[] = array(
			'slug'	        => 'google',
			'type'          => 'visual_group_start',
			'id'            => 'avia_google_analytics_group_start',
			'nodescription' => true
		);

$avia_elements[] = array(
			'slug'          => 'google',
			'name'          => __( 'Google Analytics', 'avia_framework' ),
			'desc'          => '',
			'id'            => 'avia_google_analytics_heading',
			'type'          => 'heading',
			'std'           => '',
			'nodescription' => true
		);

$desc  = __( 'Either enter your Google Measurement ID - prior called Google Tracking ID (UA-XXXXX-X), (G-XXXXX) or your full Google Analytics tracking Code here.', 'avia_framework' );
$desc .= '<br><br>';
$desc .= __( 'If you want to offer your visitors the option to stop being tracked you can place the shortcode [av_privacy_google_tracking] somewhere on your site.', 'avia_framework' ) . ' ';
$desc .= __( 'More information and more privacy settings you find here:', 'avia_framework' ) . ' ';
$desc .= '<a href="' . admin_url( 'admin.php?page=avia#goto_cookie' )  . '">' . __( 'Privacy and Cookies', 'avia_framework' ) . '</a>';

$avia_elements[] =	array(
			'slug'  => 'google',
			'name'  => __( 'Google Measurement ID (Google Analytics Tracking Code)', 'avia_framework' ),
			'desc'  => $desc,
			'id'    => 'analytics',
			'type'	=> 'textarea',
			'std'	=> '',
			'class' => 'av_small_textarea',
		);

$avia_elements[] = array(
			'slug'          => 'google',
			'type'          => 'visual_group_end',
			'id'            => 'avia_google_analytics_group_ens',
			'nodescription' => true
		);

$avia_elements[] = array(
			'slug'	        => 'google',
			'type'          => 'visual_group_start',
			'id'            => 'avia_google_maps_group_start',
			'nodescription' => true
		);


$google_link = 'https://console.developers.google.com/flows/enableapi?apiid=maps_backend,geocoding_backend,directions_backend,distance_matrix_backend,elevation_backend,places_backend&keyType=CLIENT_SIDE&reusekey=true';
$tutorial_link = 'https://kriesi.at/documentation/enfold/how-to-register-a-google-maps-api-key/';


$avia_elements[] = array(
			'slug'		=> 'google',
			'name'		=> __( 'Google Maps', 'avia_framework' ),
			'desc'		=> __( 'Google Maps requires an API key for your website. If the map elements do not display correctly, register a key and enter it here.', 'avia_framework' ) . "<br><a href='{$google_link}' target='_blank' rel='noopener noreferrer'>" . __( 'Register an API Key', 'avia_framework' ) . "</a> | <a target='_blank' href='{$tutorial_link}' rel='noopener noreferrer'>" . __( 'Tutorial: How to create an API key', 'avia_framework' ) . '</a>',
			'id'		=> 'avia_gmaps_heading',
			'type'		=> 'heading',
			'std'		=> '',
			'nodescription' => true
		);

$avia_elements[] = array(
			'slug'		=> 'google',
			'name'		=> __( 'Enable Google Maps On Your Site', 'avia_framework' ),
			'desc'		=> __( 'Enable Google Maps on your site. When disabled, no Google Maps code is loaded on your pages.', 'avia_framework' ),
			'id'		=> 'gmap_enabled',
			'type'		=> 'select',
			'std'		=> 'disable_gmap',
			'no_first'	=> true,
			'subtype'	=> array(
								__( 'Disable Google Maps', 'avia_framework' )	=> 'disable_gmap',
								__( 'Use Google Maps', 'avia_framework' )		=> ''
							)
		);


$avia_elements[] = array(
			'slug'           => 'google',
			'name'           => __( 'Enter A Valid Google Maps API Key To Use All Map Related Theme Functions', 'avia_framework' ),
			'desc'           => '',
			'id'             => 'gmap_api',
			'type'           => 'verification_field',
			'std'            => '',
			'required'       => array( 'gmap_enabled', '' ),
			'ajax'           => 'av_maps_api_check',
			'js_callback'    => 'av_maps_js_api_check',
			'class'          => 'av_full_description',
			'button-label'   => __( 'Check API Key', 'avia_framework' ),
			'button-relabel' => __( ' Check API Key', 'avia_framework' )
		);

$avia_elements[] = array(
			'slug'      => 'google',
			'name'      => __( 'Last verify state - hidden - used for internal use only', 'avia_framework' ),
			'desc'      => '',
			'id'        => 'gmap_verify_state',
			'type'      => 'hidden',
			'std'       => ''
		);

$avia_elements[] = array(
			'slug'      => 'google',
			'name'      => __( 'Last verified keys - hidden - used for internal use only', 'avia_framework' ),
			'desc'      => '',
			'id'        => 'gmap_verified_key',
			'type'      => 'hidden',
			'std'       => '',
		);

$avia_elements[] = array(
			'slug'          => 'google',
			'type'          => 'visual_group_end',
			'id'            => 'avia_google_maps_group_end',
			'nodescription' => true
		);

$avia_elements[] = array(
			'slug'	        => 'google',
			'type'          => 'visual_group_start',
			'id'            => 'avia_google_recaptcha_group_start',
			'class'         => 'av-verify-button-container',
			'nodescription' => true
		);


$recaptcha = 'https://developers.google.com/recaptcha/intro';
$recaptcha_v3 = 'https://developers.google.com/recaptcha/docs/v3';
$recaptcha_admin = 'https://www.google.com/recaptcha/admin';
$recaptcha_doc = 'https://kriesi.at/documentation/enfold/contact-form/#captcha';

$recaptcha_desc  = __( 'Add Google reCAPTCHA widget functionality to the theme to verify if user is a human. Currently only enfold contact forms are supported and you can choose for each form individually if you want to use a reCAPTCHA.', 'avia_framework' ) . '<br />';
$recaptcha_desc .= sprintf( __( 'Info about <a href="%1$s" target="_blank" rel="noopener noreferrer">Google reCAPTCHA</a>. You need to create <a href="%2$s" target="_blank" rel="noopener noreferrer">API keys</a> for your site. Also check our <a href="%3$s" target="_blank" rel="noopener noreferrer">documentation.</a>', 'avia_framework' ), $recaptcha, $recaptcha_admin, $recaptcha_doc ) . '<br />';
$recaptcha_v3 = sprintf( __( 'Please keep in mind that Version 3 needs to <a href="%1$s" target="_blank" rel="noopener noreferrer">monitor user behaviour and collects user data</a>. In case the score does not recognize a human Version 2 checkbox will be used additionally for verification. Therefore you must also register V2 keys.', 'avia_framework' ), $recaptcha_v3 );
$recaptcha_score = __( 'A score of 1.0 is very likely a good interaction, 0.0 is very likely a bot. Google recommends a threshold of 0.5 by default. In case we encounter a non human we ask user to verify with Version 2 chckbox.', 'avia_framework' );

$avia_elements[] = array(
			'slug'          => 'google',
			'name'          => __( 'Google ReCAPTCHA','avia_framework' ),
			'desc'          => $recaptcha_desc,
			'id'            => 'avia_recaptcha',
			'type'          => 'heading',
			'std'           => '',
			'nodescription' => true
		);

$avia_elements[] = array(
			'slug'     => 'google',
			'name'     => __( 'Select If You Want To Use Google reCAPTCHA', 'avia_framework' ),
			'desc'     => $recaptcha_v3,
			'id'       => 'avia_recaptcha_version',
			'type'     => 'select',
			'no_first' => true,
			'std'      => '',
			'subtype'  => array(
								__( 'Disable reCAPTCHA', 'avia_framework' )     => '',
								__( 'reCAPTCHA Version 2', 'avia_framework' )   => 'avia_recaptcha_v2',
								__( 'reCAPTCHA Version 3 (needs V2 as fallback verification)', 'avia_framework' )   => 'avia_recaptcha_v3',
							)
		);

$avia_elements[] = array(
			'slug'     => 'google',
			'name'     => __( 'Site Key Version 2', 'avia_framework' ),
			'desc'     => __( 'Enter the reCAPTCHA v2 API site key here.', 'avia_framework' ),
			'id'       => 'avia_recaptcha_pkey_v2',
			'type'     => 'text',
			'std'      => '',
			'required' => array( 'avia_recaptcha_version', '{contains_array}avia_recaptcha_v2;avia_recaptcha_v3' ),
		);

$avia_elements[] = array(
			'slug'     => 'google',
			'name'     => __( 'Secret Key Version 2', 'avia_framework' ),
			'desc'     => __( 'Enter the reCAPTCHA v2 API secret key here.', 'avia_framework' ),
			'id'       => 'avia_recaptcha_skey_v2',
			'type'     => 'text',
			'std'      => '',
			'required' => array( 'avia_recaptcha_version', '{contains_array}avia_recaptcha_v2;avia_recaptcha_v3' ),
		);

$avia_elements[] = array(
			'slug'			=> 'google',
			'name'			=> '',
			'desc'			=> '',
			'id'			=> 'avia_recaptcha_key_verify_v2',
			'type'			=> 'verification_field',
			'std'			=> '',
			'required'		=> array( 'avia_recaptcha_version','{contains_array}avia_recaptcha_v2;avia_recaptcha_v3' ),
			'force_callback' => true,
			'input_ids'		=> array( 'avia_recaptcha_version', 'avia_recaptcha_pkey_v2', 'avia_recaptcha_skey_v2', 'avia_recaptcha_pkey_v3', 'avia_recaptcha_skey_v3' ),
			'ajax'			=> 'av_recaptcha_api_check',
			'js_callback'	=> 'av_recaptcha_js_api_check',
			'class'			=> 'av_full_description',
			'button-label'   => __( 'Check reCAPTCHA API Keys Version 2', 'avia_framework' ),
			'button-relabel' => __( ' Check reCAPTCHA API Keys Version 2', 'avia_framework' )
		);

$avia_elements[] = array(
			'slug'		=> 'google',
			'name'		=> __( 'Site Key Version 3', 'avia_framework' ),
			'desc'		=> __( 'Enter the reCAPTCHA v3 API site key here.', 'avia_framework' ),
			'id'		=> 'avia_recaptcha_pkey_v3',
			'type'		=> 'text',
			'std'		=> '',
			'required'	=> array( 'avia_recaptcha_version', 'avia_recaptcha_v3' ),
		);

$avia_elements[] = array(
			'slug'		=> 'google',
			'name'		=> __( 'Secret Key Version 3', 'avia_framework' ),
			'desc'		=> __( 'Enter the reCAPTCHA v3 API secret key here.', 'avia_framework' ),
			'id'		=> 'avia_recaptcha_skey_v3',
			'type'		=> 'text',
			'std'		=> '',
			'required'	=> array( 'avia_recaptcha_version', 'avia_recaptcha_v3' ),
		);

$numbers = array();
for( $i = 0; $i <= 10; $i++ )
{
	$numbers[ number_format( $i / 10.0, 1, ',', ' ' ) ] = (string) $i;
}

$avia_elements[] = array(
			'slug'     => 'google',
			'name'     => __( 'Select Score For Human', 'avia_framework' ),
			'desc'     => $recaptcha_score,
			'id'       => 'avia_recaptcha_score',
			'type'     => 'select',
			'std'      => '5',
			'no_first' => true,
			'required' => array( 'avia_recaptcha_version', 'avia_recaptcha_v3' ),
			'subtype'  => $numbers
		);

/**
 * @used_by				av_google_recaptcha
 * @since 4.6.2
 */
if( current_theme_supports( 'avia_recaptcha_show_legal_information' ) )
{
	$desc  = __( 'Select if you want to show the default Google badge or only a message below the submit button. This is mandatory if you want to use V3.', 'avia_framework' );
	$desc .= ' <a href="https://developers.google.com/recaptcha/docs/faq#id-like-to-hide-the-recaptcha-badge-what-is-allowed" target="_blank" rel="noopener noreferrer">' . __( 'See Google documentation', 'avia_framework' ) . '</a>.';

	$avia_elements[] = array(
				'slug'     => 'google',
				'name'     => __( 'Google Legal Information', 'avia_framework' ),
				'desc'     => $desc,
				'id'       => 'avia_recaptcha_badge',
				'type'     => 'select',
				'no_first' => true,
				'std'      => 'contact_only_message',
				'required' => array( 'avia_recaptcha_version', 'avia_recaptcha_v3' ),
				'subtype'  => array(
									__( 'Show default Google badge on all pages', 'avia_framework' )				=> '',
									__( 'Show a message string on contact form page instead', 'avia_framework' )	=> 'message',
									__( 'Show message string on contact form page only, hide badge on other pages', 'avia_framework' ) => 'contact_only_message',
									__( 'Hide badge and string completely on every page', 'avia_framework' )		=> 'hide'
								),
			);
}
else
{
	$desc = '<strong>' . __( 'Google Legal Information - for developers', 'avia_framework' ) . '</strong><br />';
	$desc .= __( 'If you want to change the default behaviour you can display a select box by adding to functions.php:', 'avia_framework' ) . '<br />';
	$desc .= 'add_theme_support( "avia_recaptcha_show_legal_information" );';

	$avia_elements[] =	array(
				'slug'		=> 'google',
				'name'		=> '',
				'desc'		=> $desc,
				'id'		=> 'avia_recaptcha_legal_description',
				'type'		=> 'heading',
				'std'		=> '',
				'nodescription' => true
			);

	$avia_elements[] = array(
				'slug'      => 'google',
				'name'      => __( 'Google Legal Information - hidden - uses default value', 'avia_framework' ),
				'desc'      => '',
				'id'        => 'avia_recaptcha_badge',
				'type'      => 'hidden',
				'std'       => 'contact_only_message'
			);
}

$avia_elements[] = array(
			'slug'           => 'google',
			'name'           => '',
			'desc'           => '',
			'id'             => 'avia_recaptcha_key_verify_v3',
			'type'           => 'verification_field',
			'std'            => '',
			'required'       => array( 'avia_recaptcha_version', 'avia_recaptcha_v3' ),
			'force_callback' => true,
			'input_ids'		 => array( 'avia_recaptcha_version', 'avia_recaptcha_pkey_v2', 'avia_recaptcha_skey_v2', 'avia_recaptcha_pkey_v3', 'avia_recaptcha_skey_v3' ),
			'ajax'           => 'av_recaptcha_api_check',
			'js_callback'    => 'av_recaptcha_js_api_check',
			'class'          => 'av_full_description',
			'button-label'   => __( 'Check reCAPTCHA API Keys V3', 'avia_framework' ),
			'button-relabel' => __( ' Check reCAPTCHA API Keys V3', 'avia_framework' )
		);

$avia_elements[] = array(
			'slug'      => 'google',
			'name'      => __( 'Last verified keys - hidden - used for internal use only', 'avia_framework' ),
			'desc'      => '',
			'id'        => 'recaptcha_verified_keys_v2',
			'type'      => 'hidden',
			'std'       => ''
		);

$avia_elements[] = array(
			'slug'      => 'google',
			'name'      => __( 'Last verified keys - hidden - used for internal use only', 'avia_framework' ),
			'desc'      => '',
			'id'        => 'recaptcha_verified_keys_v3',
			'type'      => 'hidden',
			'std'       => ''
		);

$avia_elements[] = array(
			'slug'          => 'google',
			'type'          => 'visual_group_end',
			'id'            => 'avia_google_recaptcha_group_end',
			'nodescription' => true
		);

