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