-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathprevent duplicate submission if multiple fields match
71 lines (52 loc) · 2.3 KB
/
prevent duplicate submission if multiple fields match
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
add_filter( 'gform_validation', function ( $validation_result ) {
$form = $validation_result['form'];
// $forms_and_fields[child form id]
$forms_and_fields[77] = [
'name_field_id' => 5,
'num_field_id' => 3,
'date_field_id' => 6,
];
if ( in_array( $form['id'], array_keys( $forms_and_fields ) ) ) {
$name_id = $forms_and_fields[ $form['id'] ]['name_field_id'];
$num_id = $forms_and_fields[ $form['id'] ]['num_field_id'];
$date_id = $forms_and_fields[ $form['id'] ]['date_field_id'];
$search_criteria = [];
$search_criteria['status'] = 'active';
$search_criteria['field_filters'][] = [
'key' => $num_id . '',
'value' => rgpost('input_' . $num_id),
];
$search_criteria['field_filters'][] = [
'key' => $name_id . '.3',
'value' => rgpost('input_' . $name_id . '_3'),
];
$search_criteria['field_filters'][] = [
'key' => $name_id . '.6',
'value' => rgpost('input_' . $name_id . '_6'),
];
$search_criteria['field_filters'][] = [
'key' => $date_id . '',
'value' => date('Y-m-d',strtotime(rgpost('input_' . $date_id))),
];
$entries = GFAPI::get_entries( $form['id'], $search_criteria );
if ( count( $entries ) > 0 ) {
$validation_result['is_valid'] = false;
$fields = &$form['fields'];
$field_ids = array_column( $fields, 'id' );
$num_field_index = array_search( $num_id, $field_ids );
$name_field_index = array_search( $name_id, $field_ids );
$date_field_index = array_search( $date_id, $field_ids );
$fields[ $num_field_index ]->failed_validation = true;
//customize message
$fields[ $num_field_index ]->validation_message = 'message';
$fields[ $name_field_index ]->failed_validation = true;
//custmize message
$fields[ $name_field_index ]->validation_message = 'message';
$fields[ $date_field_index ]->failed_validation = true;
//custmize message
$fields[ $date_field_index ]->validation_message = 'message';
}
}
$validation_result['form'] = $form;
return $validation_result;
} );