PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 2.33.3
GiveWP – Donation Plugin and Fundraising Platform v2.33.3
4.16.3 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 / Framework / ValidationRules / Rules / File.php
give / src / Framework / ValidationRules / Rules Last commit date
AllowedTypes.php 3 years ago File.php 2 years ago
File.php
113 lines
1 <?php
2 declare(strict_types=1);
3
4 namespace Give\Framework\ValidationRules\Rules;
5
6 use Closure;
7 use Give\Framework\Http\Types\UploadedFile;
8 use Give\Vendors\StellarWP\Validation\Contracts\ValidationRule;
9
10 /**
11 * @since 2.32.0
12 */
13 class File implements ValidationRule
14 {
15 /**
16 * The size, in bytes, of the uploaded file
17 *
18 * @var int
19 */
20 protected $maxSize;
21
22 /**
23 * @var string[]
24 */
25 protected $allowedMimeTypes;
26
27 /**
28 * @since 2.32.0
29 */
30 public static function id(): string
31 {
32 return 'file';
33 }
34
35 /**
36 * @since 2.32.0
37 */
38 public function maxSize(int $maxSize): ValidationRule
39 {
40 $this->maxSize = $maxSize;
41
42 return $this;
43 }
44
45 /**
46 * @since 2.32.0
47 */
48 public function getMaxSize(): int
49 {
50 return $this->maxSize ?? wp_max_upload_size();
51 }
52
53 /**
54 * @since 2.32.0
55 */
56 public function allowedMimeTypes(array $allowedMimeTypes): ValidationRule
57 {
58 $this->allowedMimeTypes = $allowedMimeTypes;
59
60 return $this;
61 }
62
63 /**
64 * @since 2.32.0
65 *
66 * @return string[]
67 */
68 public function getAllowedMimeTypes(): array
69 {
70 return $this->allowedMimeTypes ?? get_allowed_mime_types();
71 }
72
73 /**
74 * @since 2.32.0
75 **/
76 public function __invoke($value, Closure $fail, string $key, array $values)
77 {
78 try {
79 $file = UploadedFile::fromArray($value);
80
81 if (!$file->isUploadedFile()) {
82 $fail(sprintf(__('%s must be a valid file.', 'give'), '{field}'));
83 }
84
85 // check against both the allowed mime types defined by the file rule and the server
86 if (!in_array($file->getMimeType(), $this->getAllowedMimeTypes(), true) ||
87 !in_array($file->getMimeType(), get_allowed_mime_types(), true)) {
88 $fail(sprintf(__('%s must be a valid file type.', 'give'), '{field}'));
89 }
90
91 // check against both the max upload size defined by the file rule and the server
92 if ($file->getSize() > $this->getMaxSize() || $file->getSize() > wp_max_upload_size()) {
93 $fail(
94 sprintf(__('%s must be less than or equal to %d bytes.', 'give'), '{field}', $this->getMaxSize())
95 );
96 }
97
98 if ($file->getError() !== UPLOAD_ERR_OK) {
99 $fail(sprintf(__('%s must be a valid file.', 'give'), '{field}'));
100 }
101 } catch (\Throwable $e) {
102 $fail($e->getMessage());
103 }
104 }
105
106 /**
107 * @since 2.32.0
108 */
109 public static function fromString(string $options = null): ValidationRule
110 {
111 return new self();
112 }
113 }