PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / trunk
GiveWP – Donation Plugin and Fundraising Platform vtrunk
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 / API / Endpoints / Logs / GetLogs.php
give / src / API / Endpoints / Logs Last commit date
Endpoint.php 5 months ago FlushLogs.php 4 years ago GetLogs.php 2 years ago
GetLogs.php
183 lines
1 <?php
2
3 namespace Give\API\Endpoints\Logs;
4
5 use Give\Log\LogRepository;
6 use Give\Log\ValueObjects\LogType;
7 use WP_REST_Request;
8 use WP_REST_Response;
9
10 /**
11 * Class GetLogs
12 * @package Give\API\Endpoints\Logs
13 *
14 * @since 2.10.0
15 */
16 class GetLogs extends Endpoint
17 {
18
19 /** @var string */
20 protected $endpoint = 'logs/get-logs';
21
22 /**
23 * @var LogRepository
24 */
25 private $logRepository;
26
27 /**
28 * GetLogs constructor.
29 *
30 * @param LogRepository $repository
31 */
32 public function __construct(LogRepository $repository)
33 {
34 $this->logRepository = $repository;
35 }
36
37 /**
38 * @inheritDoc
39 */
40 public function registerRoute()
41 {
42 register_rest_route(
43 'give-api/v2',
44 $this->endpoint,
45 [
46 [
47 'methods' => 'GET',
48 'callback' => [$this, 'handleRequest'],
49 'permission_callback' => [$this, 'permissionsCheck'],
50 'args' => [
51 'page' => [
52 'validate_callback' => function ($param) {
53 return filter_var($param, FILTER_VALIDATE_INT);
54 },
55 'default' => '1',
56 ],
57 'type' => [
58 'validate_callback' => function ($param) {
59 if (empty($param) || ('all' === $param)) {
60 return true;
61 }
62
63 return LogType::isValid($param);
64 },
65 'default' => 'all',
66 ],
67 'category' => [
68 'validate_callback' => function ($param) {
69 return is_string($param);
70 },
71 'default' => '',
72 ],
73 'source' => [
74 'validate_callback' => function ($param) {
75 return is_string($param);
76 },
77 'default' => '',
78 ],
79 'sort' => [
80 'validate_callback' => function ($param) {
81 if (empty($param)) {
82 return true;
83 }
84
85 return in_array($param, $this->logRepository->getSortableColumns(), true);
86 },
87 'default' => 'id',
88 ],
89 'direction' => [
90 'validate_callback' => function ($param) {
91 if (empty($param)) {
92 return true;
93 }
94
95 return in_array(strtoupper($param), ['ASC', 'DESC'], true);
96 },
97 'default' => 'DESC',
98 ],
99 ],
100 ],
101 'schema' => [$this, 'getSchema'],
102 ]
103 );
104 }
105
106 /**
107 * @return array
108 */
109 public function getSchema()
110 {
111 return [
112 '$schema' => 'http://json-schema.org/draft-04/schema#',
113 'title' => 'logs',
114 'type' => 'object',
115 'properties' => [
116 'page' => [
117 'type' => 'integer',
118 'description' => esc_html__('Current page', 'give'),
119 ],
120 'type' => [
121 'type' => 'string',
122 'description' => esc_html__('Log type', 'give'),
123 ],
124 'category' => [
125 'type' => 'string',
126 'description' => esc_html__('Log category', 'give'),
127 ],
128 'source' => [
129 'type' => 'string',
130 'description' => esc_html__('Log source', 'give'),
131 ],
132 'direction' => [
133 'type' => 'string',
134 'description' => esc_html__('Sort direction', 'give'),
135 ],
136 'sort' => [
137 'type' => 'string',
138 'description' => esc_html__('Sort by column', 'give'),
139 ],
140 ],
141 ];
142 }
143
144 /**
145 * @since 3.12.1 Add 'givewp_log_source_view' filter
146 *
147 * @param WP_REST_Request $request
148 *
149 * @return WP_REST_Response
150 */
151 public function handleRequest(WP_REST_Request $request)
152 {
153 $data = [];
154 $logs = $this->logRepository->getLogsForRequest($request);
155 $total = $this->logRepository->getLogCountForRequest($request);
156
157 foreach ($logs as $log) {
158 $data[] = [
159 'id' => $log->getId(),
160 'log_type' => $log->getType(),
161 'category' => $log->getCategory(),
162 'source' => apply_filters('givewp_log_source_view', $log->getSource(), $log->getContext(),
163 $log->getId()),
164 'message' => $log->getMessage(),
165 'context' => $log->getContext(),
166 'date' => $log->getDate(),
167 ];
168 }
169
170 return new WP_REST_Response(
171 [
172 'status' => true,
173 'data' => $data,
174 'pages' => ceil($total / $this->logRepository->getLogsPerPageLimit()),
175 'categories' => $this->logRepository->getCategories(),
176 'sources' => $this->logRepository->getSources(),
177 'statuses' => LogType::getTypesTranslated(),
178 ]
179 );
180 }
181
182 }
183