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