PluginProbe ʕ •ᴥ•ʔ
reCaptcha by BestWebSoft / 1.55
reCaptcha by BestWebSoft v1.55
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
class-gglcptch-settings-tabs.php 6 years ago forms.php 6 years ago pro_banners.php 6 years ago whitelist.php 6 years ago
forms.php
386 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
255 $gglcptch_check = gglcptch_check( 'login_form' );
256
257 if ( ! $gglcptch_check['response'] ) {
258 if ( $gglcptch_check['reason'] == 'VERIFICATION_FAILED' ) {
259 wp_clear_auth_cookie();
260 }
261 $error_code = ( is_wp_error( $user ) ) ? $user->get_error_code() : 'incorrect_password';
262 $errors = new WP_Error( $error_code, __( 'Authentication failed.', 'google-captcha' ) );
263 $gglcptch_errors = $gglcptch_check['errors']->errors;
264 foreach ( $gglcptch_errors as $code => $messages ) {
265 foreach ( $messages as $message ) {
266 $errors->add( $code, $message );
267 }
268 }
269 $gglcptch_check['errors'] = $errors;
270 return $gglcptch_check['errors'];
271 }
272 return $user;
273 }
274 }
275
276 /* Check google captcha in registration form */
277 if ( ! function_exists( 'gglcptch_register_check' ) ) {
278 function gglcptch_register_check( $allow ) {
279 if ( gglcptch_is_woocommerce_page() )
280 return $allow;
281 $gglcptch_check = gglcptch_check( 'registration_form' );
282 if ( ! $gglcptch_check['response'] ) {
283 return $gglcptch_check['errors'];
284 }
285 return $allow;
286 }
287 }
288
289 /* Check google captcha in lostpassword form */
290 if ( ! function_exists( 'gglcptch_lostpassword_check' ) ) {
291 function gglcptch_lostpassword_check( $allow ) {
292 if ( gglcptch_is_woocommerce_page() )
293 return $allow;
294 $gglcptch_check = gglcptch_check( 'reset_pwd_form' );
295 if ( ! $gglcptch_check['response'] ) {
296 return $gglcptch_check['errors'];
297 }
298 return $allow;
299 }
300 }
301
302 /* Add google captcha to the multisite login form */
303 if ( ! function_exists( 'gglcptch_signup_display' ) ) {
304 function gglcptch_signup_display( $errors ) {
305 if ( $error_message = $errors->get_error_message( 'gglcptch_error' ) ) {
306 printf( '<p class="error gglcptch_error">%s</p>', $error_message );
307 }
308 if ( $error_message = $errors->get_error_message( 'lmttmpts_error' ) ) {
309 printf( '<p class="error lmttmpts_error">%s</p>', $error_message );
310 }
311 echo gglcptch_display();
312 }
313 }
314
315 /* Check google captcha in multisite login form */
316 if ( ! function_exists( 'gglcptch_signup_check' ) ) {
317 function gglcptch_signup_check( $result ) {
318 global $current_user;
319 if ( is_admin() && ! defined( 'DOING_AJAX' ) && ! empty( $current_user->data->ID ) )
320 return $result;
321 $gglcptch_check = gglcptch_check( 'registration_form' );
322 if ( ! $gglcptch_check['response'] ) {
323 $result['errors'] = $gglcptch_check['errors'];
324 return $result;
325 }
326 return $result;
327 }
328 }
329
330 /* Add google captcha to the comment form */
331 if ( ! function_exists( 'gglcptch_commentform_display' ) ) {
332 function gglcptch_commentform_display() {
333 if ( gglcptch_is_hidden_for_role() ) {
334 return;
335 }
336 echo gglcptch_display();
337 return true;
338 }
339 }
340
341 /* Check JS enabled for comment form */
342 if ( ! function_exists( 'gglcptch_commentform_check' ) ) {
343 function gglcptch_commentform_check() {
344 $gglcptch_check = gglcptch_check( 'comments_form' );
345 if ( ! $gglcptch_check['response'] ) {
346 $message = gglcptch_get_message($gglcptch_check['reason']) . "<br />";
347 $error_message = sprintf(
348 '<strong>%s</strong>:&nbsp;%s&nbsp;%s',
349 __( 'Error', 'google-captcha' ),
350 $message,
351 __( 'Click the BACK button on your browser and try again.', 'google-captcha' )
352 );
353 wp_die( $error_message );
354 }
355 return;
356 }
357 }
358
359 /* Check google captcha in BWS Contact Form */
360 if ( ! function_exists( 'gglcptch_contact_form_check' ) ) {
361 function gglcptch_contact_form_check( $allow = true ) {
362 if ( ! $allow || is_string( $allow ) || is_wp_error( $allow ) ) {
363 return $allow;
364 }
365 $gglcptch_check = gglcptch_check( 'contact_form' );
366 if ( ! $gglcptch_check['response'] ) {
367 return $gglcptch_check['errors'];
368 }
369 return $allow;
370 }
371 }
372
373 /* Check google captcha in BWS Testimonials */
374 if ( ! function_exists( 'gglcptch_testimonials_check' ) ) {
375 function gglcptch_testimonials_check( $allow = true ) {
376 global $gglcptch_check;
377 if ( ! $allow || is_string( $allow ) || is_wp_error( $allow ) ) {
378 return $allow;
379 }
380 $gglcptch_check = gglcptch_check( 'testimonials' );
381 if ( ! $gglcptch_check['response'] ) {
382 return $gglcptch_check['errors'];
383 }
384 return $allow;
385 }
386 }