@@ -603,3 +603,70 @@ function wpum_field_conditional_logic_rules( $data ) {
603603add_action ( 'wpum_after_account_form ' , 'wpum_field_conditional_logic_rules ' , 1 );
604604add_action ( 'wpum_after_custom_account_form ' , 'wpum_field_conditional_logic_rules ' , 1 );
605605
606+ function wpum_conditional_fields_maybe_skip_validation ( $ skip , $ field_key , $ values , $ fields ) {
607+ $ form_data = (object ) array ();
608+ $ form_data ->fields = $ fields ;
609+
610+ $ rulesets = apply_filters ( 'wpum_field_conditional_logic_rules ' , array (), $ form_data );
611+ $ field_rules = $ rulesets [ $ field_key ];
612+
613+ if ( ! $ field_rules ) {
614+ return false ;
615+ }
616+
617+ foreach ( $ field_rules as $ rules ) {
618+ foreach ( $ rules as $ rule ) {
619+ $ valid_rule = apply_filters ( "wpum_conditional_field_validate_rule_ {$ rule ['condition ' ]}" , true , $ rule , $ values );
620+ if ( ! $ valid_rule ) {
621+ return true ;
622+ }
623+ }
624+ }
625+
626+ return false ;
627+ }
628+
629+ add_filter ( 'wpum_form_skip_field_validation ' , 'wpum_conditional_fields_maybe_skip_validation ' , 10 , 4 );
630+
631+ function wpum_validate_rule_value_not_equals ( $ valid , $ rule , $ values ) {
632+ return $ values [ $ rule ['field ' ] ] !== $ rule ['value ' ] ? true : false ;
633+ }
634+
635+ add_filter ( 'wpum_conditional_field_validate_rule_value_not_equals ' , 'wpum_validate_rule_value_not_equals ' , 10 , 3 );
636+
637+ function wpum_validate_rule_value_equals ( $ valid , $ rule , $ values ) {
638+ return $ values [ $ rule ['field ' ] ] === $ rule ['value ' ] ? true : false ;
639+ }
640+
641+ add_filter ( 'wpum_conditional_field_validate_rule_value_equals ' , 'wpum_validate_rule_value_equals ' , 10 , 3 );
642+
643+ function wpum_validate_rule_value_contains ( $ valid , $ rule , $ values ) {
644+ return strpos ( $ values [ $ rule ['field ' ] ], $ rule ['value ' ] );
645+ }
646+
647+ add_filter ( 'wpum_conditional_field_validate_rule_value_contains ' , 'wpum_validate_rule_value_contains ' , 10 , 3 );
648+
649+ function wpum_validate_rule_has_value ( $ valid , $ rule , $ values ) {
650+ return $ values [ $ rule ['field ' ] ] !== '' ;
651+ }
652+
653+ add_filter ( 'wpum_conditional_field_validate_rule_has_value ' , 'wpum_validate_rule_has_value ' , 10 , 3 );
654+
655+ function wpum_validate_rule_has_no_value ( $ valid , $ rule , $ values ) {
656+ return $ values [ $ rule ['field ' ] ] === '' ;
657+ }
658+
659+ add_filter ( 'wpum_conditional_field_validate_rule_has_no_value ' , 'wpum_validate_rule_has_no_value ' , 10 , 3 );
660+
661+ function wpum_validate_rule_value_greater ( $ valid , $ rule , $ values ) {
662+ return $ values [ $ rule ['field ' ] ] > $ rule ['value ' ];
663+ }
664+
665+ add_filter ( 'wpum_conditional_field_validate_rule_value_greater ' , 'wpum_validate_rule_value_greater ' , 10 , 3 );
666+
667+ function wpum_validate_rule_value_less ( $ valid , $ rule , $ values ) {
668+ return $ values [ $ rule ['field ' ] ] < $ rule ['value ' ];
669+ }
670+
671+ add_filter ( 'wpum_conditional_field_validate_rule_value_less ' , 'wpum_validate_rule_value_less ' , 10 , 3 );
672+
0 commit comments