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