PluginProbe ʕ •ᴥ•ʔ
JetFormBuilder — Dynamic Blocks Form Builder / 1.2.5
JetFormBuilder — Dynamic Blocks Form Builder v1.2.5
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 / includes / request / request-handler.php
jetformbuilder / includes / request Last commit date
fields 4 years ago field-data-parser.php 4 years ago parser-manager.php 4 years ago request-handler.php 4 years ago
request-handler.php
189 lines
1 <?php
2
3
4 namespace Jet_Form_Builder\Request;
5
6 use Jet_Form_Builder\Blocks\Modules\Fields_Errors\Error_Handler;
7 use Jet_Form_Builder\Classes\Tools;
8 use Jet_Form_Builder\Exceptions\Request_Exception;
9 use Jet_Form_Builder\Live_Form;
10 use Jet_Form_Builder\Plugin;
11
12 class Request_Handler {
13 public $request;
14 public $errors;
15
16 public $repeaters = array();
17
18 public $_fields = array();
19 public $_request_values;
20 public $_response_data;
21
22 const REPEATERS_SETTINGS = '__repeaters_settings';
23
24 public function __construct( $request ) {
25 $this->request = $request;
26
27 Parser_Manager::instance();
28 }
29
30 private function merge_with_base_request( $data ) {
31 foreach ( $this->request as $name => $field ) {
32 $data[ '__' . $name ] = $field;
33 }
34 $data[ self::REPEATERS_SETTINGS ] = $this->repeaters;
35
36 return $data;
37 }
38
39
40 /**
41 * Get form values from request
42 *
43 * @return [type] [description]
44 */
45 public function get_values_from_request() {
46
47 if ( $this->request['is_ajax'] ) {
48
49 $prepared = array();
50 $raw = ! empty( $_REQUEST['values'] ) ? Tools::maybe_recursive_sanitize( $_REQUEST['values'] ) : array();
51
52 if ( empty( $raw ) ) {
53 return $prepared;
54 }
55
56 foreach ( $raw as $data ) {
57
58 $name = $data['name'];
59 $value = $data['value'];
60
61 if ( preg_match( '/\[\d\]\[/', $name ) ) {
62
63 $name_parts = explode( '[', $name );
64
65 $name = $name_parts[0];
66 $index = absint( rtrim( $name_parts[1], ']' ) );
67 $key = rtrim( $name_parts[2], ']' );
68
69 if ( empty( $prepared[ $name ] ) ) {
70 $prepared[ $name ] = array();
71 }
72
73 if ( empty( $prepared[ $name ][ $index ] ) ) {
74 $prepared[ $name ][ $index ] = array();
75 }
76
77 if ( isset( $name_parts[3] ) ) {
78
79 if ( empty( $prepared[ $name ][ $index ][ $key ] ) ) {
80 $prepared[ $name ][ $index ][ $key ] = array();
81 }
82
83 $prepared[ $name ][ $index ][ $key ][] = $value;
84
85 } else {
86 $prepared[ $name ][ $index ][ $key ] = $value;
87 }
88
89 } elseif ( false !== strpos( $name, '[]' ) ) {
90
91 $name = str_replace( '[]', '', $name );
92
93 if ( empty( $prepared[ $name ] ) ) {
94 $prepared[ $name ] = array();
95 }
96
97 $prepared[ $name ][] = $value;
98
99 } else {
100 $prepared[ $name ] = $value;
101 }
102
103 }
104
105 return $prepared;
106
107 } else {
108 return $_REQUEST;
109 }
110
111 }
112
113 /**
114 * @throws Request_Exception
115 */
116 public function init_form_data() {
117 $this->_fields = Plugin::instance()->form->get_only_form_fields(
118 $this->request['form_id'],
119 array( 'submit-field', 'form-break-field', 'heading-field', 'group-break-field' )
120 );
121
122 $this->_request_values = $this->get_values_from_request();
123 $nonce = isset( $this->_request_values['_wpnonce'] ) ? $this->_request_values['_wpnonce'] : '';
124
125 Live_Form::instance()->set_form_id( $this->request['form_id'] );
126
127 if ( ! wp_verify_nonce( $nonce, Live_Form::instance()->get_nonce_id() ) ) {
128 throw ( new Request_Exception( 'Invalid nonce.' ) )->dynamic_error();
129 }
130
131 }
132
133
134 /**
135 * Get submitted form data
136 *
137 * @return array [type] [description]
138 * @throws Request_Exception
139 */
140 public function get_form_data() {
141
142 $this->init_form_data();
143
144 $this->_response_data = Parser_Manager::instance()->get_values_fields( $this );
145
146 if ( ! Error_Handler::instance()->empty_errors() ) {
147 throw new Request_Exception( 'validation_failed',
148 Error_Handler::instance()->errors(),
149 $this->_response_data
150 );
151 }
152
153 if ( ! Plugin::instance()->captcha->verify( $this->request['form_id'], $this->request['is_ajax'] ) ) {
154 throw new Request_Exception( 'captcha_failed' );
155 }
156
157 $data = apply_filters( 'jet-form-builder/form-handler/form-data', $this->_response_data, $this );
158
159 return $this->merge_with_base_request( $data );
160 }
161
162 public function save_repeater( $name, $value ) {
163 $this->repeaters[ $name ] = $value;
164 }
165
166 public function get_field_attrs_by_name( $field_name, $attr_name = '', $default_val = '' ) {
167 foreach ( $this->_fields as $field ) {
168 if ( empty( $field['attrs'] )
169 || ! isset( $field['attrs']['name'] )
170 || $field_name !== $field['attrs']['name']
171 ) {
172 continue;
173 }
174 $attrs = $field['attrs'];
175
176 if ( ! $attr_name ) {
177 return $attrs;
178 }
179 if ( ! isset( $attrs[ $attr_name ] ) ) {
180 return $default_val;
181 }
182
183 return $attrs[ $attr_name ];
184 }
185
186 return $default_val;
187 }
188
189 }