PluginProbe ʕ •ᴥ•ʔ
JetFormBuilder — Dynamic Blocks Form Builder / 3.3.4
JetFormBuilder — Dynamic Blocks Form Builder v3.3.4
3.6.3.1 3.6.3 3.6.2.2 3.6.2.1 3.6.2 3.6.1.1 3.6.1 3.6.0.1 trunk 1.0.0 1.0.1 1.0.2 1.0.3 1.1.0 1.1.1 1.1.2 1.1.3 1.1.4 1.1.5 1.1.6 1.1.7 1.2.0 1.2.1 1.2.2 1.2.3 1.2.4 1.2.5 1.2.6 1.2.7 1.3.0 1.3.1 1.3.2 1.3.3 1.4.0 1.4.1 1.4.2 1.4.3 1.5.0 1.5.1 1.5.2 1.5.3 1.5.4 1.5.5 2.0.0 2.0.1 2.0.2 2.0.3 2.0.4 2.0.5 2.0.6 2.1.0 2.1.1 2.1.10 2.1.11 2.1.2 2.1.3 2.1.4 2.1.5 2.1.6 2.1.7 2.1.8 2.1.9 3.0.0 3.0.0.1 3.0.0.2 3.0.0.3 3.0.1 3.0.1.1 3.0.2 3.0.3 3.0.4 3.0.5 3.0.6 3.0.7 3.0.8 3.0.9 3.1.0 3.1.0.1 3.1.1 3.1.2 3.1.3 3.1.4 3.1.5 3.1.6 3.1.7 3.1.8 3.1.9 3.2.0 3.2.1 3.2.2 3.2.3 3.3.0 3.3.1 3.3.2 3.3.3 3.3.3.1 3.3.4 3.3.4.1 3.3.4.2 3.4.0 3.4.1 3.4.2 3.4.3 3.4.4 3.4.5 3.4.5.1 3.4.5.2 3.4.6 3.4.7 3.4.7.1 3.5.0 3.5.1 3.5.1.1 3.5.1.2 3.5.2 3.5.2.1 3.5.3 3.5.4 3.5.5 3.5.6 3.5.6.1 3.5.6.2 3.5.6.3 3.6.0
jetformbuilder / modules / validation / rest-api / rest-validation-endpoint.php
jetformbuilder / modules / validation / rest-api Last commit date
rest-validation-endpoint.php 2 years ago
rest-validation-endpoint.php
114 lines
1 <?php
2
3
4 namespace JFB_Modules\Validation\Rest_Api;
5
6 use Jet_Form_Builder\Blocks\Block_Helper;
7 use Jet_Form_Builder\Classes\Arrayable\Array_Tools;
8 use Jet_Form_Builder\Exceptions\Repository_Exception;
9 use Jet_Form_Builder\Exceptions\Silence_Exception;
10 use Jet_Form_Builder\Request\Exceptions\Plain_Value_Exception;
11 use JFB_Modules\Block_Parsers\Field_Data_Parser;
12 use Jet_Form_Builder\Request\Request_Tools;
13 use JFB_Components\Rest_Api;
14 use JFB_Modules\Validation\Module;
15
16
17 // If this file is called directly, abort.
18 if ( ! defined( 'WPINC' ) ) {
19 die;
20 }
21
22 class Rest_Validation_Endpoint extends Rest_Api\Rest_Api_Endpoint_Base {
23
24 const FIELD_KEY = '_jfb_validation_path';
25 const RULE_INDEX_KEY = '_jfb_validation_rule_index';
26
27 public static function get_rest_base() {
28 return 'validate-field';
29 }
30
31 public static function get_methods() {
32 return \WP_REST_Server::CREATABLE;
33 }
34
35 /**
36 * @param \WP_REST_Request $request
37 *
38 * @return \WP_REST_Response
39 * @throws Repository_Exception
40 */
41 public function run_callback( \WP_REST_Request $request ) {
42 $body = $request->get_body_params();
43
44 // to prevent custom and inner validation & sanitize
45 remove_all_actions( 'jet-form-builder/validate-field' );
46
47 try {
48 $parser = $this->get_parser( $request );
49 } catch ( Silence_Exception $exception ) {
50 return new \WP_REST_Response(
51 array(
52 'message' => __( 'Unresolved parser for field', 'jet-form-builder' ),
53 ),
54 400
55 );
56 }
57
58 $validation = $parser->get_setting( 'validation' );
59 $ssr_attrs = Array_Tools::get(
60 $validation,
61 array( 'rules', $body[ self::RULE_INDEX_KEY ] )
62 );
63
64 if ( ! $parser->get_value() || empty( $ssr_attrs['value'] ) ) {
65 return new \WP_REST_Response(
66 array(
67 'message' => __( 'Field value or callback is empty', 'jet-form-builder' ),
68 ),
69 400
70 );
71 }
72
73 /** @var Module $module */
74 $module = jet_form_builder()->module( 'validation' );
75 $ssr_rule = $module->get_rules()->get_ssr();
76
77 $ssr_rule->set_settings( $ssr_attrs );
78
79 $ssr_rule->validate_field( $parser );
80
81 return new \WP_REST_Response(
82 array(
83 'result' => empty( $parser->get_errors() ),
84 ),
85 200
86 );
87 }
88
89 /**
90 * @param \WP_REST_Request $request
91 *
92 * @return Field_Data_Parser
93 * @throws Plain_Value_Exception
94 * @throws Repository_Exception
95 */
96 protected function get_parser( \WP_REST_Request $request ): Field_Data_Parser {
97 $body = $request->get_body_params();
98 $path = $body[ self::FIELD_KEY ] ?? false;
99 $form_id = $body[ jet_fb_handler()->form_key ] ?? false;
100
101 jet_fb_handler()->set_form_id( $form_id );
102
103 jet_fb_context()->set_request( $body );
104 jet_fb_context()->set_files( Request_Tools::get_files( $request->get_file_params() ) );
105
106 // set fields with request
107 jet_fb_context()->apply(
108 Block_Helper::get_blocks_by_post( $form_id )
109 );
110
111 return jet_fb_context()->resolve_parser( $path );
112 }
113 }
114