PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 2.14.0
GiveWP – Donation Plugin and Fundraising Platform v2.14.0
4.16.2 4.16.1 4.16.0 4.15.5 4.15.4 4.15.3 4.15.2 4.15.1 4.15.0 2.3.0 2.3.1 2.3.2 2.30.0 2.31.0 2.31.1 2.32.0 2.33.0 2.33.1 2.33.2 2.33.3 2.33.4 2.33.5 2.4.0 2.4.1 2.4.2 2.4.3 2.4.4 2.4.5 2.4.6 2.4.7 2.5.0 2.5.1 2.5.10 2.5.11 2.5.12 2.5.13 2.5.2 2.5.3 2.5.4 2.5.5 2.5.6 2.5.7 2.5.8 2.5.9 2.6.0 2.6.1 2.6.2 2.6.3 2.7.0 2.7.1 2.7.2 2.7.3 2.7.4 2.7.5 2.8.0 2.8.1 2.9.0 2.9.1 2.9.2 2.9.3 2.9.4 2.9.5 2.9.6 2.9.7 3.0.0 3.0.1 3.0.2 3.0.3 3.0.4 3.1.0 3.1.1 3.1.2 3.10.0 3.11.0 3.12.0 3.12.1 3.12.2 3.12.3 3.13.0 3.14.0 3.14.1 3.14.2 3.15.0 3.15.1 3.16.0 3.16.1 3.16.2 3.16.3 3.16.4 3.16.5 3.17.0 3.17.1 3.17.2 3.18.0 3.19.0 3.19.1 3.19.2 3.19.3 3.19.4 3.2.0 3.2.1 3.2.2 3.20.0 3.21.0 3.21.1 3.22.0 3.22.1 3.22.2 3.3.0 3.3.1 3.4.0 3.4.1 3.4.2 3.5.0 3.5.1 3.6.0 3.6.1 3.6.2 3.7.0 3.8.0 3.9.0 4.0.0 4.1.0 4.1.1 4.10.0 4.10.1 4.11.0 4.12.0 4.13.0 4.13.1 4.13.2 4.14.0 4.14.1 4.14.2 4.14.3 4.14.4 4.14.5 4.14.6 4.2.0 4.2.1 4.3.0 4.3.1 4.3.2 4.4.0 4.5.0 4.6.1 4.7.0 4.7.1 4.8.0 4.8.1 4.9.0 trunk 1.9.0 2.0.0 2.0.1 2.0.2 2.0.3 2.0.4 2.0.5 2.0.6 2.0.7 2.1.0 2.1.1 2.1.2 2.1.3 2.1.4 2.1.5 2.1.6 2.1.7 2.1.8 2.10.0 2.10.1 2.10.2 2.10.3 2.10.4 2.11.0 2.11.1 2.11.2 2.11.3 2.12.0 2.12.1 2.12.2 2.12.3 2.13.0 2.13.1 2.13.2 2.13.3 2.13.4 2.14.0 2.15.0 2.16.0 2.16.1 2.17.0 2.17.1 2.17.3 2.18.0 2.18.1 2.19.1 2.19.2 2.19.3 2.19.4 2.19.5 2.19.6 2.19.7 2.19.8 2.2.0 2.2.1 2.2.2 2.2.3 2.2.4 2.2.5 2.2.6 2.20.0 2.20.1 2.20.2 2.21.0 2.21.1 2.21.2 2.21.3 2.21.4 2.22.0 2.22.1 2.22.2 2.22.3 2.23.0 2.23.1 2.23.2 2.24.0 2.24.1 2.24.2 2.25.0 2.25.1 2.25.2 2.25.3 2.26.0 2.27.0 2.27.1 2.27.2 2.27.3 2.28.0 2.29.0 2.29.1 2.29.2
give / src / Form / LegacyConsumer / Validators / FileUploadValidator.php
give / src / Form / LegacyConsumer / Validators Last commit date
FileUploadValidator.php 4 years ago
FileUploadValidator.php
111 lines
1 <?php
2
3 namespace Give\Form\LegacyConsumer\Validators;
4
5 use Give\Form\LegacyConsumer\Traits\HasFilesArray;
6 use Give\Framework\FieldsAPI\File;
7 use function _n;
8 use function esc_html__;
9 use function give_set_error;
10 use function size_format;
11
12 /**
13 * @package Give\Form\LegacyConsumer\Validators
14 * @since 2.14.0
15 */
16 class FileUploadValidator {
17 use HasFilesArray;
18
19 /**
20 * @var array
21 */
22 private $files;
23 /**
24 * @var File
25 */
26 private $field;
27 /**
28 * @var int
29 */
30 private $uploadSize;
31 /**
32 * @var array
33 */
34 private $uploadedTypes;
35
36 /**
37 * @since 2.14.0
38 */
39 public function __construct( File $field ) {
40 $this->field = $field;
41 $this->files = $this->getFiles();
42
43 foreach ( $this->files as $file ) {
44 $this->uploadSize += $file['size'];
45 $this->uploadedTypes[] = $file['type'];
46 }
47 }
48 /**
49 * @since 2.14.0
50 */
51 public function __invoke() {
52 if( ! $this->files ) {
53 $this->validateRequired();
54 return;
55 }
56
57 $this->validateUploadTypes();
58 $this->validateUploadSize();
59 }
60
61 /**
62 * @since 2.14.0
63 */
64 private function validateRequired(){
65 if( $this->field->isRequired() ) {
66 give_set_error(
67 "give-{$this->field->getName()}-required-field-missing",
68 $this->field->getRequiredError()['error_message']
69 );
70 }
71 }
72
73 /**
74 * @since 2.14.0
75 */
76 private function validateUploadTypes(){
77 $allowedTypes = $this->field->getAllowedTypes();
78
79 if ( array_diff( $this->uploadedTypes, $allowedTypes ) ) {
80 give_set_error( 'field-api-file-upload-allowed-type-error', sprintf(
81 esc_html__( 'Unable to upload file. Allowed file %1$s: %2$s', 'give' ),
82 _n( 'type', 'types', count( $allowedTypes ), 'give' ),
83 array_reduce(
84 array_keys( $allowedTypes ),
85 function ( $initial, $fileType ){
86 $separator = $initial ? ', ' : '';
87 $initial .= $separator . str_replace( '|', ', ', $fileType );
88
89 return $initial;
90 },
91 ''
92 )
93 ) );
94 }
95 }
96
97 /**
98 * @since 2.14.0
99 */
100 private function validateUploadSize(){
101 $allowedFileSize = $this->field->getMaxSize();
102
103 if ( $allowedFileSize < $this->uploadSize ) {
104 give_set_error( 'field-api-file-upload-size-error', sprintf(
105 esc_html__( 'File size exceed upload limit. Maximum file limit is %s', 'give' ),
106 size_format( $allowedFileSize * 1024 )
107 ) );
108 }
109 }
110 }
111