PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 2.22.1
GiveWP – Donation Plugin and Fundraising Platform v2.22.1
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 / Donations / DataTransferObjects / DonationResponseData.php
give / src / Donations / DataTransferObjects Last commit date
DonationQueryData.php 3 years ago DonationResponseData.php 4 years ago
DonationResponseData.php
148 lines
1 <?php
2
3 namespace Give\Donations\DataTransferObjects;
4
5 use DateTime;
6 use Give\Donations\ValueObjects\DonationMetaKeys;
7 use Give\Donations\ValueObjects\DonationMode;
8 use Give\Donations\ValueObjects\DonationStatus;
9 use Give\Framework\Support\Contracts\Arrayable;
10 use Give\Helpers\Date;
11
12 /**
13 * Class DonationResponseData
14 *
15 * @since 2.20.0
16 */
17 class DonationResponseData implements Arrayable
18 {
19 /**
20 * @var int
21 */
22 public $amount;
23 /**
24 * @var int
25 */
26 public $donorId;
27 /**
28 * @var string
29 */
30 public $donorName;
31 /**
32 * @var string
33 */
34 public $email;
35 /**
36 * @var int
37 */
38 public $id;
39 /**
40 * @var DonationStatus
41 */
42 public $status;
43 /**
44 * @var DateTime
45 */
46 public $createdAt;
47 /**
48 * @var string
49 */
50 public $gateway;
51 /**
52 * @var integer
53 */
54 public $formId;
55 /**
56 * @var string
57 */
58 public $formTitle;
59 /**
60 * @var DonationMode
61 */
62 public $paymentMode;
63 /**
64 * @var bool
65 */
66 public $anonymous;
67 /**
68 * @var string
69 */
70 public $donationType;
71 /**
72 * @var string
73 */
74 public $name;
75
76 /**
77 * Convert data from object to Donation
78 *
79 * @param object $donation
80 *
81 * @since 2.21.0 use meta keys as camelcase
82 * @since 2.20.0
83 */
84 public static function fromObject($donation): DonationResponseData
85 {
86 $self = new static();
87
88 $self->id = (int)$donation->id;
89 $self->formId = (int)$donation->{DonationMetaKeys::FORM_ID()->getKeyAsCamelCase()};
90 $self->formTitle = $donation->{DonationMetaKeys::FORM_TITLE()->getKeyAsCamelCase()};
91 $self->amount = html_entity_decode(
92 give_currency_filter(give_format_amount($donation->{DonationMetaKeys::AMOUNT()->getKeyAsCamelCase()}))
93 );
94 $self->donorId = (int)$donation->{DonationMetaKeys::DONOR_ID()->getKeyAsCamelCase()};
95 $self->name = $donation->{DonationMetaKeys::FIRST_NAME()->getKeyAsCamelCase(
96 )} . ' ' . $donation->{DonationMetaKeys::LAST_NAME()->getKeyAsCamelCase()};
97 $self->email = $donation->{DonationMetaKeys::EMAIL()->getKeyAsCamelCase()};
98 $self->gateway = give_get_gateway_admin_label($donation->{DonationMetaKeys::GATEWAY()->getKeyAsCamelCase()});
99 $self->createdAt = Date::getDateTime($donation->createdAt);
100 $self->status = new DonationStatus($donation->status);
101 $self->paymentMode = $donation->{DonationMetaKeys::MODE()->getKeyAsCamelCase()};
102 $self->anonymous = (bool)$donation->{DonationMetaKeys::ANONYMOUS()->getKeyAsCamelCase()};
103 $self->donationType = self::getDonationType($donation);
104
105 return $self;
106 }
107
108 /**
109 * Convert DTO to array
110 *
111 * @since 2.20.0
112 */
113 public function toArray(): array
114 {
115 return get_object_vars($this);
116 }
117
118 /**
119 * Get donation type to display on front-end
120 *
121 * @since 2.21.0 refactor conditional for subscription renewals
122 * @since 2.20.0
123 * @param object $donation
124 */
125 private static function getDonationType($donation): string
126 {
127 /**
128 * Initial donations will have a special meta key
129 */
130 if ($donation->{DonationMetaKeys::SUBSCRIPTION_INITIAL_DONATION()->getKeyAsCamelCase()}) {
131 return 'subscription';
132 }
133
134 $hasRenewalStatus = $donation->status === DonationStatus::RENEWAL;
135 $hasSubscriptionId = !empty($donation->{DonationMetaKeys::SUBSCRIPTION_ID()->getKeyAsCamelCase()});
136 $hasRenewalMetaKey = !empty($donation->{DonationMetaKeys::IS_RECURRING()->getKeyAsCamelCase()});
137
138 /**
139 * Renewals are determined by a few different ways through GiveWP versions
140 */
141 if ($hasRenewalStatus || $hasSubscriptionId || $hasRenewalMetaKey) {
142 return 'renewal';
143 }
144
145 return 'single';
146 }
147 }
148