ajax-validation-handler.php
1 year ago
self-validation-handler.php
1 year ago
validation-handler.php
1 year ago
validation-handler.php
49 lines
| 1 | <?php |
| 2 | namespace JFB_Modules\Validation\Handlers; |
| 3 | |
| 4 | use JFB_Modules\Validation\Rest_Api\Rest_Validation_Endpoint; |
| 5 | use JFB_Modules\Validation\Silence_Exception; |
| 6 | use Jet_Form_Builder\Classes\Arrayable\Array_Tools; |
| 7 | |
| 8 | class Validation_Handler { |
| 9 | public static function validate( $body ) { |
| 10 | remove_all_actions( 'jet-form-builder/validate-field' ); |
| 11 | |
| 12 | try { |
| 13 | $request = new \WP_REST_Request(); |
| 14 | $request->set_body_params( $body ); |
| 15 | $parser = ( new Rest_Validation_Endpoint() )->get_parser_public( $request ); |
| 16 | } catch ( Silence_Exception $exception ) { |
| 17 | return array( |
| 18 | 'result' => false, |
| 19 | 'message' => __( 'Unresolved parser for field', 'jet-form-builder' ), |
| 20 | ); |
| 21 | } |
| 22 | |
| 23 | $validation = $parser->get_setting( 'validation' ); |
| 24 | $ssr_attrs = Array_Tools::get( |
| 25 | $validation, |
| 26 | array( 'rules', $body[ Rest_Validation_Endpoint::RULE_INDEX_KEY ] ) |
| 27 | ); |
| 28 | |
| 29 | if ( null === $parser->get_value() || '' === $parser->get_value() || empty( $ssr_attrs['value'] ) ) { |
| 30 | return array( |
| 31 | 'result' => false, |
| 32 | 'message' => __( 'Field value or callback is empty', 'jet-form-builder' ), |
| 33 | ); |
| 34 | } |
| 35 | |
| 36 | /** @var Module $module */ |
| 37 | $module = jet_form_builder()->module( 'validation' ); |
| 38 | $ssr_rule = $module->get_rules()->get_ssr(); |
| 39 | |
| 40 | $ssr_rule->set_settings( $ssr_attrs ); |
| 41 | $ssr_rule->validate_field( $parser ); |
| 42 | |
| 43 | return array( |
| 44 | 'result' => empty( $parser->get_errors() ), |
| 45 | 'message' => empty( $parser->get_errors() ) ? '' : __( 'Validation failed', 'jet-form-builder' ), |
| 46 | ); |
| 47 | } |
| 48 | } |
| 49 |