1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
|
<?php
namespace WPForms\Forms;
/** * Class Honeypot. * * @since 1.6.2 */ class Honeypot {
/** * Initialise the actions for the Honeypot. * * @since 1.6.2 */ public function init() {
$this->hooks(); }
/** * Register hooks. * * @since 1.6.2 */ public function hooks() {
add_action( 'wpforms_frontend_output', [ $this, 'render' ], 15, 5 ); }
/** * Return function to render the honeypot. * * @since 1.6.2 * * @param array $form_data Form data and settings. */ public function render( $form_data ) {
if ( empty( $form_data['settings']['honeypot'] ) || '1' !== $form_data['settings']['honeypot'] ) { return; }
$names = [ 'Name', 'Phone', 'Comment', 'Message', 'Email', 'Website' ];
echo '<div class="wpforms-field wpforms-field-hp">';
echo '<label for="wpforms-' . $form_data['id'] . '-field-hp" class="wpforms-field-label">' . $names[ array_rand( $names ) ] . '</label>'; // phpcs:ignore
echo '<input type="text" name="wpforms[hp]" id="wpforms-' . $form_data['id'] . '-field-hp" class="wpforms-field-medium">'; // phpcs:ignore
echo '</div>'; }
/** * Validate honeypot. * * @since 1.6.2 * * @param array $form_data Form data. * @param array $fields Fields. * @param array $entry Form entry. * * @return bool|string False or an string with the error. */ public function validate( array $form_data, array $fields, array $entry ) {
$honeypot = false;
if ( ! empty( $form_data['settings']['honeypot'] ) && '1' === $form_data['settings']['honeypot'] && ! empty( $entry['hp'] ) ) { $honeypot = esc_html__( 'WPForms honeypot field triggered.', 'wpforms-lite' ); }
// If we get passed an empty fields array, but we have the data in our form data, use it. if ( empty( $fields ) && isset( $form_data['fields'] ) ) { $fields = $form_data['fields']; }
return apply_filters( 'wpforms_process_honeypot', $honeypot, $fields, $entry, $form_data ); } }
|