PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 4.3.2
GiveWP – Donation Plugin and Fundraising Platform v4.3.2
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 1 year ago
DonationQueryData.php
222 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 string
54 */
55 public $phone;
56 /**
57 * @var int
58 */
59 public $id;
60 /**
61 * @var DonationStatus
62 */
63 public $status;
64 /**
65 * @var int
66 */
67 public $subscriptionId;
68 /**
69 * @var DateTime
70 */
71 public $updatedAt;
72 /**
73 * @var DateTime
74 */
75 public $createdAt;
76 /**
77 * @var string
78 */
79 public $gatewayId;
80 /**
81 * @var DonationMode
82 */
83 public $mode;
84 /**
85 * @var DonationType
86 */
87 public $type;
88 /**
89 * @var int
90 */
91 public $formId;
92 /**
93 * @var BillingAddress
94 */
95 public $billingAddress;
96 /**
97 * @var string
98 */
99 public $formTitle;
100 /**
101 * @var string
102 */
103 public $purchaseKey;
104 /**
105 * @var string
106 */
107 public $donorIp;
108 /**
109 * @var bool
110 */
111 public $anonymous;
112 /**
113 * @var int
114 */
115 public $levelId;
116 /**
117 * @var string
118 */
119 public $gatewayTransactionId;
120 /**
121 * @var string|null
122 */
123 public $company;
124 /**
125 * @var string|null
126 */
127 public $comment;
128 /**
129 * @var string|null
130 */
131 public $honorific;
132 /**
133 * @var int
134 */
135 public $campaignId;
136
137 /**
138 * Convert data from object to Donation
139 *
140 * @since 4.0.0 Added campaignId property
141 * @since 3.9.0 Add support for "phone" property
142 * @since 3.2.0 add fallback for donation mode
143 * @since 2.23.0 remove parentId property
144 * @since 2.22.0 add support for company field
145 * @since 2.20.0 update for new amount property, fee amount recovered, and exchange rate
146 * @since 2.19.6
147 *
148 * @param object $donationQueryObject
149 *
150 * @return self
151 */
152 public static function fromObject($donationQueryObject): self
153 {
154 $self = new static();
155
156 $currency = $donationQueryObject->{DonationMetaKeys::CURRENCY()->getKeyAsCamelCase()};
157 $feeAmountRecovered = $donationQueryObject->{DonationMetaKeys::FEE_AMOUNT_RECOVERED()->getKeyAsCamelCase()};
158 $donationMode = $donationQueryObject->{DonationMetaKeys::MODE()->getKeyAsCamelCase()};
159
160 $self->id = (int)$donationQueryObject->id;
161 $self->formId = (int)$donationQueryObject->{DonationMetaKeys::FORM_ID()->getKeyAsCamelCase()};
162 $self->formTitle = $donationQueryObject->{DonationMetaKeys::FORM_TITLE()->getKeyAsCamelCase()};
163 $self->amount = Money::fromDecimal(
164 $donationQueryObject->{DonationMetaKeys::AMOUNT()->getKeyAsCamelCase()},
165 $currency
166 );
167 $self->feeAmountRecovered = $feeAmountRecovered ? Money::fromDecimal($feeAmountRecovered, $currency) : null;
168 $self->exchangeRate = $donationQueryObject->{DonationMetaKeys::EXCHANGE_RATE()->getKeyAsCamelCase()};
169 $self->donorId = (int)$donationQueryObject->{DonationMetaKeys::DONOR_ID()->getKeyAsCamelCase()};
170 $self->honorific = $donationQueryObject->{DonationMetaKeys::HONORIFIC()->getKeyAsCamelCase()};
171 $self->firstName = $donationQueryObject->{DonationMetaKeys::FIRST_NAME()->getKeyAsCamelCase()};
172 $self->lastName = $donationQueryObject->{DonationMetaKeys::LAST_NAME()->getKeyAsCamelCase()};
173 $self->email = $donationQueryObject->{DonationMetaKeys::EMAIL()->getKeyAsCamelCase()};
174 $self->phone = $donationQueryObject->{DonationMetaKeys::PHONE()->getKeyAsCamelCase()};
175 $self->gatewayId = $donationQueryObject->{DonationMetaKeys::GATEWAY()->getKeyAsCamelCase()};
176 $self->createdAt = Temporal::toDateTime($donationQueryObject->createdAt);
177 $self->updatedAt = Temporal::toDateTime($donationQueryObject->updatedAt);
178 $self->status = new DonationStatus($donationQueryObject->status);
179 $self->subscriptionId = (int)$donationQueryObject->{DonationMetaKeys::SUBSCRIPTION_ID()->getKeyAsCamelCase()};
180 $self->mode = DonationMode::isValid($donationMode) ? new DonationMode($donationMode) : DonationMode::LIVE();
181 $self->billingAddress = BillingAddress::fromArray([
182 'country' => $donationQueryObject->{DonationMetaKeys::BILLING_COUNTRY()->getKeyAsCamelCase()},
183 'city' => $donationQueryObject->{DonationMetaKeys::BILLING_CITY()->getKeyAsCamelCase()},
184 'state' => $donationQueryObject->{DonationMetaKeys::BILLING_STATE()->getKeyAsCamelCase()},
185 'zip' => $donationQueryObject->{DonationMetaKeys::BILLING_ZIP()->getKeyAsCamelCase()},
186 'address1' => $donationQueryObject->{DonationMetaKeys::BILLING_ADDRESS1()->getKeyAsCamelCase()},
187 'address2' => $donationQueryObject->{DonationMetaKeys::BILLING_ADDRESS2()->getKeyAsCamelCase()},
188 ]);
189 $self->purchaseKey = $donationQueryObject->{DonationMetaKeys::PURCHASE_KEY()->getKeyAsCamelCase()};
190 $self->donorIp = $donationQueryObject->{DonationMetaKeys::DONOR_IP()->getKeyAsCamelCase()};
191 $self->anonymous = (bool)$donationQueryObject->{DonationMetaKeys::ANONYMOUS()->getKeyAsCamelCase()};
192 $self->levelId = (string)$donationQueryObject->{DonationMetaKeys::LEVEL_ID()->getKeyAsCamelCase()};
193 $self->gatewayTransactionId = $donationQueryObject->{DonationMetaKeys::GATEWAY_TRANSACTION_ID()
194 ->getKeyAsCamelCase()};
195 $self->company = $donationQueryObject->{DonationMetaKeys::COMPANY()
196 ->getKeyAsCamelCase()};
197 $self->comment = $donationQueryObject->{DonationMetaKeys::COMMENT()
198 ->getKeyAsCamelCase()};
199 $self->campaignId = (int)$donationQueryObject->{DonationMetaKeys::CAMPAIGN_ID()->getKeyAsCamelCase()};
200
201 if (!empty($donationQueryObject->{DonationMetaKeys::SUBSCRIPTION_INITIAL_DONATION()->getKeyAsCamelCase()})) {
202 $self->type = DonationType::SUBSCRIPTION();
203 } elseif ($self->subscriptionId) {
204 $self->type = DonationType::RENEWAL();
205 } else {
206 $self->type = DonationType::SINGLE();
207 }
208
209 return $self;
210 }
211
212 /**
213 * Convert DTO to Donation
214 */
215 public function toDonation(): Donation
216 {
217 $attributes = get_object_vars($this);
218
219 return new Donation($attributes);
220 }
221 }
222