PluginProbe ʕ •ᴥ•ʔ
JetFormBuilder — Dynamic Blocks Form Builder / 3.1.1
JetFormBuilder — Dynamic Blocks Form Builder v3.1.1
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-tools.php
jetformbuilder / includes / request Last commit date
exceptions 2 years ago form-request-router.php 2 years ago request-handler.php 2 years ago request-router.php 2 years ago request-tools.php 2 years ago
request-tools.php
169 lines
1 <?php
2
3
4 namespace Jet_Form_Builder\Request;
5
6 use Jet_Form_Builder\Classes\Resources\File;
7 use Jet_Form_Builder\Classes\Resources\File_Tools;
8 use Jet_Form_Builder\Classes\Resources\Media_Block_Value;
9 use Jet_Form_Builder\Classes\Resources\Sanitize_File_Exception;
10 use Jet_Form_Builder\Classes\Resources\File_Collection;
11 use Jet_Form_Builder\Classes\Resources\Uploaded_Collection;
12 use Jet_Form_Builder\Classes\Resources\Uploaded_File;
13 use Jet_Form_Builder\Classes\Tools;
14 use Jet_Form_Builder\Live_Form;
15
16 // If this file is called directly, abort.
17 if ( ! defined( 'WPINC' ) ) {
18 die;
19 }
20
21 class Request_Tools {
22
23 const FILE_PROPERTIES = array( 'name', 'size', 'error', 'type', 'tmp_name' );
24
25 public static function get_files( array $initial ): array {
26 $response = array();
27
28 foreach ( $initial as $fields_name => $files ) {
29 $is_repeater = isset( $files['name'][0] ) && is_array( $files['name'][0] );
30
31 if ( $is_repeater ) {
32 $response[ $fields_name ] = static::get_repeater_files( $files );
33
34 continue;
35 }
36
37 $is_collection = is_array( $files['name'] );
38
39 if ( ! $is_collection ) {
40 try {
41 $file = new File( $files );
42 } catch ( Sanitize_File_Exception $exception ) {
43 continue;
44 }
45 $response[ $fields_name ] = $file;
46
47 continue;
48 }
49
50 $count_collection = count( $files['name'] );
51 $collection = array();
52
53 for ( $index = 0; $index < $count_collection; $index++ ) {
54 $file = array();
55
56 foreach ( self::FILE_PROPERTIES as $property ) {
57 $file[ $property ] = $files[ $property ][ $index ];
58 }
59
60 $collection[ $index ] = $file;
61 }
62
63 $response[ $fields_name ] = ( new File_Collection() )->push_files( $collection );
64 }
65
66 return $response;
67 }
68
69 public static function get_request(): array {
70 // phpcs:ignore WordPress.Security.NonceVerification.Missing
71 return Tools::sanitize_recursive( wp_unslash( $_POST ) );
72 }
73
74 public static function get_repeater_files( array $files ): array {
75 $rows = count( $files['name'] );
76 $repeater = array();
77
78 for ( $current = 0; $current < $rows; $current++ ) {
79 $row = array();
80
81 foreach ( self::FILE_PROPERTIES as $property ) {
82 foreach ( $files[ $property ][ $current ] as $field_name => $values ) {
83 if ( ! isset( $row[ $field_name ] ) ) {
84 $row[ $field_name ] = array();
85 }
86
87 if ( is_array( $values ) ) {
88 $count_values = count( $values );
89
90 for ( $index_value = 0; $index_value < $count_values; $index_value++ ) {
91 if ( ! isset( $row[ $field_name ][ $index_value ] ) ) {
92 $row[ $field_name ][ $index_value ] = array();
93 }
94 $row[ $field_name ][ $index_value ][ $property ] = $values[ $index_value ];
95 }
96 } else {
97 $row[ $field_name ][ $property ] = $values;
98 }
99 }
100 }
101 unset( $field_name, $values );
102
103 foreach ( $row as $field_name => $values ) {
104 if ( isset( $values[0] ) ) {
105 $row[ $field_name ] = ( new File_Collection() )->push_files( $values );
106 } else {
107 try {
108 $file = new File( $values );
109 } catch ( Sanitize_File_Exception $exception ) {
110 unset( $row[ $field_name ] );
111 continue;
112 }
113 $row[ $field_name ] = $file;
114 }
115 }
116
117 $repeater[ $current ] = $row;
118 }
119
120 return $repeater;
121 }
122
123
124 /**
125 * @param string $field_name
126 *
127 * @return false|Media_Block_Value
128 */
129 public static function get_file( string $field_name ) {
130 $file = jet_fb_context()->get_file( $field_name );
131
132 if ( false !== $file ) {
133 return $file;
134 }
135
136 $file_data = jet_fb_context()->get_value( $field_name );
137
138 // parse value in json format (both)
139 if ( is_string( $file_data ) && ! is_numeric( $file_data ) ) {
140 $decoded = Tools::decode_json( $file_data );
141
142 if ( ! is_null( $decoded ) ) {
143 $file_data = $decoded;
144 }
145 }
146
147 if ( is_string( $file_data ) ) {
148 $file_data = explode( ',', $file_data );
149 }
150
151 if ( ! is_array( $file_data ) ) {
152 return false;
153 }
154
155 if ( empty( $file_data[0] ) ) {
156 return File_Tools::create_uploaded_file( $file_data );
157 }
158
159 $collection = array();
160
161 foreach ( $file_data as $item ) {
162 $collection[] = File_Tools::create_uploaded_file( $item );
163 }
164
165 return new Uploaded_Collection( $collection );
166 }
167
168 }
169