| 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 |