PluginProbe
GiveWP – Donation Plugin and Fundraising Platform / 4.16.9
GiveWP – Donation Plugin and Fundraising Platform v4.16.9
4.16.9 4.16.8.1 4.16.8 4.16.7.2 4.16.7.1 4.16.7 4.16.6.1 4.16.6 4.16.5.1 4.16.5 4.16.4 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 All 255 releases
give / src / EventTickets / Routes / DeleteEventsListTable.php

DeleteEventsListTable.php in GiveWP – Donation Plugin and Fundraising Platform 4.16.9, at src/EventTickets/Routes/DeleteEventsListTable.php

119 lines 3.0 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 namespace Give\EventTickets\Routes;
4
5 use Give\EventTickets\ListTable\EventTicketsListTable;
6 use Give\EventTickets\Repositories\EventRepository;
7 use Give\Framework\Exceptions\Primitives\Exception;
8 use Give\Framework\Permissions\Facades\UserPermissions;
9 use WP_REST_Request;
10 use WP_REST_Response;
11 use WP_REST_Server;
12
13 /**
14 * @since 3.6.0
15 */
16 class DeleteEventsListTable
17 {
18 /**
19 * @var string
20 */
21 protected $endpoint = 'events-tickets/events/list-table';
22
23 /**
24 * @var WP_REST_Request
25 */
26 protected $request;
27
28 /**
29 * @var EventTicketsListTable
30 */
31 protected $listTable;
32
33 /**
34 * @inheritDoc
35 *
36 * @since 3.20.0 Set the permission callback to "delete_give_payments".
37 * @since 3.6.0
38 */
39 public function registerRoute()
40 {
41 register_rest_route(
42 'give-api/v2',
43 $this->endpoint,
44 [
45 [
46 'methods' => WP_REST_Server::DELETABLE,
47 'callback' => [$this, 'handleRequest'],
48 'permission_callback' => function () {
49 return UserPermissions::events()->canDelete();
50 },
51 ],
52 'args' => [
53 'ids' => [
54 'type' => 'string',
55 'required' => true,
56 'validate_callback' => function ($ids) {
57 foreach ($this->splitString($ids) as $id) {
58 if ( ! filter_var($id, FILTER_VALIDATE_INT)) {
59 return false;
60 }
61 }
62
63 return true;
64 },
65 ],
66 ],
67 ]
68 );
69 }
70
71 /**
72 * @since 4.14.0 update permission capability to use facade
73 * @since 3.6.0
74 * @throws Exception
75 */
76 public function handleRequest(WP_REST_Request $request): WP_Rest_Response
77 {
78 $ids = $this->splitString($request->get_param('ids'));
79 $errors = [];
80 $successes = [];
81
82 foreach ($ids as $id) {
83 $event = give(EventRepository::class)->getById($id);
84 if ( ! $event) {
85 $errors[] = $id;
86 continue;
87 }
88
89 $soldTicketsCount = $event->eventTickets()->count() ?? 0;
90 if ($soldTicketsCount > 0) {
91 $errors[] = $id;
92 continue;
93 }
94
95 $eventDeleted = give(EventRepository::class)->getById($id)->delete();
96 $eventDeleted ? $successes[] = $id : $errors[] = $id;
97 }
98
99 return new WP_REST_Response(array('errors' => $errors, 'successes' => $successes));
100 }
101
102
103 /**
104 * Split string
105 *
106 * @since 3.6.0
107 *
108 * @return string[]
109 */
110 protected function splitString(string $ids): array
111 {
112 if (strpos($ids, ',')) {
113 return array_map('trim', explode(',', $ids));
114 }
115
116 return [trim($ids)];
117 }
118 }
119