Conditions | 17 |
Paths | 3456 |
Total Lines | 101 |
Code Lines | 52 |
Lines | 26 |
Ratio | 25.74 % |
Changes | 0 |
Small methods make your code easier to understand, in particular if combined with a good name. Besides, if your method is small, finding a good name is usually much easier.
For example, if you find yourself adding comments to a method's body, this is usually a good sign to extract the commented part to a new method, and use the comment as a starting point when coming up with a good name for this new method.
Commonly applied refactorings include:
If many parameters/temporary variables are present:
1 | <?php |
||
272 | public function get_sql( $args = array() ) { |
||
273 | /* @var WPDB $wpdb */ |
||
274 | global $wpdb; |
||
275 | |||
276 | $defaults = array( |
||
277 | 'number' => 20, |
||
278 | 'offset' => 0, |
||
279 | 'paged' => 0, |
||
280 | 'orderby' => 'date', |
||
281 | 'order' => 'DESC', |
||
282 | 'fields' => 'all', |
||
283 | 'count' => false, |
||
284 | ); |
||
285 | |||
286 | $args = wp_parse_args( $args, $defaults ); |
||
287 | |||
288 | // validate params. |
||
289 | $this->validate_params( $args ); |
||
290 | |||
291 | if ( $args['number'] < 1 ) { |
||
292 | $args['number'] = 999999999999; |
||
293 | } |
||
294 | |||
295 | // Where clause for primary table. |
||
296 | $where = ''; |
||
297 | |||
298 | // Get sql query for meta. |
||
299 | if ( ! empty( $args['meta_query'] ) ) { |
||
300 | $meta_query_object = new WP_Meta_Query( $args['meta_query'] ); |
||
301 | $meta_query = $meta_query_object->get_sql( 'log', $this->table_name, 'id' ); |
||
302 | $where = implode( '', $meta_query ); |
||
303 | } |
||
304 | |||
305 | $where .= ' WHERE 1=1 '; |
||
306 | |||
307 | // Set offset. |
||
308 | if ( empty( $args['offset'] ) && ( 0 < $args['paged'] ) ) { |
||
309 | $args['offset'] = $args['number'] * ( $args['paged'] - 1 ); |
||
310 | } |
||
311 | |||
312 | // Set fields. |
||
313 | $fields = "{$this->table_name}.*"; |
||
314 | if ( is_string( $args['fields'] ) && ( 'all' !== $args['fields'] ) ) { |
||
315 | $fields = "{$this->table_name}.{$args['fields']}"; |
||
316 | } |
||
317 | |||
318 | // Set count. |
||
319 | if ( $args['count'] ) { |
||
320 | $fields = "COUNT({$fields})"; |
||
321 | } |
||
322 | |||
323 | // Specific logs. |
||
324 | View Code Duplication | if ( ! empty( $args['ID'] ) ) { |
|
325 | |||
326 | if ( ! is_array( $args['ID'] ) ) { |
||
327 | $args['ID'] = explode( ',', $args['ID'] ); |
||
328 | } |
||
329 | $log_ids = implode( ',', array_map( 'intval', $args['ID'] ) ); |
||
330 | |||
331 | $where .= " AND {$this->table_name}.ID IN( {$log_ids} ) "; |
||
332 | } |
||
333 | |||
334 | // Logs created for a specific date or in a date range |
||
335 | if ( ! empty( $args['date_query'] ) ) { |
||
336 | $date_query_object = new WP_Date_Query( $args['date_query'], "{$this->table_name}.log_date" ); |
||
337 | $where .= $date_query_object->get_sql(); |
||
338 | } |
||
339 | |||
340 | // Logs create for specific parent. |
||
341 | View Code Duplication | if ( ! empty( $args['log_parent'] ) ) { |
|
342 | if ( ! is_array( $args['log_parent'] ) ) { |
||
343 | $args['log_parent'] = explode( ',', $args['log_parent'] ); |
||
344 | } |
||
345 | $parent_ids = implode( ',', array_map( 'intval', $args['log_parent'] ) ); |
||
346 | |||
347 | $where .= " AND {$this->table_name}.log_parent IN( {$parent_ids} ) "; |
||
348 | } |
||
349 | |||
350 | // Logs create for specific type. |
||
351 | // is_array check is for backward compatibility. |
||
352 | View Code Duplication | if ( ! empty( $args['log_type'] ) && ! is_array( $args['log_type'] ) ) { |
|
353 | if ( ! is_array( $args['log_type'] ) ) { |
||
354 | $args['log_type'] = explode( ',', $args['log_type'] ); |
||
355 | } |
||
356 | |||
357 | $log_types = implode( '\',\'', array_map( 'trim', $args['log_type'] ) ); |
||
358 | |||
359 | $where .= " AND {$this->table_name}.log_type IN( '{$log_types}' ) "; |
||
360 | } |
||
361 | |||
362 | $args['orderby'] = ! array_key_exists( $args['orderby'], $this->get_columns() ) ? 'log_date' : $args['orderby']; |
||
363 | |||
364 | $args['orderby'] = esc_sql( $args['orderby'] ); |
||
365 | $args['order'] = esc_sql( $args['order'] ); |
||
366 | |||
367 | return $wpdb->prepare( |
||
368 | "SELECT {$fields} FROM {$this->table_name} {$where} ORDER BY {$this->table_name}.{$args['orderby']} {$args['order']} LIMIT %d,%d;", |
||
369 | absint( $args['offset'] ), |
||
370 | absint( $args['number'] ) |
||
371 | ); |
||
372 | } |
||
373 | |||
395 |