Abstracts
2 years ago
Boolean.php
2 years ago
Currency.php
2 years ago
DateTime.php
2 years ago
Email.php
2 years ago
Exclude.php
2 years ago
ExcludeIf.php
2 years ago
ExcludeUnless.php
2 years ago
In.php
2 years ago
InStrict.php
2 years ago
Integer.php
2 years ago
Max.php
2 years ago
Min.php
2 years ago
Nullable.php
2 years ago
NullableIf.php
2 years ago
NullableUnless.php
2 years ago
Numeric.php
2 years ago
Optional.php
2 years ago
OptionalIf.php
2 years ago
OptionalUnless.php
2 years ago
Required.php
2 years ago
Size.php
2 years ago
Currency.php
192 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\Rules; |
| 12 | |
| 13 | use Closure; |
| 14 | use Give\Vendors\StellarWP\Validation\Contracts\ValidatesOnFrontEnd; |
| 15 | use Give\Vendors\StellarWP\Validation\Contracts\ValidationRule; |
| 16 | |
| 17 | class Currency implements ValidationRule, ValidatesOnFrontEnd |
| 18 | { |
| 19 | /** |
| 20 | * @inheritDoc |
| 21 | * |
| 22 | * @since 1.0.0 |
| 23 | */ |
| 24 | public static function id(): string |
| 25 | { |
| 26 | return 'currency'; |
| 27 | } |
| 28 | |
| 29 | /** |
| 30 | * @inheritDoc |
| 31 | * |
| 32 | * @since 1.0.0 |
| 33 | */ |
| 34 | public static function fromString(string $options = null): ValidationRule |
| 35 | { |
| 36 | return new self(); |
| 37 | } |
| 38 | |
| 39 | /** |
| 40 | * @inheritDoc |
| 41 | * |
| 42 | * @since 1.0.0 |
| 43 | */ |
| 44 | public function serializeOption() |
| 45 | { |
| 46 | return null; |
| 47 | } |
| 48 | |
| 49 | /** |
| 50 | * @inheritDoc |
| 51 | * |
| 52 | * @since 1.0.0 |
| 53 | */ |
| 54 | public function __invoke($value, Closure $fail, string $key, array $values) |
| 55 | { |
| 56 | if (!is_string($value) || !in_array(strtoupper($value), self::currencyCodes(), true)) { |
| 57 | $fail(sprintf(__('%s must be a valid currency', 'give'), '{field}')); |
| 58 | } |
| 59 | } |
| 60 | |
| 61 | /** |
| 62 | * @since 1.0.0 |
| 63 | * |
| 64 | * @return string[] |
| 65 | */ |
| 66 | public static function currencyCodes(): array |
| 67 | { |
| 68 | static $codes = null; |
| 69 | |
| 70 | if ($codes === null) { |
| 71 | $codes = [ |
| 72 | "ALL", |
| 73 | "AFN", |
| 74 | "ARS", |
| 75 | "AWG", |
| 76 | "AUD", |
| 77 | "AZN", |
| 78 | "BSD", |
| 79 | "BBD", |
| 80 | "BDT", |
| 81 | "BYR", |
| 82 | "BZD", |
| 83 | "BMD", |
| 84 | "BOB", |
| 85 | "BAM", |
| 86 | "BWP", |
| 87 | "BGN", |
| 88 | "BRL", |
| 89 | "BND", |
| 90 | "KHR", |
| 91 | "CAD", |
| 92 | "KYD", |
| 93 | "CLP", |
| 94 | "CNY", |
| 95 | "COP", |
| 96 | "CRC", |
| 97 | "HRK", |
| 98 | "CUP", |
| 99 | "CZK", |
| 100 | "DKK", |
| 101 | "DOP", |
| 102 | "XCD", |
| 103 | "EGP", |
| 104 | "SVC", |
| 105 | "EEK", |
| 106 | "EUR", |
| 107 | "FKP", |
| 108 | "FJD", |
| 109 | "GHC", |
| 110 | "GIP", |
| 111 | "GTQ", |
| 112 | "GGP", |
| 113 | "GYD", |
| 114 | "HNL", |
| 115 | "HKD", |
| 116 | "HUF", |
| 117 | "ISK", |
| 118 | "INR", |
| 119 | "IDR", |
| 120 | "IRR", |
| 121 | "IMP", |
| 122 | "ILS", |
| 123 | "JMD", |
| 124 | "JPY", |
| 125 | "JEP", |
| 126 | "KZT", |
| 127 | "KPW", |
| 128 | "KRW", |
| 129 | "KGS", |
| 130 | "LAK", |
| 131 | "LVL", |
| 132 | "LBP", |
| 133 | "LRD", |
| 134 | "LTL", |
| 135 | "MKD", |
| 136 | "MYR", |
| 137 | "MUR", |
| 138 | "MXN", |
| 139 | "MNT", |
| 140 | "MZN", |
| 141 | "NAD", |
| 142 | "NPR", |
| 143 | "ANG", |
| 144 | "NZD", |
| 145 | "NIO", |
| 146 | "NGN", |
| 147 | "NOK", |
| 148 | "OMR", |
| 149 | "PKR", |
| 150 | "PAB", |
| 151 | "PYG", |
| 152 | "PEN", |
| 153 | "PHP", |
| 154 | "PLN", |
| 155 | "QAR", |
| 156 | "RON", |
| 157 | "RUB", |
| 158 | "SHP", |
| 159 | "SAR", |
| 160 | "RSD", |
| 161 | "SCR", |
| 162 | "SGD", |
| 163 | "SBD", |
| 164 | "SOS", |
| 165 | "ZAR", |
| 166 | "LKR", |
| 167 | "SEK", |
| 168 | "CHF", |
| 169 | "SRD", |
| 170 | "SYP", |
| 171 | "TWD", |
| 172 | "THB", |
| 173 | "TTD", |
| 174 | "TRY", |
| 175 | "TRL", |
| 176 | "TVD", |
| 177 | "UAH", |
| 178 | "GBP", |
| 179 | "USD", |
| 180 | "UYU", |
| 181 | "UZS", |
| 182 | "VEF", |
| 183 | "VND", |
| 184 | "YER", |
| 185 | "ZWD", |
| 186 | ]; |
| 187 | } |
| 188 | |
| 189 | return $codes; |
| 190 | } |
| 191 | } |
| 192 |