PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 2.27.2
GiveWP – Donation Plugin and Fundraising Platform v2.27.2
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 / DonationForms / DataTransferObjects / DonationFormQueryData.php
give / src / DonationForms / DataTransferObjects Last commit date
DonationFormQueryData.php 3 years ago
DonationFormQueryData.php
131 lines
1 <?php
2
3 namespace Give\DonationForms\DataTransferObjects;
4
5 use DateTime;
6 use Give\DonationForms\Models\DonationForm;
7 use Give\DonationForms\Properties\DonationFormLevel;
8 use Give\DonationForms\ValueObjects\DonationFormMetaKeys;
9 use Give\DonationForms\ValueObjects\DonationFormStatus;
10 use Give\Framework\Support\Facades\DateTime\Temporal;
11 use Give\Framework\Support\ValueObjects\Money;
12
13 /**
14 * Class DonationFormQueryData
15 *
16 * @since 2.24.0
17 */
18 final class DonationFormQueryData
19 {
20
21 /**
22 * @var int
23 */
24 public $id;
25 /**
26 * @var string
27 */
28 public $title;
29 /**
30 * @var DonationFormLevel[]
31 */
32 public $levels;
33 /**
34 * @var boolean
35 */
36 public $goalOption;
37 /**
38 * @var int
39 */
40 public $totalNumberOfDonations;
41 /**
42 * @var Money
43 */
44 public $totalAmountDonated;
45 /**
46 * @var DateTime
47 */
48 public $createdAt;
49 /**
50 * @var DateTime
51 */
52 public $updatedAt;
53 /**
54 * @var string
55 */
56 public $status;
57
58 /**
59 * Convert data from donation form object to DonationForm Model
60 *
61 * @since 2.24.0
62 *
63 * @param $object
64 *
65 * @return DonationFormQueryData
66 */
67 public static function fromObject($object): DonationFormQueryData
68 {
69 $self = new static();
70
71 $self->id = (int)$object->id;
72 $self->title = $object->title;
73 $self->levels = $self->getDonationFormLevels($object);
74 $self->goalOption = ($object->{DonationFormMetaKeys::GOAL_OPTION()->getKeyAsCamelCase()} === 'enabled');
75 $self->createdAt = Temporal::toDateTime($object->createdAt);
76 $self->updatedAt = Temporal::toDateTime($object->updatedAt);
77 $self->totalAmountDonated = Money::fromDecimal($object->{DonationFormMetaKeys::FORM_EARNINGS()->getKeyAsCamelCase()}, give_get_currency());
78 $self->totalNumberOfDonations = (int)$object->{DonationFormMetaKeys::FORM_SALES()->getKeyAsCamelCase()};
79 $self->status = new DonationFormStatus($object->status);
80
81 return $self;
82 }
83
84 /**
85 * Convert DTO to DonationForm
86 *
87 * @return DonationForm
88 */
89 public function toDonationForm(): DonationForm
90 {
91 $attributes = get_object_vars($this);
92
93 return new DonationForm($attributes);
94 }
95
96 /**
97 * @since 2.24.0
98 *
99 * @param $object
100 *
101 * @return DonationFormLevel[]
102 */
103 public function getDonationFormLevels($object): array
104 {
105 switch( $object->{DonationFormMetaKeys::PRICE_OPTION()->getKeyAsCamelCase()} ) {
106 case 'multi':
107 $levels = maybe_unserialize($object->{DonationFormMetaKeys::DONATION_LEVELS()->getKeyAsCamelCase()});
108
109 if (empty($levels)) {
110 return [];
111 }
112
113 return array_map(static function ($level) {
114 return DonationFormLevel::fromArray($level);
115 }, $levels);
116 case 'set':
117 $amount = $object->{DonationFormMetaKeys::SET_PRICE()->getKeyAsCamelCase()};
118
119 if (empty($amount)) {
120 return [];
121 }
122
123 return [
124 DonationFormLevel::fromPrice($amount),
125 ];
126 default:
127 return [];
128 }
129 }
130 }
131