PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 4.12.0
GiveWP – Donation Plugin and Fundraising Platform v4.12.0
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 / Endpoints / DonationActions.php
give / src / Donations / Endpoints Last commit date
DonationActions.php 8 months ago Endpoint.php 8 months ago ListDonations.php 8 months ago ListDonationsStats.php 9 months ago SwitchDonationView.php 4 years ago
DonationActions.php
229 lines
1 <?php
2
3 namespace Give\Donations\Endpoints;
4
5 use Exception;
6 use Give\Donations\Models\Donation;
7 use WP_Error;
8 use WP_REST_Request;
9 use WP_REST_Response;
10
11 class DonationActions extends Endpoint
12 {
13 /**
14 * @var string
15 */
16 protected $endpoint = 'admin/donations/(?P<action>[\S]+)';
17
18 /**
19 * @inheritDoc
20 *
21 * @since 4.12.0 Remove force parameter from delete action and add trash and untrash actions
22 * @since 4.10.0 Add force parameter to delete action
23 */
24 public function registerRoute()
25 {
26 register_rest_route(
27 'give-api/v2',
28 $this->endpoint,
29 [
30 [
31 'methods' => ['POST', 'DELETE'],
32 'callback' => [$this, 'handleRequest'],
33 'permission_callback' => [$this, 'permissionsCheck'],
34 ],
35 'args' => [
36 'action' => [
37 'type' => 'string',
38 'required' => true,
39 'enum' => [
40 'delete',
41 'trash',
42 'untrash',
43 'setStatus',
44 'resendEmailReceipt',
45 ],
46 ],
47 'ids' => [
48 'type' => 'string',
49 'required' => true,
50 'validate_callback' => function ($ids) {
51 foreach ($this->splitString($ids) as $id) {
52 if (!$this->validateInt($id)) {
53 return false;
54 }
55 }
56
57 return true;
58 },
59 ],
60 'status' => [
61 'type' => 'string',
62 'required' => false,
63 'enum' => [
64 'publish', // Completed
65 'pending',
66 'processing',
67 'refunded',
68 'revoked',
69 'failed',
70 'cancelled',
71 'abandoned',
72 'preapproval',
73 ],
74 ],
75 ],
76 ]
77 );
78 }
79
80 /**
81 * @since 2.25.2
82 *
83 * @inheritDoc
84 */
85 public function permissionsCheck()
86 {
87 if (!current_user_can('edit_give_payments')) {
88 return new WP_Error(
89 'rest_forbidden',
90 esc_html__('You don\'t have permission to edit Donations', 'give'),
91 ['status' => $this->authorizationStatusCode()]
92 );
93 }
94
95 return true;
96 }
97
98 /**
99 * @since 4.12.0 Add trash and untrash actions
100 * @since 4.3.1 add permissions check for delete
101 * @since 2.20.0
102 *
103 * @param WP_REST_Request $request
104 *
105 * @return WP_Error
106 */
107 public function handleRequest(WP_REST_Request $request)
108 {
109 $ids = $this->splitString($request->get_param('ids'));
110 $errors = $successes = [];
111
112 switch ($request->get_param('action')) {
113 case 'delete':
114 if (!current_user_can('delete_give_payments')) {
115 return new WP_Error(
116 'rest_forbidden',
117 esc_html__('You don\'t have permission to delete Donation', 'give'),
118 ['status' => $this->authorizationStatusCode()]
119 );
120 }
121
122 foreach ($ids as $id) {
123 $donation = Donation::find($id);
124
125 if (!$donation) {
126 $errors[] = $id;
127 continue;
128 }
129
130 try {
131 $donation->delete();
132 $successes[] = $id;
133 } catch (Exception $e) {
134 $errors[] = $id;
135 }
136 }
137
138 break;
139
140 case 'trash':
141 foreach ($ids as $id) {
142 $donation = Donation::find($id);
143
144 if (!$donation) {
145 $errors[] = $id;
146 continue;
147 }
148
149 try {
150 $donation->trash();
151 $successes[] = $id;
152 } catch (Exception $e) {
153 $errors[] = $id;
154 }
155 }
156
157 break;
158
159 case 'untrash':
160 foreach ($ids as $id) {
161 $donation = Donation::find($id);
162
163 if (!$donation) {
164 $errors[] = $id;
165 continue;
166 }
167
168 try {
169 $donation->unTrash();
170 $successes[] = $id;
171 } catch (Exception $e) {
172 $errors[] = $id;
173 }
174 }
175
176 break;
177
178 case 'setStatus':
179 if (!current_user_can('view_give_payments')) {
180 return new WP_Error(
181 'rest_forbidden',
182 esc_html__('You don\'t have permission to change donation statuses', 'give'),
183 ['status' => $this->authorizationStatusCode()]
184 );
185 }
186 foreach ($ids as $id) {
187 $updated = give_update_payment_status($id, $request->get_param('status'));
188 $updated ? $successes[] = $id : $errors[] = $id;
189 }
190
191 break;
192
193 case 'resendEmailReceipt':
194 foreach ($ids as $id) {
195 try {
196 do_action('give_donation-receipt_email_notification', $id);
197 $successes[] = $id;
198 } catch (Exception $e) {
199 $errors[] = $id;
200 }
201 }
202
203 break;
204 }
205
206 return new WP_REST_Response([
207 'errors' => $errors,
208 'successes' => $successes
209 ]);
210 }
211
212 /**
213 * Split string
214 *
215 * @param string $ids
216 * @since 2.20.0
217 *
218 * @return string[]
219 */
220 protected function splitString($ids)
221 {
222 if (strpos($ids, ',')) {
223 return array_map('trim', explode(',', $ids));
224 }
225
226 return [trim($ids)];
227 }
228 }
229