PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 3.2.0
GiveWP – Donation Plugin and Fundraising Platform v3.2.0
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 / Donations / DataTransferObjects / DonationQueryData.php
give / src / Donations / DataTransferObjects Last commit date
DonationQueryData.php 2 years ago
DonationQueryData.php
210 lines
1 <?php
2
3 namespace Give\Donations\DataTransferObjects;
4
5 use DateTime;
6 use Give\Donations\Models\Donation;
7 use Give\Donations\Properties\BillingAddress;
8 use Give\Donations\ValueObjects\DonationMetaKeys;
9 use Give\Donations\ValueObjects\DonationMode;
10 use Give\Donations\ValueObjects\DonationStatus;
11 use Give\Donations\ValueObjects\DonationType;
12 use Give\Framework\Support\Facades\DateTime\Temporal;
13 use Give\Framework\Support\ValueObjects\Money;
14
15 /**
16 * Class DonationData
17 *
18 * @since 3.2.0 added honorific property
19 * @since 2.23.0 remove parentId property
20 * @since 2.19.6
21 */
22 final class DonationQueryData
23 {
24 /**
25 * @var Money
26 */
27 public $amount;
28 /**
29 * @var string
30 */
31 public $exchangeRate;
32 /**
33 * @var Money
34 */
35 public $feeAmountRecovered;
36 /**
37 * @var int
38 */
39 public $donorId;
40 /**
41 * @var string
42 */
43 public $firstName;
44 /**
45 * @var string
46 */
47 public $lastName;
48 /**
49 * @var string
50 */
51 public $email;
52 /**
53 * @var int
54 */
55 public $id;
56 /**
57 * @var DonationStatus
58 */
59 public $status;
60 /**
61 * @var int
62 */
63 public $subscriptionId;
64 /**
65 * @var DateTime
66 */
67 public $updatedAt;
68 /**
69 * @var DateTime
70 */
71 public $createdAt;
72 /**
73 * @var string
74 */
75 public $gatewayId;
76 /**
77 * @var DonationMode
78 */
79 public $mode;
80 /**
81 * @var DonationType
82 */
83 public $type;
84 /**
85 * @var int
86 */
87 public $formId;
88 /**
89 * @var BillingAddress
90 */
91 public $billingAddress;
92 /**
93 * @var string
94 */
95 public $formTitle;
96 /**
97 * @var string
98 */
99 public $purchaseKey;
100 /**
101 * @var string
102 */
103 public $donorIp;
104 /**
105 * @var bool
106 */
107 public $anonymous;
108 /**
109 * @var int
110 */
111 public $levelId;
112 /**
113 * @var string
114 */
115 public $gatewayTransactionId;
116 /**
117 * @var string|null
118 */
119 public $company;
120 /**
121 * @var string|null
122 */
123 public $comment;
124 /**
125 * @var string|null
126 */
127 public $honorific;
128
129 /**
130 * Convert data from object to Donation
131 *
132 * @since 3.2.0 add fallback for donation mode
133 * @since 2.23.0 remove parentId property
134 * @since 2.22.0 add support for company field
135 * @since 2.20.0 update for new amount property, fee amount recovered, and exchange rate
136 * @since 2.19.6
137 *
138 * @param object $donationQueryObject
139 *
140 * @return self
141 */
142 public static function fromObject($donationQueryObject): self
143 {
144 $self = new static();
145
146 $currency = $donationQueryObject->{DonationMetaKeys::CURRENCY()->getKeyAsCamelCase()};
147 $feeAmountRecovered = $donationQueryObject->{DonationMetaKeys::FEE_AMOUNT_RECOVERED()->getKeyAsCamelCase()};
148 $donationMode = $donationQueryObject->{DonationMetaKeys::MODE()->getKeyAsCamelCase()};
149
150 $self->id = (int)$donationQueryObject->id;
151 $self->formId = (int)$donationQueryObject->{DonationMetaKeys::FORM_ID()->getKeyAsCamelCase()};
152 $self->formTitle = $donationQueryObject->{DonationMetaKeys::FORM_TITLE()->getKeyAsCamelCase()};
153 $self->amount = Money::fromDecimal(
154 $donationQueryObject->{DonationMetaKeys::AMOUNT()->getKeyAsCamelCase()},
155 $currency
156 );
157 $self->feeAmountRecovered = $feeAmountRecovered ? Money::fromDecimal($feeAmountRecovered, $currency) : null;
158 $self->exchangeRate = $donationQueryObject->{DonationMetaKeys::EXCHANGE_RATE()->getKeyAsCamelCase()};
159 $self->donorId = (int)$donationQueryObject->{DonationMetaKeys::DONOR_ID()->getKeyAsCamelCase()};
160 $self->honorific = $donationQueryObject->{DonationMetaKeys::HONORIFIC()->getKeyAsCamelCase()};
161 $self->firstName = $donationQueryObject->{DonationMetaKeys::FIRST_NAME()->getKeyAsCamelCase()};
162 $self->lastName = $donationQueryObject->{DonationMetaKeys::LAST_NAME()->getKeyAsCamelCase()};
163 $self->email = $donationQueryObject->{DonationMetaKeys::EMAIL()->getKeyAsCamelCase()};
164 $self->gatewayId = $donationQueryObject->{DonationMetaKeys::GATEWAY()->getKeyAsCamelCase()};
165 $self->createdAt = Temporal::toDateTime($donationQueryObject->createdAt);
166 $self->updatedAt = Temporal::toDateTime($donationQueryObject->updatedAt);
167 $self->status = new DonationStatus($donationQueryObject->status);
168 $self->subscriptionId = (int)$donationQueryObject->{DonationMetaKeys::SUBSCRIPTION_ID()->getKeyAsCamelCase()};
169 $self->mode = DonationMode::isValid($donationMode) ? new DonationMode($donationMode) : DonationMode::LIVE();
170 $self->billingAddress = BillingAddress::fromArray([
171 'country' => $donationQueryObject->{DonationMetaKeys::BILLING_COUNTRY()->getKeyAsCamelCase()},
172 'city' => $donationQueryObject->{DonationMetaKeys::BILLING_CITY()->getKeyAsCamelCase()},
173 'state' => $donationQueryObject->{DonationMetaKeys::BILLING_STATE()->getKeyAsCamelCase()},
174 'zip' => $donationQueryObject->{DonationMetaKeys::BILLING_ZIP()->getKeyAsCamelCase()},
175 'address1' => $donationQueryObject->{DonationMetaKeys::BILLING_ADDRESS1()->getKeyAsCamelCase()},
176 'address2' => $donationQueryObject->{DonationMetaKeys::BILLING_ADDRESS2()->getKeyAsCamelCase()},
177 ]);
178 $self->purchaseKey = $donationQueryObject->{DonationMetaKeys::PURCHASE_KEY()->getKeyAsCamelCase()};
179 $self->donorIp = $donationQueryObject->{DonationMetaKeys::DONOR_IP()->getKeyAsCamelCase()};
180 $self->anonymous = (bool)$donationQueryObject->{DonationMetaKeys::ANONYMOUS()->getKeyAsCamelCase()};
181 $self->levelId = (string)$donationQueryObject->{DonationMetaKeys::LEVEL_ID()->getKeyAsCamelCase()};
182 $self->gatewayTransactionId = $donationQueryObject->{DonationMetaKeys::GATEWAY_TRANSACTION_ID()
183 ->getKeyAsCamelCase()};
184 $self->company = $donationQueryObject->{DonationMetaKeys::COMPANY()
185 ->getKeyAsCamelCase()};
186 $self->comment = $donationQueryObject->{DonationMetaKeys::COMMENT()
187 ->getKeyAsCamelCase()};
188
189 if (!empty($donationQueryObject->{DonationMetaKeys::SUBSCRIPTION_INITIAL_DONATION()->getKeyAsCamelCase()})) {
190 $self->type = DonationType::SUBSCRIPTION();
191 } elseif ($self->subscriptionId) {
192 $self->type = DonationType::RENEWAL();
193 } else {
194 $self->type = DonationType::SINGLE();
195 }
196
197 return $self;
198 }
199
200 /**
201 * Convert DTO to Donation
202 */
203 public function toDonation(): Donation
204 {
205 $attributes = get_object_vars($this);
206
207 return new Donation($attributes);
208 }
209 }
210