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