2019-09-10 06:27:33 +02:00
< ? php
/**
* $Desc $
*
* @ version $Id $
* @ package opalestate
* @ author Opal Team < info @ wpopal . com >
* @ copyright Copyright ( C ) 2019 wpopal . com . All Rights Reserved .
* @ license GNU / GPL v2 or later http :// www . gnu . org / licenses / gpl - 2.0 . html
*
* @ website http :// www . wpopal . com
* @ support http :// www . wpopal . com / support / forum . html
*/
if ( ! defined ( 'ABSPATH' ) ) {
exit ; // Exit if accessed directly
}
/**
* @ class OpalEstate_Nocaptcha_Recaptcha
*
* @ version 1.0
*/
class OpalEstate_Nocaptcha_Recaptcha {
/**
* OpalEstate_Nocaptcha_Recaptcha constructor .
*/
public function __construct () {
if ( is_admin () ) {
add_filter ( 'opalestate_settings_3rd_party_subtabs_nav' , [ $this , 'admin_tab_setting' ] );
add_filter ( 'opalestate_settings_3rd_party_subtabs_google_captcha_page_fields' , [ $this , 'admin_content_setting' ] );
}
if ( opalestate_options ( 'show_captcha' ) == 'on' ) {
define ( 'WPOPAL_CAPTCHA_LOAED' , true );
$this -> theme = opalestate_options ( 'captcha_theme' , 'light' );
add_action ( 'wp_head' , [ $this , 'add_custom_styles' ] );
add_action ( 'opalestate_message_form_after' , [ __CLASS__ , 'show_captcha' ] );
add_action ( 'opalestate_process_send_email_before' , [ __CLASS__ , 'ajax_verify_captcha' ] );
}
}
/**
*
*/
public function add_custom_styles () {
$lang = null ;
echo '<script src="https://www.google.com/recaptcha/api.js?render=reCAPTCHA_' . opalestate_options ( 'site_key' ) . '" async defer></script>' . " \r \n " ;
}
/**
*
*/
public static function show_captcha () {
if ( isset ( $_GET [ 'captcha' ] ) && $_GET [ 'captcha' ] == 'failed' ) {
}
echo '<div style="transform:scale(0.77);-webkit-transform:scale(0.77);transform-origin:0 0;-webkit-transform-origin:0 0;" class="g-recaptcha" data-sitekey="' . opalestate_options ( 'site_key' ) . '" data-theme="' . opalestate_options ( 'captcha_theme' ,
'light' ) . '"></div>' ;
}
/**
*
*/
public static function ajax_verify_captcha () {
$response = isset ( $_POST [ 'g-recaptcha-response' ] ) ? esc_attr ( $_POST [ 'g-recaptcha-response' ] ) : '' ;
$remote_ip = $_SERVER [ " REMOTE_ADDR " ];
// make a GET request to the Google reCAPTCHA Server
$request = wp_remote_get (
'https://www.google.com/recaptcha/api/siteverify?secret=' . opalestate_options ( 'secret_key' ) . '&response=' . $response . '&remoteip=' . $remote_ip
);
// get the request response body
$response_body = wp_remote_retrieve_body ( $request );
$result = json_decode ( $response_body , true );
if ( isset ( $result [ 'hostname' ] ) && ! empty ( $result [ 'hostname' ] ) && empty ( $result [ 'success' ] ) ) {
$result [ 'success' ] = 1 ;
}
if ( ! $result [ 'success' ] ) {
$return = [ 'status' => false , 'msg' => esc_html__ ( 'The captcha is not verified, please try again!' , 'opalestate-pro' ) ];
echo json_encode ( $return );
die ();
}
}
/**
*
*/
public function admin_content_setting ( $fields ) {
$fields = apply_filters ( 'opalestate_settings_google_captcha' , [
[
'name' => esc_html__ ( 'Show Captcha In Form' , 'opalestate-pro' ),
'desc' => __ ( 'Enable google captch in contact , register form. After Set yes, you change setting in Google Captcha Tab. Register here:<a href="https://www.google.com/recaptcha/admin" target="_blank"> https://www.google.com/recaptcha/admin</a> Version 2' ,
'opalestate-pro' ),
'id' => 'show_captcha' ,
'type' => 'switch' ,
'options' => [
'off' => esc_html__ ( 'No' , 'opalestate-pro' ),
'on' => esc_html__ ( 'Yes' , 'opalestate-pro' ),
],
2019-09-25 03:44:27 +02:00
'default' => 'on' ,
2019-09-10 06:27:33 +02:00
],
[
'name' => esc_html__ ( 'Google Captcha page Settings' , 'opalestate-pro' ),
'desc' => '<hr>' ,
'id' => 'opalestate_title_google_captcha_settings' ,
'type' => 'title' ,
],
[
'name' => esc_html__ ( 'Site Key' , 'opalestate-pro' ),
2019-10-31 11:19:06 +01:00
'desc' => esc_html__ ( 'Used for displaying the CAPTCHA.' , 'opalestate-pro' ),
2019-09-10 06:27:33 +02:00
'id' => 'site_key' ,
'type' => 'text' ,
],
[
'name' => esc_html__ ( 'Secret key' , 'opalestate-pro' ),
'desc' => esc_html__ ( 'Used for communication between your site and Google. Grab it.' , 'opalestate-pro' ),
'id' => 'secret_key' ,
'type' => 'text' ,
],
[
'name' => esc_html__ ( 'Theme' , 'opalestate-pro' ),
'desc' => esc_html__ ( 'Display captcha box with color style.' , 'opalestate-pro' ),
'id' => 'captcha_theme' ,
'type' => 'select' ,
'options' => [
'light' => esc_html__ ( 'Light' , 'opalestate-pro' ),
'dark' => esc_html__ ( 'Dark' , 'opalestate-pro' ),
],
],
] );
return $fields ;
}
/**
*
*/
public function admin_tab_setting ( $tabs ) {
$tabs [ 'google_captcha_page' ] = esc_html__ ( 'Google Captcha' , 'opalestate-pro' );
return $tabs ;
}
}
new OpalEstate_Nocaptcha_Recaptcha ();