PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 4.10.1
GiveWP – Donation Plugin and Fundraising Platform v4.10.1
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 / API / REST / V3 / Routes / Donations / Fields / DonationFields.php
give / src / API / REST / V3 / Routes / Donations / Fields Last commit date
DonationFields.php 10 months ago
DonationFields.php
82 lines
1 <?php
2
3 namespace Give\API\REST\V3\Routes\Donations\Fields;
4
5 use DateTime;
6 use Give\Donations\Properties\BillingAddress;
7 use Give\Donations\ValueObjects\DonationMode;
8 use Give\Donations\ValueObjects\DonationStatus;
9 use Give\Donations\ValueObjects\DonationType;
10 use Give\Framework\Exceptions\Primitives\InvalidArgumentException;
11 use Give\Framework\Support\ValueObjects\Money;
12
13 /**
14 * @since 4.8.0
15 */
16 class DonationFields
17 {
18 /**
19 * Process field values for special data types before setting them on the donation model.
20 *
21 * @since 4.8.0
22 *
23 * @param string $key
24 * @param mixed $value
25 * @return mixed
26 */
27 public static function processValue(string $key, $value)
28 {
29 switch ($key) {
30 case 'amount':
31 case 'feeAmountRecovered':
32 if (is_array($value)) {
33 // Handle Money object array format: ['amount' => 100.00, 'currency' => 'USD']
34 if (isset($value['amount']) && isset($value['currency'])) {
35 return Money::fromDecimal($value['amount'], $value['currency']);
36 }
37 }
38 return $value;
39
40 case 'status':
41 if (is_string($value) && DonationStatus::isValid($value)) {
42 return new DonationStatus($value);
43 }
44 return $value;
45
46 case 'type':
47 if (is_string($value) && DonationType::isValid($value)) {
48 return new DonationType($value);
49 }
50 return $value;
51
52 case 'mode':
53 if (is_string($value) && DonationMode::isValid($value)) {
54 return new DonationMode($value);
55 }
56 return $value;
57
58 case 'billingAddress':
59 if (is_array($value)) {
60 return BillingAddress::fromArray($value);
61 }
62 return $value;
63
64 case 'createdAt':
65 case 'updatedAt':
66 try {
67 if (is_string($value)) {
68 return new DateTime($value, wp_timezone());
69 } elseif (is_array($value)) {
70 return new DateTime($value['date'], new \DateTimeZone($value['timezone']));
71 }
72 } catch (\Exception $e) {
73 throw new InvalidArgumentException("Invalid date format for {$key}: {$value}.");
74 }
75 return $value;
76
77 default:
78 return $value;
79 }
80 }
81 }
82