| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179 |
- <?php
- /**
- * Admin Reports
- *
- * Functions used for displaying sales and customer reports in admin.
- *
- * @author WooThemes
- * @category Admin
- * @package WooCommerce/Admin/Reports
- * @version 2.0.0
- */
- if ( ! defined( 'ABSPATH' ) ) {
- exit;
- }
- if ( class_exists( 'WC_Admin_Reports', false ) ) {
- return;
- }
- /**
- * WC_Admin_Reports Class.
- */
- class WC_Admin_Reports {
- /**
- * Handles output of the reports page in admin.
- */
- public static function output() {
- $reports = self::get_reports();
- $first_tab = array_keys( $reports );
- $current_tab = ! empty( $_GET['tab'] ) ? sanitize_title( $_GET['tab'] ) : $first_tab[0];
- $current_report = isset( $_GET['report'] ) ? sanitize_title( $_GET['report'] ) : current( array_keys( $reports[ $current_tab ]['reports'] ) );
- include_once dirname( __FILE__ ) . '/reports/class-wc-admin-report.php';
- include_once dirname( __FILE__ ) . '/views/html-admin-page-reports.php';
- }
- /**
- * Returns the definitions for the reports to show in admin.
- *
- * @return array
- */
- public static function get_reports() {
- $reports = array(
- 'orders' => array(
- 'title' => __( 'Orders', 'woocommerce' ),
- 'reports' => array(
- 'sales_by_date' => array(
- 'title' => __( 'Sales by date', 'woocommerce' ),
- 'description' => '',
- 'hide_title' => true,
- 'callback' => array( __CLASS__, 'get_report' ),
- ),
- 'sales_by_product' => array(
- 'title' => __( 'Sales by product', 'woocommerce' ),
- 'description' => '',
- 'hide_title' => true,
- 'callback' => array( __CLASS__, 'get_report' ),
- ),
- 'sales_by_category' => array(
- 'title' => __( 'Sales by category', 'woocommerce' ),
- 'description' => '',
- 'hide_title' => true,
- 'callback' => array( __CLASS__, 'get_report' ),
- ),
- 'coupon_usage' => array(
- 'title' => __( 'Coupons by date', 'woocommerce' ),
- 'description' => '',
- 'hide_title' => true,
- 'callback' => array( __CLASS__, 'get_report' ),
- ),
- 'downloads' => array(
- 'title' => __( 'Customer downloads', 'woocommerce' ),
- 'description' => '',
- 'hide_title' => true,
- 'callback' => array( __CLASS__, 'get_report' ),
- ),
- ),
- ),
- 'customers' => array(
- 'title' => __( 'Customers', 'woocommerce' ),
- 'reports' => array(
- 'customers' => array(
- 'title' => __( 'Customers vs. guests', 'woocommerce' ),
- 'description' => '',
- 'hide_title' => true,
- 'callback' => array( __CLASS__, 'get_report' ),
- ),
- 'customer_list' => array(
- 'title' => __( 'Customer list', 'woocommerce' ),
- 'description' => '',
- 'hide_title' => true,
- 'callback' => array( __CLASS__, 'get_report' ),
- ),
- ),
- ),
- 'stock' => array(
- 'title' => __( 'Stock', 'woocommerce' ),
- 'reports' => array(
- 'low_in_stock' => array(
- 'title' => __( 'Low in stock', 'woocommerce' ),
- 'description' => '',
- 'hide_title' => true,
- 'callback' => array( __CLASS__, 'get_report' ),
- ),
- 'out_of_stock' => array(
- 'title' => __( 'Out of stock', 'woocommerce' ),
- 'description' => '',
- 'hide_title' => true,
- 'callback' => array( __CLASS__, 'get_report' ),
- ),
- 'most_stocked' => array(
- 'title' => __( 'Most stocked', 'woocommerce' ),
- 'description' => '',
- 'hide_title' => true,
- 'callback' => array( __CLASS__, 'get_report' ),
- ),
- ),
- ),
- );
- if ( wc_tax_enabled() ) {
- $reports['taxes'] = array(
- 'title' => __( 'Taxes', 'woocommerce' ),
- 'reports' => array(
- 'taxes_by_code' => array(
- 'title' => __( 'Taxes by code', 'woocommerce' ),
- 'description' => '',
- 'hide_title' => true,
- 'callback' => array( __CLASS__, 'get_report' ),
- ),
- 'taxes_by_date' => array(
- 'title' => __( 'Taxes by date', 'woocommerce' ),
- 'description' => '',
- 'hide_title' => true,
- 'callback' => array( __CLASS__, 'get_report' ),
- ),
- ),
- );
- }
- $reports = apply_filters( 'woocommerce_admin_reports', $reports );
- $reports = apply_filters( 'woocommerce_reports_charts', $reports ); // Backwards compatibility.
- foreach ( $reports as $key => $report_group ) {
- if ( isset( $reports[ $key ]['charts'] ) ) {
- $reports[ $key ]['reports'] = $reports[ $key ]['charts'];
- }
- foreach ( $reports[ $key ]['reports'] as $report_key => $report ) {
- if ( isset( $reports[ $key ]['reports'][ $report_key ]['function'] ) ) {
- $reports[ $key ]['reports'][ $report_key ]['callback'] = $reports[ $key ]['reports'][ $report_key ]['function'];
- }
- }
- }
- return $reports;
- }
- /**
- * Get a report from our reports subfolder.
- *
- * @param string $name
- */
- public static function get_report( $name ) {
- $name = sanitize_title( str_replace( '_', '-', $name ) );
- $class = 'WC_Report_' . str_replace( '-', '_', $name );
- include_once apply_filters( 'wc_admin_reports_path', 'reports/class-wc-report-' . $name . '.php', $name, $class );
- if ( ! class_exists( $class ) ) {
- return;
- }
- $report = new $class();
- $report->output_report();
- }
- }
|