PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 4.3.2
GiveWP – Donation Plugin and Fundraising Platform v4.3.2
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 / Campaigns / ListTable / Routes / DeleteCampaignListTable.php
give / src / Campaigns / ListTable / Routes Last commit date
DeleteCampaignListTable.php 1 year ago GetCampaignsListTable.php 1 year ago
DeleteCampaignListTable.php
119 lines
1 <?php
2
3 namespace Give\Campaigns\ListTable\Routes;
4
5 use Give\API\REST\V3\Routes\Campaigns\ValueObjects\CampaignRoute;
6 use Give\API\RestRoute;
7 use Give\Campaigns\ListTable\CampaignsListTable;
8 use Give\Campaigns\Repositories\CampaignRepository;
9 use Give\Framework\Exceptions\Primitives\Exception;
10 use WP_Error;
11 use WP_REST_Request;
12 use WP_REST_Response;
13 use WP_REST_Server;
14
15 /**
16 * @since 4.0.0
17 */
18 class DeleteCampaignListTable implements RestRoute
19 {
20 /**
21 * @var string
22 */
23 protected $endpoint = 'campaigns/list-table';
24
25 /**
26 * @var WP_REST_Request
27 */
28 protected $request;
29
30 /**
31 * @var CampaignsListTable
32 */
33 protected $listTable;
34
35 /**
36 * @inheritDoc
37 */
38 public function registerRoute()
39 {
40 register_rest_route(
41 CampaignRoute::NAMESPACE,
42 $this->endpoint,
43 [
44 [
45 'methods' => WP_REST_Server::DELETABLE,
46 'callback' => [$this, 'handleRequest'],
47 'permission_callback' => [$this, 'permissionsCheck'],
48 ],
49 'args' => [
50 'ids' => [
51 'type' => 'string',
52 'required' => true,
53 'validate_callback' => function ($ids) {
54 foreach ($this->splitString($ids) as $id) {
55 if ( ! filter_var($id, FILTER_VALIDATE_INT)) {
56 return false;
57 }
58 }
59
60 return true;
61 },
62 ],
63 ],
64 ]
65 );
66 }
67
68 /**
69 * @since 4.0.0
70 *
71 * @throws Exception
72 */
73 public function handleRequest(WP_REST_Request $request): WP_Rest_Response
74 {
75 $ids = $this->splitString($request->get_param('ids'));
76 $errors = [];
77 $successes = [];
78
79 foreach ($ids as $id) {
80 $campaignDeleted = give(CampaignRepository::class)->getById($id)->delete();
81 $campaignDeleted ? $successes[] = $id : $errors[] = $id;
82 }
83
84 return new WP_REST_Response(['errors' => $errors, 'successes' => $successes]);
85 }
86
87
88 /**
89 * Split string
90 *
91 * @since 4.0.0
92 *
93 * @return string[]
94 */
95 protected function splitString(string $ids): array
96 {
97 if (strpos($ids, ',')) {
98 return array_map('trim', explode(',', $ids));
99 }
100
101 return [trim($ids)];
102 }
103
104 /**
105 * @since 4.3.1 update permissions
106 * @since 4.0.0
107 *
108 * @return bool|WP_Error
109 */
110 public function permissionsCheck()
111 {
112 return current_user_can('manage_options') ?: new WP_Error(
113 'rest_forbidden',
114 esc_html__("You don't have permission to delete Campaigns", 'give'),
115 ['status' => is_user_logged_in() ? 403 : 401]
116 );
117 }
118 }
119