1 <?php
2 if ( ! defined( 'ABSPATH' ) )
3 exit;
4
5 if ( ! class_exists( 'WC_Report_Stock' ) )
6 require_once( 'class-wc-report-stock.php' );
7
8 9 10 11 12 13 14 15
16 class WC_Report_Most_Stocked extends WC_Report_Stock {
17
18 19 20 21 22
23 public function get_items( $current_page, $per_page ) {
24 global $wpdb;
25
26 $this->max_items = 0;
27 $this->items = array();
28
29
30 $stock = absint( max( get_option( 'woocommerce_notify_low_stock_amount' ), 0 ) );
31
32 $query_from = "FROM {$wpdb->posts} as posts
33 INNER JOIN {$wpdb->postmeta} AS postmeta ON posts.ID = postmeta.post_id
34 INNER JOIN {$wpdb->postmeta} AS postmeta2 ON posts.ID = postmeta2.post_id
35 WHERE 1=1
36 AND posts.post_type IN ('product', 'product_variation')
37 AND posts.post_status = 'publish'
38 AND (
39 postmeta.meta_key = '_stock' AND CAST(postmeta.meta_value AS SIGNED) > '{$stock}' AND postmeta.meta_value != ''
40 )
41 AND (
42 ( postmeta2.meta_key = '_manage_stock' AND postmeta2.meta_value = 'yes' ) OR ( posts.post_type = 'product_variation' )
43 )
44 ";
45
46 $this->items = $wpdb->get_results( $wpdb->prepare( "SELECT posts.ID as id, posts.post_parent as parent {$query_from} GROUP BY posts.ID ORDER BY CAST(postmeta.meta_value AS SIGNED) DESC LIMIT %d, %d;", ( $current_page - 1 ) * $per_page, $per_page ) );
47 $this->max_items = $wpdb->get_var( "SELECT COUNT( DISTINCT posts.ID ) {$query_from};" );
48 }
49 }