/var/www/html/wp-content/plugins/contact-form-7/includes/swv/schema-holder.php


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$contextWPCF7_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() );
    }

}