PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 4.15.3
GiveWP – Donation Plugin and Fundraising Platform v4.15.3
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 / DonationForms / V2 / Endpoints / FormActions.php
give / src / DonationForms / V2 / Endpoints Last commit date
Endpoint.php 5 months ago FormActions.php 5 months ago ListDonationForms.php 8 months ago SwitchDonationFormView.php 3 years ago
FormActions.php
176 lines
1 <?php
2
3 namespace Give\DonationForms\V2\Endpoints;
4
5 use Give\Framework\Permissions\Facades\UserPermissions;
6 use WP_Error;
7 use WP_REST_Request;
8 use WP_REST_Response;
9
10 /**
11 * @since 3.14.0 updated to validate form id is a donation form post type
12 * @since 2.19.0
13 */
14 class FormActions extends Endpoint
15 {
16 /**
17 * @var string
18 */
19 protected $endpoint = 'admin/forms/(?P<action>[\S]+)';
20
21 /**
22 * @inheritDoc
23 */
24 public function registerRoute()
25 {
26 register_rest_route(
27 'give-api/v2',
28 $this->endpoint,
29 [
30 [
31 'methods' => ['POST', 'UPDATE', 'DELETE'],
32 'callback' => [$this, 'handleRequest'],
33 'permission_callback' => [$this, 'permissionsCheck'],
34 ],
35 'args' => [
36 'action' => [
37 'type' => 'string',
38 'required' => true,
39 'enum' => [
40 'trash',
41 'restore',
42 'delete',
43 'duplicate',
44 'edit',
45 ],
46 ],
47 'ids' => [
48 'type' => 'string',
49 'required' => true,
50 'validate_callback' => function ($ids) {
51 foreach ($this->splitString($ids) as $id) {
52 if ( ! $this->validateInt($id) || !$this->validatePostType($id)) {
53 return false;
54 }
55 }
56
57 return true;
58 },
59 ],
60 'author' => [
61 'type' => 'string',
62 'required' => 'false',
63 ],
64 'status' => [
65 'type' => 'string',
66 'required' => 'false',
67 ],
68 ],
69 ]
70 );
71 }
72
73 /**
74 * @since 4.14.0 update permission capability to use facade
75 * @since 2.25.2
76 *
77 * @inheritDoc
78 */
79 public function permissionsCheck()
80 {
81 if ( ! UserPermissions::donationForms()->canEdit()) {
82 return new WP_Error(
83 'rest_forbidden',
84 __('You don\'t have permission to edit Donation Forms', 'give'),
85 ['status' => $this->authorizationStatusCode()]
86 );
87 }
88
89 return true;
90 }
91
92 /**
93 * @since 2.19.0
94 *
95 * @param WP_REST_Request $request
96 *
97 * @return WP_REST_Response
98 */
99 public function handleRequest(WP_REST_Request $request)
100 {
101 $ids = $this->splitString($request->get_param('ids'));
102 $errors = [];
103 $successes = [];
104 $form = false;
105
106 switch ($request->get_param('action')) {
107 case 'trash':
108 foreach ($ids as $id) {
109 $form = wp_trash_post($id);
110 !empty($form) ? $successes[] = $id : $errors[] = $id;
111 }
112
113 break;
114
115 case 'restore':
116 foreach ($ids as $id) {
117 $form = wp_untrash_post($id);
118 !empty($form) ? $successes[] = $id : $errors[] = $id;
119 }
120
121 break;
122
123
124 case 'delete':
125 foreach ($ids as $id) {
126 $form = wp_delete_post($id);
127 give()->form_meta->delete_all_meta($id);
128 !empty($form) ? $successes[] = $form : $errors[] = $form;
129 }
130
131 break;
132
133 case 'duplicate':
134 require_once(GIVE_PLUGIN_DIR . '/includes/admin/forms/class-give-form-duplicator.php');
135
136 foreach ($ids as $id) {
137 $form = \Give_Form_Duplicator::handler($id);
138 $form ? $successes[] = $form : $errors[] = $form;
139 }
140
141 break;
142
143 case 'edit':
144 $author = $request->get_param('author');
145 $status = $request->get_param('status');
146 $update_args = [];
147 $author ? $update_args['post_author'] = $author : null;
148 $status ? $update_args['post_status'] = $status : null;
149 foreach ($ids as $id) {
150 $form = wp_update_post(array_merge($update_args, ['ID' => $id]));
151 !empty($form) ? $successes[] = $id : $errors[] = $id;
152 }
153 break;
154 }
155
156 return new WP_REST_Response(array('errors' => $errors, 'successes' => $successes));
157 }
158
159
160 /**
161 * Split string
162 *
163 * @param string $ids
164 *
165 * @return string[]
166 */
167 protected function splitString($ids)
168 {
169 if (strpos($ids, ',')) {
170 return array_map('trim', explode(',', $ids));
171 }
172
173 return [trim($ids)];
174 }
175 }
176