PluginProbe ʕ •ᴥ•ʔ
reCaptcha by BestWebSoft / 1.58
reCaptcha by BestWebSoft v1.58
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 5 years ago forms.php 5 years ago pro_banners.php 5 years ago whitelist.php 5 years ago
forms.php
387 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 $_POST['g-recaptcha-response-check'] = true;
286 return $allow;
287 }
288 }
289
290 /* Check google captcha in lostpassword form */
291 if ( ! function_exists( 'gglcptch_lostpassword_check' ) ) {
292 function gglcptch_lostpassword_check( $allow ) {
293 if ( gglcptch_is_woocommerce_page() || ( isset( $_POST['g-recaptcha-response-check'] ) && true === $_POST['g-recaptcha-response-check'] ) )
294 return $allow;
295 $gglcptch_check = gglcptch_check( 'reset_pwd_form' );
296 if ( ! $gglcptch_check['response'] ) {
297 return $gglcptch_check['errors'];
298 }
299 return $allow;
300 }
301 }
302
303 /* Add google captcha to the multisite login form */
304 if ( ! function_exists( 'gglcptch_signup_display' ) ) {
305 function gglcptch_signup_display( $errors ) {
306 if ( $error_message = $errors->get_error_message( 'gglcptch_error' ) ) {
307 printf( '<p class="error gglcptch_error">%s</p>', $error_message );
308 }
309 if ( $error_message = $errors->get_error_message( 'lmttmpts_error' ) ) {
310 printf( '<p class="error lmttmpts_error">%s</p>', $error_message );
311 }
312 echo gglcptch_display();
313 }
314 }
315
316 /* Check google captcha in multisite login form */
317 if ( ! function_exists( 'gglcptch_signup_check' ) ) {
318 function gglcptch_signup_check( $result ) {
319 global $current_user;
320 if ( is_admin() && ! defined( 'DOING_AJAX' ) && ! empty( $current_user->data->ID ) )
321 return $result;
322 $gglcptch_check = gglcptch_check( 'registration_form' );
323 if ( ! $gglcptch_check['response'] ) {
324 $result['errors'] = $gglcptch_check['errors'];
325 return $result;
326 }
327 return $result;
328 }
329 }
330
331 /* Add google captcha to the comment form */
332 if ( ! function_exists( 'gglcptch_commentform_display' ) ) {
333 function gglcptch_commentform_display() {
334 if ( gglcptch_is_hidden_for_role() ) {
335 return;
336 }
337 echo gglcptch_display();
338 return true;
339 }
340 }
341
342 /* Check JS enabled for comment form */
343 if ( ! function_exists( 'gglcptch_commentform_check' ) ) {
344 function gglcptch_commentform_check() {
345 $gglcptch_check = gglcptch_check( 'comments_form' );
346 if ( ! $gglcptch_check['response'] ) {
347 $message = gglcptch_get_message($gglcptch_check['reason']) . "<br />";
348 $error_message = sprintf(
349 '<strong>%s</strong>:&nbsp;%s&nbsp;%s',
350 __( 'Error', 'google-captcha' ),
351 $message,
352 __( 'Click the BACK button on your browser and try again.', 'google-captcha' )
353 );
354 wp_die( $error_message );
355 }
356 return;
357 }
358 }
359
360 /* Check google captcha in BWS Contact Form */
361 if ( ! function_exists( 'gglcptch_contact_form_check' ) ) {
362 function gglcptch_contact_form_check( $allow = true ) {
363 if ( ! $allow || is_string( $allow ) || is_wp_error( $allow ) ) {
364 return $allow;
365 }
366 $gglcptch_check = gglcptch_check( 'contact_form' );
367 if ( ! $gglcptch_check['response'] ) {
368 return $gglcptch_check['errors'];
369 }
370 return $allow;
371 }
372 }
373
374 /* Check google captcha in BWS Testimonials */
375 if ( ! function_exists( 'gglcptch_testimonials_check' ) ) {
376 function gglcptch_testimonials_check( $allow = true ) {
377 global $gglcptch_check;
378 if ( ! $allow || is_string( $allow ) || is_wp_error( $allow ) ) {
379 return $allow;
380 }
381 $gglcptch_check = gglcptch_check( 'testimonials' );
382 if ( ! $gglcptch_check['response'] ) {
383 return $gglcptch_check['errors'];
384 }
385 return $allow;
386 }
387 }