<?php
class PP_ReCaptcha
{
private $secret_key;
private $validate_type;
private $response;
protected $is_success = false;
protected $error = false;
public function __construct($secret_key, $validate_type, $response)
{
$this->secret_key = $secret_key;
$this->validate_type = $validate_type;
$this->response = $response;
require_once POWERPACK_ELEMENTS_PATH . 'includes/vendor/recaptcha/autoload.php';
$this->verify_recaptcha();
}
private function verify_recaptcha()
{
if (function_exists('curl_exec')) {
$recaptcha = new \ReCaptcha\ReCaptcha($this->secret_key, new \ReCaptcha\RequestMethod\CurlPost());
} else {
$recaptcha = new \ReCaptcha\ReCaptcha($this->secret_key);
}
if ('invisible_v3' === $this->validate_type) {
$response = $recaptcha->setExpectedHostname($_SERVER['SERVER_NAME'])->setExpectedAction('Form')->setScoreThreshold(0.5)->verify($this->response, $_SERVER['REMOTE_ADDR']);
} else {
$response = $recaptcha->verify($this->response, $_SERVER['REMOTE_ADDR']);
}
if (!$response->isSuccess()) {
$this->is_success = false;
$error_codes = array();
foreach ($response->getErrorCodes() as $code) {
$error_codes[] = $code;
}
$this->error = implode(' | ', $error_codes);
} else {
$this->is_success = true;
$this->error = false;
}
}
public function is_success()
{
return $this->is_success;
}
public function get_error_message()
{
return $this->error;
}
}