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 / Subscriptions / Endpoints / SubscriptionActions.php
give / src / Subscriptions / Endpoints Last commit date
Endpoint.php 1 year ago ListSubscriptions.php 2 years ago SubscriptionActions.php 1 year ago SwitchSubscriptionView.php 3 years ago
SubscriptionActions.php
174 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 4.3.1 add permissions check for delete
89 * @since 2.24.0
90 *
91 * @param WP_REST_Request $request
92 *
93 * @return WP_Error
94 */
95 public function handleRequest(WP_REST_Request $request)
96 {
97 $ids = $this->splitString($request->get_param('ids'));
98 $errors = $successes = [];
99
100 switch ($request->get_param('action')) {
101 case 'delete':
102 if ( ! current_user_can('delete_give_payments')) {
103 return new WP_Error(
104 'rest_forbidden',
105 esc_html__('You don\'t have permission to delete Subscription', 'give'),
106 ['status' => $this->authorizationStatusCode()]
107 );
108 }
109
110 foreach ($ids as $id) {
111 $subscription = Subscription::find($id);
112
113 if ( ! $subscription) {
114 $errors[] = $id;
115 continue;
116 }
117
118 try {
119 $subscription->delete();
120 $successes[] = $id;
121 } catch (Exception $e) {
122 $errors[] = $id;
123 }
124 }
125
126 break;
127
128 case 'setStatus':
129 foreach ($ids as $id) {
130 $subscription = Subscription::find($id);
131
132 if ( ! $subscription) {
133 $errors[] = $id;
134 continue;
135 }
136
137 try {
138 $subscription->status = new SubscriptionStatus($request->get_param('status'));
139 $subscription->save();
140 $successes[] = $id;
141 } catch (Exception $e) {
142 $errors[] = $id;
143 }
144 }
145
146 break;
147 }
148
149 return new WP_REST_Response([
150 'errors' => $errors,
151 'successes' => $successes
152 ]);
153 }
154
155
156 /**
157 * Split string
158 *
159 * @since 2.24.0
160 *
161 * @param string $ids
162 *
163 * @return string[]
164 */
165 protected function splitString($ids)
166 {
167 if (strpos($ids, ',')) {
168 return array_map('trim', explode(',', $ids));
169 }
170
171 return [trim($ids)];
172 }
173 }
174