PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 4.4.0
GiveWP – Donation Plugin and Fundraising Platform v4.4.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 1 year ago Endpoint.php 1 year ago ListDonations.php 1 year ago SwitchDonationView.php 4 years ago
DonationActions.php
170 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 foreach ($ids as $id) {
127 $updated = give_update_payment_status($id, $request->get_param('status'));
128 $updated ? $successes[] = $id : $errors[] = $id;
129 }
130
131 break;
132
133 case 'resendEmailReceipt':
134 foreach ($ids as $id) {
135 try {
136 do_action('give_donation-receipt_email_notification', $id);
137 $successes[] = $id;
138 } catch (Exception $e) {
139 $errors[] = $id;
140 }
141 }
142
143 break;
144 }
145
146 return new WP_REST_Response([
147 'errors' => $errors,
148 'successes' => $successes
149 ]);
150 }
151
152
153 /**
154 * Split string
155 *
156 * @param string $ids
157 * @since 2.20.0
158 *
159 * @return string[]
160 */
161 protected function splitString($ids)
162 {
163 if (strpos($ids, ',')) {
164 return array_map('trim', explode(',', $ids));
165 }
166
167 return [trim($ids)];
168 }
169 }
170