PluginProbe
GiveWP – Donation Plugin and Fundraising Platform / 2.16.0
GiveWP – Donation Plugin and Fundraising Platform v2.16.0
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 2.31.0 2.31.1 All 253 releases
← All changes | src/Framework/FieldsAPI/File.php +57 -162 4.16.02.16.0 View file →
@@ -1,181 +1,76 @@
1 1 <?php
2 2
3 3 namespace Give\Framework\FieldsAPI;
4 4
5 -use Give\Framework\ValidationRules\Rules\AllowedTypes;
6 -use Give\Framework\ValidationRules\Rules\File as FileRule;
7 -use Give\Vendors\StellarWP\Validation\Rules\Max;
5 +use function get_allowed_mime_types;
6 +use function wp_max_upload_size;
8 7
9 8 /**
10 9 * A file upload field.
11 10 *
12 - * @since 4.3.0 Added maxUploadSize property.
13 - * @since 2.32.0 Updated to use the new Validation File Rule; added description
14 11 * @since 2.12.0
15 - * @since 2.23.1 Moved default rule values inline since inherited constructor is final.
16 12 */
17 -class File extends Field
18 -{
19 - use Concerns\AllowMultiple;
20 - use Concerns\HasEmailTag;
21 - use Concerns\HasHelpText;
22 - use Concerns\HasLabel;
23 - use Concerns\HasDescription;
13 +class File extends Field {
24 14
25 - const TYPE = 'file';
15 + use Concerns\AllowMultiple;
16 + use Concerns\HasEmailTag;
17 + use Concerns\HasHelpText;
18 + use Concerns\HasLabel;
19 + use Concerns\ShowInReceipt;
20 + use Concerns\StoreAsMeta;
21 + use Concerns\AllowMultiple;
26 22
27 - protected $allowedMimeTypes = [];
28 - protected $maxUploadSize = null;
23 + const TYPE = 'file';
29 24
30 - /**
31 - * Set the maximum file size.
32 - *
33 - * @deprecated use maxUploadSize() instead
34 - *
35 - * @param int $maxSize
36 - *
37 - * @return $this
38 - */
39 - public function maxSize($maxSize)
40 - {
41 - if ($this->hasRule('max')) {
42 - /** @var Max $rule */
43 - $rule = $this->getRule('max');
44 - $rule->size($maxSize);
45 - }
25 + /**
26 + * @param string $name
27 + *
28 + * @since 2.16.0 File size unit is bytes, so no need to convert WordPress max file upload size to kilo bytes.
29 + */
30 + public function __construct( $name ) {
31 + parent::__construct( $name );
46 32
47 - $this->rules("max:$maxSize");
33 + $this->validationRules->rule( 'maxSize', wp_max_upload_size() ); // in bytes
34 + $this->validationRules->rule( 'allowedTypes', get_allowed_mime_types() );
35 + }
48 36
49 - return $this;
50 - }
37 + /**
38 + * Set the maximum file size.
39 + *
40 + * @param int $maxSize
41 + * @return $this
42 + */
43 + public function maxSize( $maxSize ) {
44 + $this->validationRules->rule( 'maxSize', $maxSize );
45 + return $this;
46 + }
51 47
52 - /**
53 - * Access the maximum file size.
54 - *
55 - * @deprecated use getMaxUploadSize() instead
56 - */
57 - public function getMaxSize(): int
58 - {
59 - if ( ! $this->hasRule('max')) {
60 - return wp_max_upload_size();
61 - }
48 + /**
49 + * Access the maximum file size.
50 + *
51 + * @return int
52 + */
53 + public function getMaxSize() {
54 + return $this->validationRules->getRule( 'maxSize' );
55 + }
62 56
63 - return $this->getRule('max')->getSize();
64 - }
57 + /**
58 + * Set the allowed file types.
59 + *
60 + * @param string[] $allowedTypes
61 + * @return $this
62 + */
63 + public function allowedTypes( $allowedTypes ) {
64 + $this->validationRules->rule( 'allowedTypes', $allowedTypes );
65 + return $this;
66 + }
65 67
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 - /**
144 - * Set the allowed file types.
145 - *
146 - * @deprecated use allowedMimeTypes() instead
147 - *
148 - * @param string[] $allowedTypes
149 - */
150 - public function allowedTypes(array $allowedTypes): File
151 - {
152 - if ($this->hasRule('allowedTypes')) {
153 - /** @var AllowedTypes $rule */
154 - $rule = $this->getRule('allowedTypes');
155 - $rule->setAllowedtypes($allowedTypes);
156 - }
157 -
158 - $this->rules('allowedTypes:' . implode(',', $allowedTypes));
159 -
160 - return $this;
161 - }
162 -
163 - /**
164 - * Access the allowed file types.
165 - *
166 - * @deprecated use getAllowedMimeTypes() instead
167 - *
168 - * @return string[]
169 - */
170 - public function getAllowedTypes(): array
171 - {
172 - if ( ! $this->hasRule('allowedTypes')) {
173 - return get_allowed_mime_types();
174 - }
175 -
176 - /** @var AllowedTypes $rule */
177 - $rule = $this->getRule('allowedTypes');
178 -
179 - return $rule->getAllowedTypes();
180 - }
68 + /**
69 + * Access the allowed file types.
70 + *
71 + * @return string[]
72 + */
73 + public function getAllowedTypes() {
74 + return $this->validationRules->getRule( 'allowedTypes' );
75 + }
181 76 }