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