PluginProbe ʕ •ᴥ•ʔ
reCaptcha by BestWebSoft / 1.59
reCaptcha by BestWebSoft v1.59
1.79 1.80 1.82 1.83 1.84 1.85 1.86 1.87 trunk 1.01 1.02 1.03 1.04 1.05 1.06 1.07 1.08 1.09 1.10 1.11 1.12 1.13 1.14 1.15 1.16 1.17 1.18 1.19 1.20 1.21 1.22 1.23 1.24 1.25 1.26 1.27 1.28 1.29 1.30 1.31 1.32 1.33 1.34 1.35 1.36 1.37 1.38 1.39 1.40 1.41 1.42 1.43 1.44 1.45 1.46 1.47 1.48 1.49 1.50 1.51 1.52 1.53 1.54 1.55 1.56 1.57 1.58 1.59 1.60 1.61 1.62 1.63 1.64 1.65 1.66 1.67 1.68 1.70 1.71 1.72 1.73 1.74 1.75 1.78
google-captcha / includes / forms.php
google-captcha / includes Last commit date
allowlist.php 5 years ago class-gglcptch-settings-tabs.php 5 years ago forms.php 5 years ago pro_banners.php 5 years ago
forms.php
394 lines
1 <?php
2 /**
3 * Contains the extending functionality
4 * @since 1.32
5 */
6 if ( ! function_exists( 'gglcptch_get_forms' ) ) {
7 function gglcptch_get_forms() {
8 global $gglcptch_forms;
9
10 $default_forms = array(
11 'login_form' => array( 'form_name' => __( 'Login form', 'google-captcha' ) ),
12 'registration_form' => array( 'form_name' => __( 'Registration form', 'google-captcha' ) ),
13 'reset_pwd_form' => array( 'form_name' => __( 'Reset password form', 'google-captcha' ) ),
14 'comments_form' => array( 'form_name' => __( 'Comments form', 'google-captcha' ) ),
15 'contact_form' => array( 'form_name' => 'Contact Form' ),
16 'testimonials' => array( 'form_name' => __( 'Testimonials', 'google-captcha' ) )
17 );
18
19 $custom_forms = apply_filters( 'gglcptch_add_custom_form', array() );
20 $gglcptch_forms = array_merge( $default_forms, $custom_forms );
21
22 foreach ( $gglcptch_forms as $form_slug => $form_data ) {
23 $gglcptch_forms[ $form_slug ]['form_notice'] = gglcptch_get_form_notice( $form_slug );
24 }
25
26 $gglcptch_forms = apply_filters( 'gglcptch_forms', $gglcptch_forms );
27
28 return $gglcptch_forms;
29 }
30 }
31
32 if ( ! function_exists( 'gglcptch_get_sections' ) ) {
33 function gglcptch_get_sections() {
34 global $gglcptch_sections;
35
36 $default_sections = array(
37 'standard' => array(
38 'name' => __( 'WordPress default', 'google-captcha' ),
39 'forms' => array(
40 'login_form',
41 'registration_form',
42 'reset_pwd_form',
43 'comments_form'
44 )
45 ),
46 'external' => array(
47 'name' => __( 'External Plugins', 'google-captcha' ),
48 'forms' => array(
49 'contact_form',
50 'testimonials'
51 )
52 )
53 );
54
55 $custom_forms = apply_filters( 'gglcptch_add_custom_form', array() );
56
57 $custom_sections = ( empty( $custom_forms ) ) ? array() : array( 'custom' => array( 'name' => __( 'Custom Forms', 'google-captcha' ), 'forms' => array_keys( $custom_forms ) ) );
58 $gglcptch_sections = array_merge( $default_sections, $custom_sections );
59
60 foreach ( $gglcptch_sections as $section_slug => $section_data ) {
61 $gglcptch_sections[ $section_slug ]['section_notice'] = gglcptch_get_section_notice( $section_slug );
62 }
63
64 $gglcptch_sections = apply_filters( 'gglcptch_sections', $gglcptch_sections );
65
66 return $gglcptch_sections;
67 }
68 }
69
70 /* Add reCaptcha forms to the Limit Attempts plugin */
71 if ( ! function_exists( 'gglcptch_add_lmtttmpts_forms' ) ) {
72 function gglcptch_add_lmtttmpts_forms( $forms = array() ) {
73 if ( ! is_array( $forms ) ) {
74 $forms = array();
75 }
76
77 $forms["gglcptch"] = array(
78 'name' => __( 'reCaptcha Plugin', 'google-captcha' ),
79 'forms' => array(),
80 );
81
82 $recaptcha_forms = gglcptch_get_forms();
83
84 foreach ( $recaptcha_forms as $form_slug => $form_data ) {
85 $forms["gglcptch"]["forms"]["{$form_slug}_recaptcha_check"] = $form_data;
86 if ( empty( $form_data['form_notice'] ) ) {
87 $forms["gglcptch"]["forms"]["{$form_slug}_recaptcha_check"]['form_notice'] = gglcptch_get_section_notice( $form_slug );
88 }
89 }
90
91 return $forms;
92 }
93 }
94
95 /**
96 * Display section notice
97 * @access public
98 * @param $section_slug string
99 * @return array The action results
100 */
101 if ( ! function_exists( 'gglcptch_get_section_notice' ) ) {
102 function gglcptch_get_section_notice( $section_slug = '' ) {
103 $section_notice = "";
104 $plugins = array(
105 /* example: */
106 /* 'bbpress' => 'bbpress/bbpress.php' */
107 );
108
109 $is_network_admin = is_network_admin();
110
111 if ( isset( $plugins[ $section_slug ] ) ) {
112 $slug = explode( '/', $plugins[ $section_slug ] );
113 $slug = $slug[0];
114 $plugin_info = gglcptch_plugin_status( $plugins[ $section_slug ], get_plugins(), $is_network_admin );
115 if ( 'deactivated' == $plugin_info['status'] ) {
116 $section_notice = '<a href="' . self_admin_url( 'plugins.php' ) . '">' . __( 'Activate', 'google-captcha' ) . '</a>';
117 } elseif ( 'not_installed' == $plugin_info['status'] ) {
118 $section_notice = sprintf( '<a href="http://wordpress.org/plugins/%s/" target="_blank">%s</a>', $slug, __( 'Install Now', 'google-captcha' ) );
119 }
120 }
121
122 return apply_filters( 'gglcptch_section_notice', $section_notice, $section_slug );
123 }
124 }
125
126 if ( ! function_exists( 'gglcptch_get_form_notice' ) ) {
127 function gglcptch_get_form_notice( $form_slug = '' ) {
128 global $wp_version, $gglcptch_plugin_info;
129 $form_notice = "";
130
131 $plugins = array(
132 'contact_form' => array( 'contact-form-plugin/contact_form.php', 'contact-form-pro/contact_form_pro.php' ),
133 'testimonials' => 'bws-testimonials/bws-testimonials.php',
134 );
135
136 if ( isset( $plugins[ $form_slug ] ) ) {
137 $plugin_info = gglcptch_plugin_status( $plugins[ $form_slug ], get_plugins(), is_network_admin() );
138
139 if ( 'deactivated' == $plugin_info['status'] ) {
140 $form_notice = '<a href="' . self_admin_url( 'plugins.php' ) . '">' . __( 'Activate', 'google-captcha' ) . '</a>';
141 } elseif ( 'not_installed' == $plugin_info['status'] ) {
142 if ( 'contact_form' == $form_slug ) {
143 $form_notice = '<a href="https://bestwebsoft.com/products/wordpress/plugins/contact-form/?k=fa26df3911ebcd90c3e85117d6dd0ce0&pn=281&v=' . $gglcptch_plugin_info["Version"] . '&wp_v=' . $wp_version . '" target="_blank">' . __( 'Install Now', 'google-captcha' ) . '</a>';
144 } else {
145 $slug = explode( '/', $plugins[ $form_slug ] );
146 $slug = $slug[0];
147 $form_notice = sprintf( '<a href="http://wordpress.org/plugins/%s/" target="_blank">%s</a>', $slug, __( 'Install Now', 'google-captcha' ) );
148 }
149 }
150 }
151 return apply_filters( 'gglcptch_form_notice', $form_notice, $form_slug );
152 }
153 }
154
155 if ( ! function_exists( 'gglcptch_add_actions' ) ) {
156 function gglcptch_add_actions() {
157 global $gglcptch_options;
158
159 $is_user_logged_in = is_user_logged_in();
160
161 if ( ! empty( $gglcptch_options['login_form'] ) || ! empty( $gglcptch_options['reset_pwd_form'] ) || ! empty( $gglcptch_options['registration_form'] ) ) {
162
163 if ( gglcptch_is_recaptcha_required( 'login_form', $is_user_logged_in ) ) {
164 add_action( 'login_form', 'gglcptch_login_display' );
165 add_action( 'authenticate', 'gglcptch_login_check', 21, 1 );
166 }
167
168 if ( gglcptch_is_recaptcha_required( 'registration_form', $is_user_logged_in ) ) {
169 if ( ! is_multisite() ) {
170 add_action( 'register_form', 'gglcptch_login_display', 99 );
171 add_action( 'registration_errors', 'gglcptch_register_check', 10, 1 );
172 } else {
173 add_action( 'signup_extra_fields', 'gglcptch_signup_display' );
174 add_action( 'signup_blogform', 'gglcptch_signup_display' );
175 add_filter( 'wpmu_validate_user_signup', 'gglcptch_signup_check', 10, 3 );
176 }
177 }
178
179 if ( gglcptch_is_recaptcha_required( 'reset_pwd_form', $is_user_logged_in ) ) {
180 add_action( 'lostpassword_form', 'gglcptch_login_display' );
181 add_action( 'allow_password_reset', 'gglcptch_lostpassword_check' );
182 }
183 }
184
185 /* Add Google Captcha to WP comments */
186 if ( gglcptch_is_recaptcha_required( 'comments_form', $is_user_logged_in ) ) {
187 add_action( 'comment_form_after_fields', 'gglcptch_commentform_display' );
188 add_action( 'comment_form_logged_in_after', 'gglcptch_commentform_display' );
189 add_action( 'pre_comment_on_post', 'gglcptch_commentform_check' );
190 }
191
192 /* Add Google Captcha to Contact Form by BestWebSoft */
193 if ( gglcptch_is_recaptcha_required( 'contact_form', $is_user_logged_in ) ) {
194 add_filter( 'cntctfrm_display_captcha', 'gglcptch_display', 10, 1 );
195 add_filter( 'cntctfrm_check_form', 'gglcptch_contact_form_check' );
196 }
197
198 /* Add Google Captcha to Testimonials by BestWebSoft */
199 if ( gglcptch_is_recaptcha_required( 'testimonials', $is_user_logged_in ) ) {
200 add_filter( 'tstmnls_display_recaptcha', 'gglcptch_display', 10, 0 );
201 }
202 }
203 }
204
205 /* Echo google captcha */
206 if ( ! function_exists( 'gglcptch_echo_recaptcha' ) ) {
207 function gglcptch_echo_recaptcha( $content = '' ) {
208 echo gglcptch_display( $content );
209 }
210 }
211
212 /* Add google captcha to the login form */
213 if ( ! function_exists( 'gglcptch_login_display' ) ) {
214 function gglcptch_login_display() {
215
216 global $gglcptch_options;
217
218 if ( isset( $gglcptch_options['recaptcha_version'] ) ) {
219 if ( 'v2' == $gglcptch_options['recaptcha_version'] ) {
220 $from_width = 302;
221 } else {
222 $from_width = 320;
223 } ?>
224 <style type="text/css" media="screen">
225 .login-action-login #loginform,
226 .login-action-lostpassword #lostpasswordform,
227 .login-action-register #registerform {
228 width: <?php echo $from_width; ?>px !important;
229 }
230 #login_error,
231 .message {
232 width: <?php echo $from_width + 20; ?>px !important;
233 }
234 .login-action-login #loginform .gglcptch,
235 .login-action-lostpassword #lostpasswordform .gglcptch,
236 .login-action-register #registerform .gglcptch {
237 margin-bottom: 10px;
238 }
239 </style>
240 <?php }
241 echo gglcptch_display();
242 return true;
243 }
244 }
245
246 /* Check google captcha in login form */
247 if ( ! function_exists( 'gglcptch_login_check' ) ) {
248 function gglcptch_login_check( $user ) {
249 global $gglcptch_check;
250 if ( gglcptch_is_woocommerce_page() )
251 return $user;
252 if ( is_wp_error( $user ) && isset( $user->errors["empty_username"] ) && isset( $user->errors["empty_password"] ) )
253 return $user;
254 /* Skip check if connecting to XMLRPC */
255 if ( defined( 'XMLRPC_REQUEST' ) )
256 return $user;
257
258 $gglcptch_check = gglcptch_check( 'login_form' );
259
260 if ( ! $gglcptch_check['response'] ) {
261 if ( $gglcptch_check['reason'] == 'VERIFICATION_FAILED' ) {
262 wp_clear_auth_cookie();
263 }
264 $error_code = ( is_wp_error( $user ) ) ? $user->get_error_code() : 'incorrect_password';
265 $errors = new WP_Error( $error_code, __( 'Authentication failed.', 'google-captcha' ) );
266 $gglcptch_errors = $gglcptch_check['errors']->errors;
267 foreach ( $gglcptch_errors as $code => $messages ) {
268 foreach ( $messages as $message ) {
269 $errors->add( $code, $message );
270 }
271 }
272 $gglcptch_check['errors'] = $errors;
273 return $gglcptch_check['errors'];
274 }
275 return $user;
276 }
277 }
278
279 /* Check google captcha in registration form */
280 if ( ! function_exists( 'gglcptch_register_check' ) ) {
281 function gglcptch_register_check( $allow ) {
282 if ( gglcptch_is_woocommerce_page() )
283 return $allow;
284 /* Skip check if connecting to XMLRPC */
285 if ( defined( 'XMLRPC_REQUEST' ) )
286 return $allow;
287
288 $gglcptch_check = gglcptch_check( 'registration_form' );
289 if ( ! $gglcptch_check['response'] ) {
290 return $gglcptch_check['errors'];
291 }
292 $_POST['g-recaptcha-response-check'] = true;
293 return $allow;
294 }
295 }
296
297 /* Check google captcha in lostpassword form */
298 if ( ! function_exists( 'gglcptch_lostpassword_check' ) ) {
299 function gglcptch_lostpassword_check( $allow ) {
300 if ( gglcptch_is_woocommerce_page() || ( isset( $_POST['g-recaptcha-response-check'] ) && true === $_POST['g-recaptcha-response-check'] ) )
301 return $allow;
302 $gglcptch_check = gglcptch_check( 'reset_pwd_form' );
303 if ( ! $gglcptch_check['response'] ) {
304 return $gglcptch_check['errors'];
305 }
306 return $allow;
307 }
308 }
309
310 /* Add google captcha to the multisite login form */
311 if ( ! function_exists( 'gglcptch_signup_display' ) ) {
312 function gglcptch_signup_display( $errors ) {
313 if ( $error_message = $errors->get_error_message( 'gglcptch_error' ) ) {
314 printf( '<p class="error gglcptch_error">%s</p>', $error_message );
315 }
316 if ( $error_message = $errors->get_error_message( 'lmttmpts_error' ) ) {
317 printf( '<p class="error lmttmpts_error">%s</p>', $error_message );
318 }
319 echo gglcptch_display();
320 }
321 }
322
323 /* Check google captcha in multisite login form */
324 if ( ! function_exists( 'gglcptch_signup_check' ) ) {
325 function gglcptch_signup_check( $result ) {
326 global $current_user;
327 if ( is_admin() && ! defined( 'DOING_AJAX' ) && ! empty( $current_user->data->ID ) )
328 return $result;
329 $gglcptch_check = gglcptch_check( 'registration_form' );
330 if ( ! $gglcptch_check['response'] ) {
331 $result['errors'] = $gglcptch_check['errors'];
332 return $result;
333 }
334 return $result;
335 }
336 }
337
338 /* Add google captcha to the comment form */
339 if ( ! function_exists( 'gglcptch_commentform_display' ) ) {
340 function gglcptch_commentform_display() {
341 if ( gglcptch_is_hidden_for_role() ) {
342 return;
343 }
344 echo gglcptch_display();
345 return true;
346 }
347 }
348
349 /* Check JS enabled for comment form */
350 if ( ! function_exists( 'gglcptch_commentform_check' ) ) {
351 function gglcptch_commentform_check() {
352 $gglcptch_check = gglcptch_check( 'comments_form' );
353 if ( ! $gglcptch_check['response'] ) {
354 $message = gglcptch_get_message($gglcptch_check['reason']) . "<br />";
355 $error_message = sprintf(
356 '<strong>%s</strong>:&nbsp;%s&nbsp;%s',
357 __( 'Error', 'google-captcha' ),
358 $message,
359 __( 'Click the BACK button on your browser and try again.', 'google-captcha' )
360 );
361 wp_die( $error_message );
362 }
363 return;
364 }
365 }
366
367 /* Check google captcha in BWS Contact Form */
368 if ( ! function_exists( 'gglcptch_contact_form_check' ) ) {
369 function gglcptch_contact_form_check( $allow = true ) {
370 if ( ! $allow || is_string( $allow ) || is_wp_error( $allow ) ) {
371 return $allow;
372 }
373 $gglcptch_check = gglcptch_check( 'contact_form' );
374 if ( ! $gglcptch_check['response'] ) {
375 return $gglcptch_check['errors'];
376 }
377 return $allow;
378 }
379 }
380
381 /* Check google captcha in BWS Testimonials */
382 if ( ! function_exists( 'gglcptch_testimonials_check' ) ) {
383 function gglcptch_testimonials_check( $allow = true ) {
384 global $gglcptch_check;
385 if ( ! $allow || is_string( $allow ) || is_wp_error( $allow ) ) {
386 return $allow;
387 }
388 $gglcptch_check = gglcptch_check( 'testimonials' );
389 if ( ! $gglcptch_check['response'] ) {
390 return $gglcptch_check['errors'];
391 }
392 return $allow;
393 }
394 }