PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 4.16.3
GiveWP – Donation Plugin and Fundraising Platform v4.16.3
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 8 months ago
DonationFields.php
83 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.13.0 update money object format to use value and currency
22 * @since 4.8.0
23 *
24 * @param string $key
25 * @param mixed $value
26 * @return mixed
27 */
28 public static function processValue(string $key, $value)
29 {
30 switch ($key) {
31 case 'amount':
32 case 'feeAmountRecovered':
33 if (is_array($value)) {
34 // Handle Money object array format: ['value' => 100.00, 'currency' => 'USD']
35 if (isset($value['value']) && isset($value['currency'])) {
36 return Money::fromDecimal($value['value'], $value['currency']);
37 }
38 }
39 return $value;
40
41 case 'status':
42 if (is_string($value) && DonationStatus::isValid($value)) {
43 return new DonationStatus($value);
44 }
45 return $value;
46
47 case 'type':
48 if (is_string($value) && DonationType::isValid($value)) {
49 return new DonationType($value);
50 }
51 return $value;
52
53 case 'mode':
54 if (is_string($value) && DonationMode::isValid($value)) {
55 return new DonationMode($value);
56 }
57 return $value;
58
59 case 'billingAddress':
60 if (is_array($value)) {
61 return BillingAddress::fromArray($value);
62 }
63 return $value;
64
65 case 'createdAt':
66 case 'updatedAt':
67 try {
68 if (is_string($value)) {
69 return new DateTime($value, wp_timezone());
70 } elseif (is_array($value)) {
71 return new DateTime($value['date'], new \DateTimeZone($value['timezone']));
72 }
73 } catch (\Exception $e) {
74 throw new InvalidArgumentException("Invalid date format for {$key}: {$value}.");
75 }
76 return $value;
77
78 default:
79 return $value;
80 }
81 }
82 }
83