PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 4.8.0
GiveWP – Donation Plugin and Fundraising Platform v4.8.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 11 months ago Endpoint.php 1 year ago ListDonations.php 10 months ago SwitchDonationView.php 4 years ago
DonationActions.php
177 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 4.3.1 add permissions check for delete
94 * @since 2.20.0
95 *
96 * @param WP_REST_Request $request
97 *
98 * @return WP_Error
99 */
100 public function handleRequest(WP_REST_Request $request)
101 {
102 $ids = $this->splitString($request->get_param('ids'));
103 $errors = $successes = [];
104
105 switch ($request->get_param('action')) {
106 case 'delete':
107 if ( ! current_user_can('delete_give_payments')) {
108 return new WP_Error(
109 'rest_forbidden',
110 esc_html__('You don\'t have permission to delete Donations', 'give'),
111 ['status' => $this->authorizationStatusCode()]
112 );
113 }
114 foreach ($ids as $id) {
115 try {
116 give_delete_donation($id);
117 $successes[] = $id;
118 } catch (Exception $e) {
119 $errors[] = $id;
120 }
121 }
122
123 break;
124
125 case 'setStatus':
126 if ( ! current_user_can('view_give_payments')) {
127 return new WP_Error(
128 'rest_forbidden',
129 esc_html__('You don\'t have permission to change donation statuses', 'give'),
130 ['status' => $this->authorizationStatusCode()]
131 );
132 }
133 foreach ($ids as $id) {
134 $updated = give_update_payment_status($id, $request->get_param('status'));
135 $updated ? $successes[] = $id : $errors[] = $id;
136 }
137
138 break;
139
140 case 'resendEmailReceipt':
141 foreach ($ids as $id) {
142 try {
143 do_action('give_donation-receipt_email_notification', $id);
144 $successes[] = $id;
145 } catch (Exception $e) {
146 $errors[] = $id;
147 }
148 }
149
150 break;
151 }
152
153 return new WP_REST_Response([
154 'errors' => $errors,
155 'successes' => $successes
156 ]);
157 }
158
159
160 /**
161 * Split string
162 *
163 * @param string $ids
164 * @since 2.20.0
165 *
166 * @return string[]
167 */
168 protected function splitString($ids)
169 {
170 if (strpos($ids, ',')) {
171 return array_map('trim', explode(',', $ids));
172 }
173
174 return [trim($ids)];
175 }
176 }
177