PluginProbe ʕ •ᴥ•ʔ
JetFormBuilder — Dynamic Blocks Form Builder / 1.2.0
JetFormBuilder — Dynamic Blocks Form Builder v1.2.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
158 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 public $_fields = array();
21 public $_request_values;
22 public $_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 );
120
121 $this->_request_values = $this->get_values_from_request();
122
123 }
124
125
126 /**
127 * Get submitted form data
128 *
129 * @return array [type] [description]
130 * @throws Request_Exception
131 */
132 public function get_form_data() {
133
134 $this->init_form_data();
135
136 $this->_response_data = Parser_Manager::instance()->get_values_fields( $this );
137
138 if ( ! Error_Handler::instance()->empty_errors() ) {
139 throw new Request_Exception( 'validation_failed',
140 Error_Handler::instance()->errors(),
141 $this->_response_data
142 );
143 }
144
145 if ( ! Plugin::instance()->captcha->verify( $this->request['form_id'], $this->request['is_ajax'] ) ) {
146 throw new Request_Exception( 'captcha_failed' );
147 }
148
149 $data = apply_filters( 'jet-form-builder/form-handler/form-data', $this->_response_data, $this );
150
151 return $this->merge_with_base_request( $data );
152 }
153
154 public function save_repeater( $name, $value ) {
155 $this->repeaters[ $name ] = $value;
156 }
157
158 }