PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 3.15.1
GiveWP – Donation Plugin and Fundraising Platform v3.15.1
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 2 years ago SubscriptionActions.php 3 years ago SwitchSubscriptionView.php 3 years ago
SubscriptionActions.php
165 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 'setStatus',
44 ],
45 ],
46 'ids' => [
47 'type' => 'string',
48 'required' => true,
49 'validate_callback' => function ($ids) {
50 foreach ($this->splitString($ids) as $id) {
51 if ( ! $this->validateInt($id)) {
52 return false;
53 }
54 }
55
56 return true;
57 },
58 ],
59 'status' => [
60 'type' => 'string',
61 'required' => false,
62 'enum' => array_values(SubscriptionStatus::toArray()),
63 ],
64 ],
65 ]
66 );
67 }
68
69 /**
70 * @since 2.25.2
71 *
72 * @inheritDoc
73 */
74 public function permissionsCheck()
75 {
76 if ( ! current_user_can('edit_give_payments')) {
77 return new WP_Error(
78 'rest_forbidden',
79 esc_html__('You don\'t have permission to edit Subscriptions', 'give'),
80 ['status' => $this->authorizationStatusCode()]
81 );
82 }
83
84 return true;
85 }
86
87 /**
88 * @since 2.24.0
89 *
90 * @param WP_REST_Request $request
91 *
92 * @return WP_REST_Response
93 */
94 public function handleRequest(WP_REST_Request $request)
95 {
96 $ids = $this->splitString($request->get_param('ids'));
97 $errors = $successes = [];
98
99 switch ($request->get_param('action')) {
100 case 'delete':
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->delete();
111 $successes[] = $id;
112 } catch (Exception $e) {
113 $errors[] = $id;
114 }
115 }
116
117 break;
118
119 case 'setStatus':
120 foreach ($ids as $id) {
121 $subscription = Subscription::find($id);
122
123 if ( ! $subscription) {
124 $errors[] = $id;
125 continue;
126 }
127
128 try {
129 $subscription->status = new SubscriptionStatus($request->get_param('status'));
130 $subscription->save();
131 $successes[] = $id;
132 } catch (Exception $e) {
133 $errors[] = $id;
134 }
135 }
136
137 break;
138 }
139
140 return new WP_REST_Response([
141 'errors' => $errors,
142 'successes' => $successes
143 ]);
144 }
145
146
147 /**
148 * Split string
149 *
150 * @since 2.24.0
151 *
152 * @param string $ids
153 *
154 * @return string[]
155 */
156 protected function splitString($ids)
157 {
158 if (strpos($ids, ',')) {
159 return array_map('trim', explode(',', $ids));
160 }
161
162 return [trim($ids)];
163 }
164 }
165