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