PluginProbe
Stream – Activity Log & Audit Trail / 3.4.2
Stream – Activity Log & Audit Trail v3.4.2
4.4.0 4.3.0 4.2.2 4.2.1 trunk 2.0.1 2.0.2 2.0.3 2.0.4 2.0.5 3.0.0 3.0.1 3.0.2 3.0.3 3.0.4 3.0.5 3.0.6 3.0.7 3.1 3.1.1 3.10.0 3.2.0 3.2.1 3.2.2 3.2.3 All 50 releases
← All changes | classes/class-query.php +10 -125 3.0.73.4.2 View file →
@@ -2,13 +2,8 @@
2 2 namespace WP_Stream;
3 3
4 4 class Query {
5 5 /**
6 - * @var DB
7 - */
8 - public $db;
9 -
10 - /**
11 6 * Hold the number of records found
12 7 *
13 8 * @var int
14 9 */
@@ -14,17 +9,8 @@
14 9 */
15 10 public $found_records = 0;
16 11
17 12 /**
18 - * Class constructor.
19 - *
20 - * @param DB $db The parent database class.
21 - */
22 - public function __construct( $db ) {
23 - $this->db = $db;
24 - }
25 -
26 - /**
27 13 * Query records
28 14 *
29 15 * @param array Query args
30 16 *
@@ -32,72 +18,8 @@
32 18 */
33 19 public function query( $args ) {
34 20 global $wpdb;
35 21
36 - $defaults = array(
37 - // Search param
38 - 'search' => null,
39 - 'search_field' => 'summary',
40 - 'record_after' => null, // Deprecated, use date_after instead
41 - // Date-based filters
42 - 'date' => null, // Ex: 2015-07-01
43 - 'date_from' => null, // Ex: 2015-07-01
44 - 'date_to' => null, // Ex: 2015-07-01
45 - 'date_after' => null, // Ex: 2015-07-01T15:19:21+00:00
46 - 'date_before' => null, // Ex: 2015-07-01T15:19:21+00:00
47 - // Record ID filters
48 - 'record' => null,
49 - 'record__in' => array(),
50 - 'record__not_in' => array(),
51 - // Pagination params
52 - 'records_per_page' => get_option( 'posts_per_page', 20 ),
53 - 'paged' => 1,
54 - // Order
55 - 'order' => 'desc',
56 - 'orderby' => 'date',
57 - // Fields selection
58 - 'fields' => array(),
59 - );
60 -
61 - // Additional property fields
62 - $properties = array(
63 - 'user_id' => null,
64 - 'user_role' => null,
65 - 'ip' => null,
66 - 'object_id' => null,
67 - 'site_id' => null,
68 - 'blog_id' => null,
69 - 'connector' => null,
70 - 'context' => null,
71 - 'action' => null,
72 - );
73 -
74 - /**
75 - * Filter allows additional query properties to be added
76 - *
77 - * @return array Array of query properties
78 - */
79 - $properties = apply_filters( 'wp_stream_query_properties', $properties );
80 -
81 - // Add property fields to defaults, including their __in/__not_in variations
82 - foreach ( $properties as $property => $default ) {
83 - if ( ! isset( $defaults[ $property ] ) ) {
84 - $defaults[ $property ] = $default;
85 - }
86 -
87 - $defaults[ "{$property}__in" ] = array();
88 - $defaults[ "{$property}__not_in" ] = array();
89 - }
90 -
91 - $args = wp_parse_args( $args, $defaults );
92 -
93 - /**
94 - * Filter allows additional arguments to query $args
95 - *
96 - * @return array Array of query arguments
97 - */
98 - $args = apply_filters( 'wp_stream_query_args', $args );
99 -
100 22 $join = '';
101 23 $where = '';
102 24
103 25 /**
@@ -123,9 +45,9 @@
123 45 $where .= $wpdb->prepare( " AND $wpdb->stream.user_role = %s", $args['user_role'] );
124 46 }
125 47
126 48 if ( ! empty( $args['search'] ) ) {
127 - $field = ! empty( $args['search_field'] ) ? $args['search_field'] : 'summary';
49 + $field = ! empty( $args['search_field'] ) ? $args['search_field'] : 'summary';
128 50
129 51 // Sanitize field
130 52 $allowed_fields = array( 'ID', 'site_id', 'blog_id', 'object_id', 'user_id', 'user_role', 'created', 'summary', 'connector', 'context', 'action', 'ip' );
131 53 if ( in_array( $field, $allowed_fields, true ) ) {
@@ -151,8 +73,13 @@
151 73
152 74 /**
153 75 * PARSE DATE PARAM FAMILY
154 76 */
77 + if ( ! empty( $args['date'] ) ) {
78 + $args['date_from'] = $args['date'];
79 + $args['date_to'] = $args['date'];
80 + }
81 +
155 82 if ( ! empty( $args['date_from'] ) ) {
156 83 $date = get_gmt_from_date( date( 'Y-m-d H:i:s', strtotime( $args['date_from'] . ' 00:00:00' ) ) );
157 84 $where .= $wpdb->prepare( " AND DATE($wpdb->stream.created) >= %s", $date );
158 85 }
@@ -171,13 +98,8 @@
171 98 $date = get_gmt_from_date( date( 'Y-m-d H:i:s', strtotime( $args['date_before'] ) ) );
172 99 $where .= $wpdb->prepare( " AND DATE($wpdb->stream.created) < %s", $date );
173 100 }
174 101
175 - if ( ! empty( $args['date'] ) ) {
176 - $args['date_from'] = date( 'Y-m-d', strtotime( $args['date'] ) ) . ' 00:00:00';
177 - $args['date_to'] = date( 'Y-m-d', strtotime( $args['date'] ) ) . ' 23:59:59';
178 - }
179 -
180 102 /**
181 103 * PARSE __IN PARAM FAMILY
182 104 */
183 105 $ins = array();
@@ -304,51 +226,14 @@
304 226 * @return string
305 227 */
306 228 $query = apply_filters( 'wp_stream_db_query', $query, $args );
307 229
230 + $result = array();
308 231 /**
309 232 * QUERY THE DATABASE FOR RESULTS
310 233 */
311 - $results = $wpdb->get_results( $query ); // @codingStandardsIgnoreLine $query already prepared
234 + $result['items'] = $wpdb->get_results( $query ); // @codingStandardsIgnoreLine $query already prepared
235 + $result['count'] = $result['items'] ? absint( $wpdb->get_var( 'SELECT FOUND_ROWS()' ) ) : 0;
312 236
313 - // Hold the number of records found
314 - $this->found_records = absint( $wpdb->get_var( 'SELECT FOUND_ROWS()' ) );
315 -
316 - // Add meta to the records, when applicable
317 - if ( empty( $fields ) || in_array( 'meta', $fields, true ) ) {
318 - $results = $this->add_record_meta( $results );
319 - }
320 -
321 - return (array) $results;
322 - }
323 -
324 - /**
325 - * Add meta to a set of records
326 - *
327 - * @param array $records
328 - *
329 - * @return array
330 - */
331 - public function add_record_meta( $records ) {
332 - global $wpdb;
333 -
334 - $record_ids = array_map( 'absint', wp_list_pluck( $records, 'ID' ) );
335 -
336 - if ( empty( $record_ids ) ) {
337 - return (array) $records;
338 - }
339 -
340 - $sql_meta = sprintf(
341 - "SELECT * FROM $wpdb->streammeta WHERE record_id IN ( %s )",
342 - implode( ',', $record_ids )
343 - );
344 -
345 - $meta = $wpdb->get_results( $sql_meta ); // @codingStandardsIgnoreLine prepare okay
346 - $ids_f = array_flip( $record_ids );
347 -
348 - foreach ( $meta as $meta_record ) {
349 - $records[ $ids_f[ $meta_record->record_id ] ]->meta[ $meta_record->meta_key ] = maybe_unserialize( $meta_record->meta_value );
350 - }
351 -
352 - return (array) $records;
237 + return $result;
353 238 }
354 239 }