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