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