PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 2.19.2
GiveWP – Donation Plugin and Fundraising Platform v2.19.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 / DonationForms / Endpoints / ListForms.php
give / src / DonationForms / Endpoints Last commit date
Endpoint.php 4 years ago FormActions.php 4 years ago ListForms.php 4 years ago
ListForms.php
206 lines
1 <?php
2
3 namespace Give\DonationForms\Endpoints;
4
5 use WP_REST_Request;
6 use WP_REST_Response;
7
8 /**
9 * @since 2.19.0
10 */
11 class ListForms extends Endpoint
12 {
13 /**
14 * @var string
15 */
16 protected $endpoint = 'admin/forms';
17
18 /**
19 * @inheritDoc
20 */
21 public function registerRoute()
22 {
23 register_rest_route(
24 'give-api/v2',
25 $this->endpoint,
26 [
27 [
28 'methods' => 'GET',
29 'callback' => [$this, 'handleRequest'],
30 'permission_callback' => [$this, 'permissionsCheck'],
31 ],
32 'args' => [
33 'page' => [
34 'type' => 'integer',
35 'required' => false,
36 'default' => 1,
37 'minimum' => 1
38 ],
39 'perPage' => [
40 'type' => 'integer',
41 'required' => false,
42 'default' => 30,
43 'minimum' => 1
44 ],
45 'status' => [
46 'type' => 'string',
47 'required' => false,
48 'default' => 'any',
49 'enum' => [
50 'publish',
51 'future',
52 'draft',
53 'pending',
54 'trash',
55 'auto-draft',
56 'inherit',
57 'any'
58 ]
59 ],
60 'search' => [
61 'type' => 'string',
62 'required' => false
63 ]
64 ],
65 ]
66 );
67 }
68
69 /**
70 * @param WP_REST_Request $request
71 *
72 * @return WP_REST_Response
73 */
74 public function handleRequest(WP_REST_Request $request)
75 {
76 $data = [];
77 $forms = give()->donationFormsRepository->getFormsForRequest($request);
78 $totalForms = give()->donationFormsRepository->getTotalFormsCountForRequest($request);
79 $totalPages = (int)ceil($totalForms / $request->get_param('perPage'));
80
81 foreach ($forms as $form) {
82 $data[] = [
83 'id' => $form->id,
84 'name' => $form->title,
85 'status' => $form->status,
86 'goal' => $form->goalEnabled === 'enabled' ? $this->getGoal($form->id) : false,
87 'donations' => give()->donationFormsRepository->getFormDonationsCount($form->id),
88 'amount' => $this->getFormAmount($form),
89 'revenue' => $this->formatAmount($form->revenue),
90 'datetime' => $this->getDateTime($form->createdAt),
91 'shortcode' => sprintf('[give_form id="%d"]', $form->id),
92 'permalink' => html_entity_decode(get_permalink($form->id)),
93 'edit' => html_entity_decode(get_edit_post_link($form->id))
94 ];
95 }
96
97 return new WP_REST_Response(
98 [
99 'forms' => $data,
100 'totalForms' => $totalForms,
101 'totalPages' => $totalPages
102 ]
103 );
104 }
105
106 /**
107 * @param int $formId
108 *
109 * @return array
110 */
111 private function getGoal($formId)
112 {
113 $goal = give_goal_progress_stats($formId);
114
115 $getFormatFromGoal = function ($goal) {
116 switch ($goal[ 'format' ]) {
117 case 'donation':
118 return _n('donation', 'donations', $goal[ 'raw_goal' ], 'give');
119
120 case 'donors':
121 return _n('donor', 'donors', $goal[ 'raw_goal' ], 'give');
122
123 case 'amount':
124 return __('amount', 'give');
125
126 case 'percentage':
127 return __('percentage', 'give');
128
129 default:
130 return '';
131 }
132 };
133
134 return [
135 'actual' => html_entity_decode($goal[ 'actual' ]),
136 'goal' => html_entity_decode($goal[ 'goal' ]),
137 'progress' => html_entity_decode($goal[ 'progress' ]),
138 'format' => $getFormatFromGoal($goal)
139 ];
140 }
141
142 /**
143 * Returns human readable date.
144 *
145 * @param string $date Date in mysql format.
146 *
147 * @return string
148 */
149 private function getDateTime($date)
150 {
151 $dateTimestamp = strtotime($date);
152 $currentTimestamp = current_time('timestamp');
153 $todayTimestamp = strtotime('today', $currentTimestamp);
154 $yesterdayTimestamp = strtotime('yesterday', $currentTimestamp);
155
156 if ($dateTimestamp >= $todayTimestamp) {
157 return sprintf(
158 '%1$s %2$s %3$s',
159 esc_html__('Today', 'give'),
160 esc_html__('at', 'give'),
161 date_i18n(get_option('time_format'), $dateTimestamp)
162 );
163 }
164
165 if ($dateTimestamp < $todayTimestamp && $dateTimestamp >= $yesterdayTimestamp) {
166 return sprintf(
167 '%1$s %2$s %3$s',
168 esc_html__('Yesterday', 'give'),
169 esc_html__('at', 'give'),
170 date_i18n(get_option('time_format'), $dateTimestamp)
171 );
172 }
173
174 return date_i18n(get_option('date_format'), $dateTimestamp);
175 }
176
177 /**
178 * @param object $form
179 *
180 *
181 * @return string
182 */
183 private function getFormAmount($form)
184 {
185 $donationLevels = unserialize($form->donationLevels);
186
187 if (is_array($donationLevels)) {
188 $amount = array_column($donationLevels, '_give_amount');
189
190 return $this->formatAmount(min($amount)) . ' - ' . $this->formatAmount(max($amount));
191 }
192
193 return $this->formatAmount($form->setPrice);
194 }
195
196 /**
197 * @param string $amount
198 *
199 * @return string
200 */
201 private function formatAmount($amount)
202 {
203 return html_entity_decode(give_currency_filter(give_format_amount($amount)));
204 }
205 }
206