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