PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 3.19.4
GiveWP – Donation Plugin and Fundraising Platform v3.19.4
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 3 years ago Endpoint.php 4 years ago ListDonations.php 2 years ago SwitchDonationView.php 4 years ago
DonationActions.php
162 lines
1 <?php
2
3 namespace Give\Donations\Endpoints;
4
5 use Exception;
6 use WP_Error;
7 use WP_REST_Request;
8 use WP_REST_Response;
9
10 class DonationActions extends Endpoint
11 {
12 /**
13 * @var string
14 */
15 protected $endpoint = 'admin/donations/(?P<action>[\S]+)';
16
17 /**
18 * @inheritDoc
19 */
20 public function registerRoute()
21 {
22 register_rest_route(
23 'give-api/v2',
24 $this->endpoint,
25 [
26 [
27 'methods' => ['POST', 'DELETE'],
28 'callback' => [$this, 'handleRequest'],
29 'permission_callback' => [$this, 'permissionsCheck'],
30 ],
31 'args' => [
32 'action' => [
33 'type' => 'string',
34 'required' => true,
35 'enum' => [
36 'delete',
37 'setStatus',
38 'resendEmailReceipt',
39 ],
40 ],
41 'ids' => [
42 'type' => 'string',
43 'required' => true,
44 'validate_callback' => function ($ids) {
45 foreach ($this->splitString($ids) as $id) {
46 if (!$this->validateInt($id)) {
47 return false;
48 }
49 }
50
51 return true;
52 },
53 ],
54 'status' => [
55 'type' => 'string',
56 'required' => false,
57 'enum' => [
58 'publish', // Completed
59 'pending',
60 'processing',
61 'refunded',
62 'revoked',
63 'failed',
64 'cancelled',
65 'abandoned',
66 'preapproval',
67 ],
68 ],
69 ],
70 ]
71 );
72 }
73
74 /**
75 * @since 2.25.2
76 *
77 * @inheritDoc
78 */
79 public function permissionsCheck()
80 {
81 if ( ! current_user_can('edit_give_payments')) {
82 return new WP_Error(
83 'rest_forbidden',
84 esc_html__('You don\'t have permission to edit Donations', 'give'),
85 ['status' => $this->authorizationStatusCode()]
86 );
87 }
88
89 return true;
90 }
91
92 /**
93 * @since 2.20.0
94 *
95 * @param WP_REST_Request $request
96 *
97 * @return WP_REST_Response
98 */
99 public function handleRequest(WP_REST_Request $request)
100 {
101 $ids = $this->splitString($request->get_param('ids'));
102 $errors = $successes = [];
103
104 switch ($request->get_param('action')) {
105 case 'delete':
106 foreach ($ids as $id) {
107 try {
108 give_delete_donation($id);
109 $successes[] = $id;
110 } catch (Exception $e) {
111 $errors[] = $id;
112 }
113 }
114
115 break;
116
117 case 'setStatus':
118 foreach ($ids as $id) {
119 $updated = give_update_payment_status($id, $request->get_param('status'));
120 $updated ? $successes[] = $id : $errors[] = $id;
121 }
122
123 break;
124
125 case 'resendEmailReceipt':
126 foreach ($ids as $id) {
127 try {
128 do_action('give_donation-receipt_email_notification', $id);
129 $successes[] = $id;
130 } catch (Exception $e) {
131 $errors[] = $id;
132 }
133 }
134
135 break;
136 }
137
138 return new WP_REST_Response([
139 'errors' => $errors,
140 'successes' => $successes
141 ]);
142 }
143
144
145 /**
146 * Split string
147 *
148 * @param string $ids
149 * @since 2.20.0
150 *
151 * @return string[]
152 */
153 protected function splitString($ids)
154 {
155 if (strpos($ids, ',')) {
156 return array_map('trim', explode(',', $ids));
157 }
158
159 return [trim($ids)];
160 }
161 }
162