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 / Max.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
Max.php
140 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 Max 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('Max 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 'max';
46 }
47
48 /**
49 * @inheritDoc
50 */
51 public static function fromString(?string $options = null): ValidationRule
52 {
53 if (!is_numeric($options)) {
54 Config::throwInvalidArgumentException('Max 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, and report exceeding the maximum instead of
80 * repeating the minimum wording.
81 * @since 3.0.0
82 **/
83 public function __invoke($value, Closure $fail, string $key, array $values)
84 {
85 $value = $this->sanitize($value);
86
87 if ($this->isExemptAmount($value)) {
88 return;
89 }
90
91 if (is_numeric($value)) {
92 if ($value > $this->getSize()) {
93 $fail(sprintf(__('%s must be less than or equal to %s', 'give'), '{field}', $this->getSize()));
94 }
95 } elseif (is_string($value)) {
96 if (mb_strlen($value) > $this->getSize()) {
97 $fail(sprintf(__('%s must be less than or equal to %d characters', 'give'), '{field}', $this->getSize()));
98 }
99 } else {
100 Config::throwValidationException("Field value must be a number or string");
101 }
102 }
103
104 /**
105 * @since 3.0.0
106 *
107 * @return numeric
108 */
109 public function serializeOption()
110 {
111 return $this->size;
112 }
113
114 /**
115 * @since 3.0.0
116 *
117 * @return numeric
118 */
119 public function getSize()
120 {
121 return $this->size;
122 }
123
124 /**
125 * @since 3.0.0
126 *
127 * @param numeric $size
128 *
129 * @return void
130 */
131 public function size($size)
132 {
133 if ($size <= 0) {
134 Config::throwInvalidArgumentException('Max validation rule requires a non-negative value');
135 }
136
137 $this->size = $this->sanitize($size);
138 }
139 }
140