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