PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 4.16.8
GiveWP – Donation Plugin and Fundraising Platform v4.16.8
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 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 / DonationForms / Rules / Min.php
give / src / DonationForms / Rules Last commit date
Concerns 2 days ago ArrayRule.php 2 years ago AuthenticationRule.php 2 years ago BillingAddressCityRule.php 2 years ago BillingAddressStateRule.php 2 years ago BillingAddressZipRule.php 2 years ago CurrencyRule.php 11 months ago DonationTypeRule.php 2 years ago GatewayRule.php 2 years ago HoneyPotRule.php 1 year ago Max.php 2 days ago Min.php 2 days ago PhoneIntlInputRule.php 2 years ago Size.php 2 years ago SubscriptionFrequencyRule.php 2 years ago SubscriptionInstallmentsRule.php 2 years ago SubscriptionPeriodRule.php 2 years ago
Min.php
139 lines
1 <?php
2 namespace Give\DonationForms\Rules;
3
4
5 use Closure;
6 use Give\DonationForms\Rules\Concerns\HasExemptAmounts;
7 use Give\Vendors\StellarWP\Validation\Config;
8 use Give\Vendors\StellarWP\Validation\Contracts\ValidatesOnFrontEnd;
9 use Give\Vendors\StellarWP\Validation\Contracts\ValidationRule;
10
11 use function is_numeric;
12
13 /**
14 * @since 4.16.8 Implement the rule directly instead of extending the vendor rule, whose size is an integer.
15 * @since 3.0.0
16 */
17 class Min implements ValidationRule, ValidatesOnFrontEnd
18 {
19 use HasExemptAmounts;
20
21 /**
22 * @var numeric
23 */
24 protected $size;
25
26 /**
27 * @since 4.16.8
28 *
29 * @param numeric $size
30 */
31 public function __construct($size)
32 {
33 if ($size <= 0) {
34 Config::throwInvalidArgumentException('Min validation rule requires a non-negative value');
35 }
36
37 $this->size = $this->sanitize($size);
38 }
39
40 /**
41 * @inheritDoc
42 */
43 public static function id(): string
44 {
45 return 'min';
46 }
47
48 /**
49 * @inheritDoc
50 */
51 public static function fromString(?string $options = null): ValidationRule
52 {
53 if (!is_numeric($options)) {
54 Config::throwInvalidArgumentException('Min validation rule requires a numeric value');
55 }
56
57 return new self($options);
58 }
59
60 /**
61 * @since 3.0.0
62 */
63 public function sanitize($value)
64 {
65 if (is_numeric($value)) {
66 if (strpos((string)$value, '.') !== false) {
67 return (float)$value;
68 }
69
70 return (int)$value;
71 }
72
73 return $value;
74 }
75
76 /**
77 * @inheritDoc
78 *
79 * @since 4.16.8 Skip amounts the admin configured on the form.
80 * @since 3.0.0
81 **/
82 public function __invoke($value, Closure $fail, string $key, array $values)
83 {
84 $value = $this->sanitize($value);
85
86 if ($this->isExemptAmount($value)) {
87 return;
88 }
89
90 if (is_numeric($value)) {
91 if ($value < $this->getSize()) {
92 $fail(sprintf(__('%s must be greater than or equal to %s', 'give'), '{field}', $this->getSize()));
93 }
94 } elseif (is_string($value)) {
95 if (mb_strlen($value) < $this->getSize()) {
96 $fail(sprintf(__('%s must be more than or equal to %d characters', 'give'), '{field}', $this->getSize()));
97 }
98 } else {
99 Config::throwValidationException("Field value must be a number or string");
100 }
101 }
102
103 /**
104 * @since 3.0.0
105 *
106 * @return numeric
107 */
108 public function serializeOption()
109 {
110 return $this->size;
111 }
112
113 /**
114 * @since 3.0.0
115 *
116 * @return numeric
117 */
118 public function getSize()
119 {
120 return $this->size;
121 }
122
123 /**
124 * @since 3.0.0
125 *
126 * @param numeric $size
127 *
128 * @return void
129 */
130 public function size($size)
131 {
132 if ($size <= 0) {
133 Config::throwInvalidArgumentException('Min validation rule requires a non-negative value');
134 }
135
136 $this->size = $this->sanitize($size);
137 }
138 }
139