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