PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 3.0.3
GiveWP – Donation Plugin and Fundraising Platform v3.0.3
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 / vendor / vendor-prefixed / stellarwp / validation / src / Validator.php
give / vendor / vendor-prefixed / stellarwp / validation / src Last commit date
Commands 2 years ago Concerns 2 years ago Contracts 2 years ago Exceptions 2 years ago Rules 2 years ago Config.php 2 years ago ServiceProvider.php 2 years ago ValidationRuleSet.php 2 years ago ValidationRulesRegistrar.php 2 years ago Validator.php 2 years ago
Validator.php
173 lines
1 <?php
2 /**
3 * @license GPL-2.0-or-later
4 *
5 * Modified by impress-org on 21-October-2023 using Strauss.
6 * @see https://github.com/BrianHenryIE/strauss
7 */
8
9 declare(strict_types=1);
10
11 namespace Give\Vendors\StellarWP\Validation;
12
13 use Give\Vendors\StellarWP\Validation\Commands\ExcludeValue;
14 use Give\Vendors\StellarWP\Validation\Commands\SkipValidationRules;
15 use Give\Vendors\StellarWP\Validation\Contracts\Sanitizer;
16
17 /**
18 * A tool for taking in a set of values and corresponding validation rules, and then validating the values.
19 *
20 * @since 1.0.0
21 */
22 class Validator
23 {
24 /**
25 * @var array<string, ValidationRuleSet>
26 */
27 private $ruleSets;
28
29 /**
30 * @var array<string, mixed>
31 */
32 private $values;
33
34 /**
35 * @var array<string, string>
36 */
37 private $labels;
38
39 /**
40 * @var array<string, string>
41 */
42 private $errors = [];
43
44 /**
45 * @var array<string, mixed>
46 */
47 private $validatedValues = [];
48
49 /**
50 * @var bool
51 */
52 private $ranValidationRules = false;
53
54 /**
55 * @since 1.0.0
56 *
57 * @param array<string, ValidationRuleSet|array> $ruleSets
58 * @param array<string, mixed> $values
59 */
60 public function __construct(array $ruleSets, array $values, array $labels = [])
61 {
62 $validatedRules = [];
63 foreach ($ruleSets as $key => $rule) {
64 if (is_array($rule)) {
65 $validatedRules[$key] = Config::getServiceContainer()->get(ValidationRuleSet::class)->rules(...$rule);
66 } elseif ($rule instanceof ValidationRuleSet) {
67 $validatedRules[$key] = $rule;
68 } else {
69 Config::throwInvalidArgumentException(
70 'Validation rules must be an instance of ValidationRuleSet or a compatible array'
71 );
72 }
73 }
74
75 $this->ruleSets = $validatedRules;
76 $this->values = $values;
77 $this->labels = $labels;
78 }
79
80 /**
81 * Returns whether the values failed validation or not.
82 *
83 * @since 1.0.0
84 */
85 public function fails(): bool
86 {
87 return !$this->passes();
88 }
89
90 /**
91 * Returns whether the values passed validation or not.
92 *
93 * @since 1.0.0
94 */
95 public function passes(): bool
96 {
97 $this->runValidationRules();
98
99 return empty($this->errors);
100 }
101
102 /**
103 * Runs the validation rules on the values, and stores any resulting errors.
104 * Will run only once, and then store the results for subsequent calls.
105 *
106 * @since 1.0.0
107 *
108 * @return void
109 */
110 private function runValidationRules()
111 {
112 if ($this->ranValidationRules) {
113 return;
114 }
115
116 foreach ($this->ruleSets as $key => $ruleSet) {
117 $label = $this->labels[$key] ?? $key;
118 $value = $this->values[$key] ?? null;
119
120 $fail = function (string $message) use ($key, $label) {
121 $this->errors[$key] = str_ireplace('{field}', $label, $message);
122 };
123
124 foreach ($ruleSet as $rule) {
125 $command = $rule($value, $fail, $key, $this->values);
126
127 if ($command instanceof SkipValidationRules) {
128 break;
129 }
130
131 if ($command instanceof ExcludeValue) {
132 // Skip the rest of the rule and do not store the value
133 continue 2;
134 }
135
136 if ($rule instanceof Sanitizer) {
137 $value = $rule->sanitize($value);
138 }
139 }
140
141 $this->validatedValues[$key] = $value;
142 }
143
144 $this->ranValidationRules = true;
145 }
146
147 /**
148 * Returns the errors that were found during validation.
149 *
150 * @since 1.0.0
151 *
152 * @return array<string, string>
153 */
154 public function errors(): array
155 {
156 $this->runValidationRules();
157
158 return $this->errors;
159 }
160
161 /**
162 * Returns the validated values, with any sanitization rules applied.
163 *
164 * @since 1.0.0
165 */
166 public function validated(): array
167 {
168 $this->runValidationRules();
169
170 return $this->validatedValues;
171 }
172 }
173