PluginProbe
GiveWP – Donation Plugin and Fundraising Platform / 4.16.9
GiveWP – Donation Plugin and Fundraising Platform v4.16.9
4.16.9 4.16.8.1 4.16.8 4.16.7.2 4.16.7.1 4.16.7 4.16.6.1 4.16.6 4.16.5.1 4.16.5 4.16.4 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 All 255 releases
← All changes | src/Framework/FieldsAPI/File.php +103 -13 2.30.04.16.9 View file →
@@ -2,16 +2,17 @@
2 2
3 3 namespace Give\Framework\FieldsAPI;
4 4
5 5 use Give\Framework\ValidationRules\Rules\AllowedTypes;
6 +use Give\Framework\ValidationRules\Rules\File as FileRule;
7 +use Give\Vendors\StellarWP\Validation\Rules\Max;
6 8
7 -use function get_allowed_mime_types;
8 -use function wp_max_upload_size;
9 -
10 9 /**
11 10 * A file upload field.
12 11 *
13 - * @since 2.12.0
12 + * @since 4.3.0 Added maxUploadSize property.
13 + * @since 2.32.0 Updated to use the new Validation File Rule; added description
14 + * @since 2.12.0
14 15 * @since 2.23.1 Moved default rule values inline since inherited constructor is final.
15 16 */
16 17 class File extends Field
17 18 {
@@ -18,17 +19,22 @@
18 19 use Concerns\AllowMultiple;
19 20 use Concerns\HasEmailTag;
20 21 use Concerns\HasHelpText;
21 22 use Concerns\HasLabel;
22 - use Concerns\AllowMultiple;
23 + use Concerns\HasDescription;
23 24
24 25 const TYPE = 'file';
25 26
27 + protected $allowedMimeTypes = [];
28 + protected $maxUploadSize = null;
29 +
26 30 /**
27 31 * Set the maximum file size.
28 32 *
29 - * @param int $maxSize
33 + * @deprecated use maxUploadSize() instead
30 34 *
35 + * @param int $maxSize
36 + *
31 37 * @return $this
32 38 */
33 39 public function maxSize($maxSize)
34 40 {
@@ -44,12 +50,14 @@
44 50 }
45 51
46 52 /**
47 53 * Access the maximum file size.
54 + *
55 + * @deprecated use getMaxUploadSize() instead
48 56 */
49 57 public function getMaxSize(): int
50 58 {
51 - if (!$this->hasRule('max')) {
59 + if ( ! $this->hasRule('max')) {
52 60 return wp_max_upload_size();
53 61 }
54 62
55 63 return $this->getRule('max')->getSize();
@@ -55,15 +63,92 @@
55 63 return $this->getRule('max')->getSize();
56 64 }
57 65
58 66 /**
67 + * Set the maximum file upload size.
68 + *
69 + * @since 4.3.0 Set the field's maxUploadSize property.
70 + * @since 2.32.0
71 + */
72 + public function maxUploadSize(int $maxUploadSize): File
73 + {
74 + if ($this->hasRule(FileRule::id())) {
75 + /** @var FileRule $rule */
76 + $rule = $this->getRule(FileRule::id());
77 + $rule->maxSize($maxUploadSize);
78 + }
79 +
80 + $this->rules((new FileRule())->maxSize($maxUploadSize));
81 + $this->maxUploadSize = $maxUploadSize;
82 +
83 + return $this;
84 + }
85 +
86 + /**
87 + * Access the maximum file upload size.
88 + *
89 + * @since 2.32.0
90 + */
91 + public function getMaxUploadSize(): int
92 + {
93 + if (!$this->hasRule(FileRule::id())) {
94 + return wp_max_upload_size();
95 + }
96 +
97 + /** @var FileRule $rule */
98 + $rule = $this->getRule(FileRule::id());
99 +
100 + return $rule->getMaxSize();
101 + }
102 +
103 + /**
104 + * Set the allowed mime types.
105 + *
106 + * @since 2.32.0
107 + *
108 + * @param string[] $allowedMimeTypes
109 + */
110 + public function allowedMimeTypes(array $allowedMimeTypes): File
111 + {
112 + if ($this->hasRule(FileRule::id())) {
113 + /** @var FileRule $rule */
114 + $rule = $this->getRule(FileRule::id());
115 +
116 + $rule->allowedMimeTypes($allowedMimeTypes);
117 + } else {
118 + $this->rules((new FileRule())->allowedMimeTypes($allowedMimeTypes));
119 + }
120 +
121 + $this->allowedMimeTypes = $allowedMimeTypes;
122 +
123 + return $this;
124 + }
125 +
126 + /**
127 + * Access the allowed mime types.
128 + *
129 + * @return string[]
130 + */
131 + public function getAllowedMimeTypes(): array
132 + {
133 + if (!$this->hasRule(FileRule::id())) {
134 + return get_allowed_mime_types();
135 + }
136 +
137 + /** @var FileRule $rule */
138 + $rule = $this->getRule(FileRule::id());
139 +
140 + return $rule->getAllowedMimeTypes();
141 + }
142 +
143 + /**
59 144 * Set the allowed file types.
60 145 *
61 - * @param string[] $allowedTypes
146 + * @deprecated use allowedMimeTypes() instead
62 147 *
63 - * @return $this
148 + * @param string[] $allowedTypes
64 149 */
65 - public function allowedTypes(array $allowedTypes)
150 + public function allowedTypes(array $allowedTypes): File
66 151 {
67 152 if ($this->hasRule('allowedTypes')) {
68 153 /** @var AllowedTypes $rule */
69 154 $rule = $this->getRule('allowedTypes');
@@ -77,15 +162,20 @@
77 162
78 163 /**
79 164 * Access the allowed file types.
80 165 *
166 + * @deprecated use getAllowedMimeTypes() instead
167 + *
81 168 * @return string[]
82 169 */
83 - public function getAllowedTypes()
170 + public function getAllowedTypes(): array
84 171 {
85 - if (!$this->hasRule('allowedTypes')) {
172 + if ( ! $this->hasRule('allowedTypes')) {
86 173 return get_allowed_mime_types();
87 174 }
88 175
89 - return $this->getRule('allowedTypes')->getAllowedTypes();
176 + /** @var AllowedTypes $rule */
177 + $rule = $this->getRule('allowedTypes');
178 +
179 + return $rule->getAllowedTypes();
90 180 }
91 181 }