PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 3.18.0
GiveWP – Donation Plugin and Fundraising Platform v3.18.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 / EventTickets / Routes / GetEventsListTable.php
give / src / EventTickets / Routes Last commit date
CreateEvent.php 2 years ago CreateEventTicketType.php 2 years ago DeleteEventTicketType.php 2 years ago DeleteEventsListTable.php 2 years ago GetEventForms.php 2 years ago GetEventTicketTypeTickets.php 2 years ago GetEventTicketTypes.php 2 years ago GetEventTickets.php 2 years ago GetEvents.php 2 years ago GetEventsListTable.php 2 years ago UpdateEvent.php 1 year ago UpdateEventTicketType.php 1 year ago
GetEventsListTable.php
185 lines
1 <?php
2
3 namespace Give\EventTickets\Routes;
4
5 use Give\EventTickets\ListTable\EventTicketsListTable;
6 use Give\Framework\Database\DB;
7 use Give\Framework\QueryBuilder\QueryBuilder;
8 use WP_REST_Request;
9 use WP_REST_Response;
10 use WP_REST_Server;
11
12 /**
13 * @since 3.6.0
14 */
15 class GetEventsListTable
16 {
17 /**
18 * @var string
19 */
20 protected $endpoint = 'events-tickets/events/list-table';
21
22 /**
23 * @var WP_REST_Request
24 */
25 protected $request;
26
27 /**
28 * @var EventTicketsListTable
29 */
30 protected $listTable;
31
32 /**
33 * @inheritDoc
34 *
35 * @since 3.6.0
36 */
37 public function registerRoute(): void
38 {
39 register_rest_route(
40 'give-api/v2',
41 $this->endpoint,
42 [
43 [
44 'methods' => WP_REST_Server::READABLE,
45 'callback' => [$this, 'handleRequest'],
46 'permission_callback' => [$this, 'permissionsCheck'],
47 ],
48 'args' => [
49 'page' => [
50 'type' => 'integer',
51 'default' => 1,
52 'minimum' => 1
53 ],
54 'perPage' => [
55 'type' => 'integer',
56 'default' => 30,
57 'minimum' => 1
58 ],
59 'search' => [
60 'type' => 'string',
61 'required' => false,
62 'sanitize_callback' => 'sanitize_text_field',
63 ],
64 'sortColumn' => [
65 'type' => 'string',
66 'default' => 'id',
67 'sanitize_callback' => 'sanitize_text_field',
68 ],
69 'sortDirection' => [
70 'type' => 'string',
71 'default' => 'asc',
72 'enum' => ['asc', 'desc'],
73 ],
74 'locale' => [
75 'type' => 'string',
76 'required' => false,
77 'default' => get_locale(),
78 ],
79 ],
80 ]
81 );
82 }
83
84 /**
85 * @since 3.6.0
86 */
87 public function handleRequest(WP_REST_Request $request): WP_REST_Response
88 {
89 $this->request = $request;
90 $this->listTable = give(EventTicketsListTable::class);
91
92 $events = $this->getEvents();
93 $eventsCount = $this->getTotalEventsCount();
94 $pageCount = (int)ceil($eventsCount / $request->get_param('perPage'));
95
96 if ('model' === $this->request->get_param('return')) {
97 $items = $events;
98 } else {
99 $this->listTable->items($events, $this->request->get_param('locale') ?? '');
100 $items = $this->listTable->getItems();
101 }
102
103 return new WP_REST_Response(
104 [
105 'items' => $items,
106 'totalItems' => $eventsCount,
107 'totalPages' => $pageCount
108 ]
109 );
110 }
111
112 /**
113 * @since 3.6.0
114 */
115 public function getEvents(): array
116 {
117 $page = $this->request->get_param('page');
118 $perPage = $this->request->get_param('perPage');
119 $sortColumns = $this->listTable->getSortColumnById($this->request->get_param('sortColumn') ?: 'id');
120 $sortDirection = $this->request->get_param('sortDirection') ?: 'desc';
121
122 $query = give()->events->prepareQuery();
123 $query = $this->getWhereConditions($query);
124
125 foreach ($sortColumns as $sortColumn) {
126 $query->orderBy($sortColumn, $sortDirection);
127 }
128
129 $query->limit($perPage)
130 ->offset(($page - 1) * $perPage);
131
132 $events = $query->getAll();
133
134 if (!$events) {
135 return [];
136 }
137
138 return $events;
139 }
140
141 /**
142 * @since 3.6.0
143 */
144 public function getTotalEventsCount(): int
145 {
146 $query = DB::table('give_events');
147 $query = $this->getWhereConditions($query);
148
149 return $query->count();
150 }
151
152 /**
153 * @since 3.6.0
154 */
155 private function getWhereConditions(QueryBuilder $query): QueryBuilder
156 {
157 $search = $this->request->get_param('search');
158
159 if ($search) {
160 if (ctype_digit($search)) {
161 $query->where('id', $search);
162 } else {
163 $query->whereLike('title', $search);
164 $query->orWhereLike('description', $search);
165 }
166 }
167
168 return $query;
169 }
170
171 /**
172 * @since 3.6.0
173 *
174 * @return bool|\WP_Error
175 */
176 public function permissionsCheck()
177 {
178 return current_user_can('edit_posts')?: new \WP_Error(
179 'rest_forbidden',
180 esc_html__("You don't have permission to view Events", 'give'),
181 ['status' => is_user_logged_in() ? 403 : 401]
182 );
183 }
184 }
185