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
|
<?php
trait WPCF7_SWV_SchemaHolder {
protected $schema;
/** * Retrieves SWV schema for this holder object (contact form). * * @return WPCF7_SWV_Schema The schema object. */ public function get_schema() { if ( isset( $this->schema ) ) { return $this->schema; }
$schema = new WPCF7_SWV_Schema( array( 'locale' => isset( $this->locale ) ? $this->locale : '', ) );
do_action( 'wpcf7_swv_create_schema', $schema, $this );
return $this->schema = $schema; }
/** * Validates form inputs based on the schema and given context. */ public function validate_schema( $context, WPCF7_Validation $validity ) { $callback = function ( $rule ) use ( &$callback, $context, $validity ) { if ( ! $rule->matches( $context ) ) { return; }
if ( $rule instanceof WPCF7_SWV_CompositeRule ) { foreach ( $rule->rules() as $child_rule ) { call_user_func( $callback, $child_rule ); } } else { $field = $rule->get_property( 'field' );
if ( $validity->is_valid( $field ) ) { $result = $rule->validate( $context );
if ( is_wp_error( $result ) ) { $validity->invalidate( $field, $result ); } } } };
call_user_func( $callback, $this->get_schema() ); }
}
|