Captcha()
Description #
The reCaptcha class.
Source #
File: addons/recaptcha/recaptcha.php
class Captcha extends \AnsPress\Singleton {
/**
* Instance of this class.
*
* @var object
* @since 4.1.8
*/
protected static $instance = null;
/**
* Initialize the plugin by setting localization and loading public scripts
* and styles.
*
* @since 2.4.8 Removed `$ap` args.
*/
protected function __construct() {
ap_add_default_options(
array(
'recaptcha_method' => 'post',
'recaptcha_exclude_roles' => array( 'ap_moderator' => 1 ),
)
);
anspress()->add_filter( 'ap_settings_menu_features_groups', $this, 'add_to_settings_page' );
anspress()->add_action( 'ap_form_options_features_recaptcha', $this, 'options' );
anspress()->add_action( 'wp_enqueue_scripts', $this, 'enqueue_scripts' );
anspress()->add_action( 'ap_question_form_fields', $this, 'ap_question_form_fields', 10, 2 );
anspress()->add_action( 'ap_answer_form_fields', $this, 'ap_question_form_fields', 10, 2 );
anspress()->add_action( 'ap_comment_form_fields', $this, 'ap_question_form_fields', 10, 2 );
}
/**
* Enqueue script.
*
* @return void
* @since 4.1.9
*/
public function enqueue_scripts() {
wp_enqueue_script( 'ap-recaptcha', ANSPRESS_URL . 'addons/recaptcha/script.js', array(), AP_VERSION, true );
}
/**
* Add tags settings to features settings page.
*
* @param array $groups Features settings group.
* @return array
* @since 4.2.0
*/
public function add_to_settings_page( $groups ) {
$groups['recaptcha'] = array(
'label' => __( 'reCaptcha', 'anspress-question-answer' ),
);
return $groups;
}
/**
* Register Categories options
*/
public function options() {
global $wp_roles;
$opt = ap_opt();
$roles = array();
foreach ( $wp_roles->roles as $key => $role ) {
$roles[ $key ] = $role['name'];
}
$form = array(
'fields' => array(
'recaptcha_site_key' => array(
'label' => __( 'Recaptcha site key', 'anspress-question-answer' ),
'desc' => __( 'Enter your site key, if you dont have it get it from here https://www.google.com/recaptcha/admin', 'anspress-question-answer' ),
'value' => $opt['recaptcha_site_key'],
),
'recaptcha_secret_key' => array(
'label' => __( 'Recaptcha secret key', 'anspress-question-answer' ),
'desc' => __( 'Enter your secret key', 'anspress-question-answer' ),
'value' => $opt['recaptcha_secret_key'],
),
'recaptcha_method' => array(
'label' => __( 'Recaptcha Method', 'anspress-question-answer' ),
'desc' => __( 'Select method to use when verification keeps failing', 'anspress-question-answer' ),
'type' => 'select',
'options' => array(
'curl' => 'CURL',
'post' => 'POST',
),
'value' => $opt['recaptcha_method'],
),
'recaptcha_exclude_roles' => array(
'label' => __( 'Hide reCaptcha for roles', 'anspress-question-answer' ),
'desc' => __( 'Select roles for which reCaptcha will be hidden.', 'anspress-question-answer' ),
'type' => 'checkbox',
'options' => $roles,
'value' => $opt['recaptcha_exclude_roles'],
),
),
);
return $form;
}
/**
* Add captcha field in question and answer form.
*
* @param array $form Form arguments.
* @return array
* @since 4.1.0
*/
public function ap_question_form_fields( $form ) {
if ( ap_show_captcha_to_user() ) {
$form['fields']['captcha'] = array(
'label' => __( 'Prove that you are a human', 'anspress-question-answer' ),
'type' => 'captcha',
'order' => 100,
);
}
return $form;
}
}
Expand full source code Collapse full source code View on GitHub: addons/recaptcha/recaptcha.php:34
Add your comment