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