PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 2.25.0
GiveWP – Donation Plugin and Fundraising Platform v2.25.0
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 3 years ago ListSubscriptions.php 3 years ago SubscriptionActions.php 3 years ago SwitchSubscriptionView.php 3 years ago
SubscriptionActions.php
146 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_REST_Request;
9 use WP_REST_Response;
10
11 /**
12 * @since 2.24.0
13 *
14 */
15 class SubscriptionActions extends Endpoint
16 {
17 /**
18 * @var string
19 */
20 protected $endpoint = 'admin/subscriptions/(?P<action>[\S]+)';
21
22 /**
23 * @inheritDoc
24 */
25 public function registerRoute()
26 {
27 register_rest_route(
28 'give-api/v2',
29 $this->endpoint,
30 [
31 [
32 'methods' => ['POST', 'DELETE'],
33 'callback' => [$this, 'handleRequest'],
34 'permission_callback' => [$this, 'permissionsCheck'],
35 ],
36 'args' => [
37 'action' => [
38 'type' => 'string',
39 'required' => true,
40 'enum' => [
41 'delete',
42 'setStatus',
43 ],
44 ],
45 'ids' => [
46 'type' => 'string',
47 'required' => true,
48 'validate_callback' => function ($ids) {
49 foreach ($this->splitString($ids) as $id) {
50 if ( ! $this->validateInt($id)) {
51 return false;
52 }
53 }
54
55 return true;
56 },
57 ],
58 'status' => [
59 'type' => 'string',
60 'required' => false,
61 'enum' => array_values(SubscriptionStatus::toArray()),
62 ],
63 ],
64 ]
65 );
66 }
67
68 /**
69 * @since 2.24.0
70 *
71 * @param WP_REST_Request $request
72 *
73 * @return WP_REST_Response
74 */
75 public function handleRequest(WP_REST_Request $request)
76 {
77 $ids = $this->splitString($request->get_param('ids'));
78 $errors = $successes = [];
79
80 switch ($request->get_param('action')) {
81 case 'delete':
82 foreach ($ids as $id) {
83 $subscription = Subscription::find($id);
84
85 if ( ! $subscription) {
86 $errors[] = $id;
87 continue;
88 }
89
90 try {
91 $subscription->delete();
92 $successes[] = $id;
93 } catch (Exception $e) {
94 $errors[] = $id;
95 }
96 }
97
98 break;
99
100 case 'setStatus':
101 foreach ($ids as $id) {
102 $subscription = Subscription::find($id);
103
104 if ( ! $subscription) {
105 $errors[] = $id;
106 continue;
107 }
108
109 try {
110 $subscription->status = new SubscriptionStatus($request->get_param('status'));
111 $subscription->save();
112 $successes[] = $id;
113 } catch (Exception $e) {
114 $errors[] = $id;
115 }
116 }
117
118 break;
119 }
120
121 return new WP_REST_Response([
122 'errors' => $errors,
123 'successes' => $successes
124 ]);
125 }
126
127
128 /**
129 * Split string
130 *
131 * @since 2.24.0
132 *
133 * @param string $ids
134 *
135 * @return string[]
136 */
137 protected function splitString($ids)
138 {
139 if (strpos($ids, ',')) {
140 return array_map('trim', explode(',', $ids));
141 }
142
143 return [trim($ids)];
144 }
145 }
146