PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 2.22.3
GiveWP – Donation Plugin and Fundraising Platform v2.22.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 / DonationForms / DataTransferObjects / DonationFormsResponseData.php
give / src / DonationForms / DataTransferObjects Last commit date
DonationFormsResponseData.php 4 years ago
DonationFormsResponseData.php
168 lines
1 <?php
2
3 namespace Give\DonationForms\DataTransferObjects;
4
5 use Give\Framework\Support\Contracts\Arrayable;
6 use Give\Helpers\Date;
7
8 /**
9 * Class DonationFormsResponseData
10 *
11 * @since 2.21.0
12 */
13 class DonationFormsResponseData implements Arrayable
14 {
15 /**
16 * @var int
17 */
18 public $id;
19 /**
20 * @var string
21 */
22 public $name;
23 /**
24 * @var string
25 */
26 public $status;
27 /**
28 * @var array|false
29 */
30 public $goal;
31 /**
32 * @var int
33 */
34 public $donations;
35 /**
36 * @var string
37 */
38 public $amount;
39 /**
40 * @var string
41 */
42 public $revenue;
43 /**
44 * @var string
45 */
46 public $datetime;
47 /**
48 * @var string
49 */
50 public $shortcode;
51 /**
52 * @var string
53 */
54 public $permalink;
55 /**
56 * @var string
57 */
58 public $edit;
59
60
61 /**
62 * Convert from object to DonationForm
63 *
64 * @param object $form
65 *
66 * @since 2.21.0
67 */
68 public static function fromObject($form): self
69 {
70 $self = new static();
71
72 $self->id = $form->id;
73 $self->name = $form->title;
74 $self->status = $form->status;
75 $self->goal = $form->goalEnabled === 'enabled' ? $self->getGoal($form->id) : false;
76 $self->donations = give()->donationFormsRepository->getFormDonationsCount($form->id);
77 $self->amount = $self->getFormAmount($form);
78 $self->revenue = $self->formatAmount($form->revenue ?? '');
79 $self->datetime = Date::getDateTime($form->createdAt);
80 $self->shortcode = sprintf('[give_form id="%d"]', $form->id);
81 $self->permalink = html_entity_decode(get_permalink($form->id));
82 $self->edit = html_entity_decode(get_edit_post_link($form->id));
83
84 return $self;
85 }
86
87 /**
88 * Convert DTO to array
89 *
90 * @since 2.21.0
91 */
92 public function toArray(): array
93 {
94 return get_object_vars($this);
95 }
96
97 /**
98 * @param int $formId
99 *
100 * @return array
101 *
102 * @since 2.21.0
103 */
104 private function getGoal(int $formId): array
105 {
106 $goal = give_goal_progress_stats($formId);
107
108 $getFormatFromGoal = static function ($goal) {
109 switch ($goal['format']) {
110 case 'donation':
111 return _n('donation', 'donations', $goal['raw_goal'], 'give');
112
113 case 'donors':
114 return _n('donor', 'donors', $goal['raw_goal'], 'give');
115
116 case 'amount':
117 return __('amount', 'give');
118
119 case 'percentage':
120 return __('percentage', 'give');
121
122 default:
123 return '';
124 }
125 };
126
127 return [
128 'actual' => html_entity_decode($goal['actual']),
129 'goal' => html_entity_decode($goal['goal']),
130 'progress' => html_entity_decode($goal['progress']),
131 'format' => $getFormatFromGoal($goal)
132 ];
133 }
134
135 /**
136 * @param object $form
137 *
138 * @return string
139 *
140 * @since 2.21.0
141 */
142 private function getFormAmount($form): string
143 {
144 $donationLevels = unserialize($form->donationLevels, ['allowed_classes' => false]);
145
146 if (
147 is_array($donationLevels)
148 && $amount = array_column($donationLevels, '_give_amount')
149 ) {
150 return $this->formatAmount(min($amount)) . ' - ' . $this->formatAmount(max($amount));
151 }
152
153 return $this->formatAmount($form->setPrice ?? '');
154 }
155
156 /**
157 * @param string $amount
158 *
159 * @return string
160 *
161 * @since 2.21.0
162 */
163 private function formatAmount(string $amount): string
164 {
165 return html_entity_decode(give_currency_filter(give_format_amount($amount)));
166 }
167 }
168