Edit File by line
/home/zeestwma/richards.../wp-conte.../plugins/woocomme.../src/Admin/API/Reports
File: GenericQuery.php
<?php
[0] Fix | Delete
declare( strict_types = 1);
[1] Fix | Delete
[2] Fix | Delete
namespace Automattic\WooCommerce\Admin\API\Reports;
[3] Fix | Delete
[4] Fix | Delete
defined( 'ABSPATH' ) || exit;
[5] Fix | Delete
[6] Fix | Delete
use WC_Data_Store;
[7] Fix | Delete
[8] Fix | Delete
/**
[9] Fix | Delete
* A generic class for a report-specific query to be used in Analytics.
[10] Fix | Delete
*
[11] Fix | Delete
* Example usage:
[12] Fix | Delete
* <pre><code class="language-php">$args = array(
[13] Fix | Delete
* 'before' => '2018-07-19 00:00:00',
[14] Fix | Delete
* 'after' => '2018-07-05 00:00:00',
[15] Fix | Delete
* 'page' => 2,
[16] Fix | Delete
* );
[17] Fix | Delete
* $report = new GenericQuery( $args, 'coupons' );
[18] Fix | Delete
* $mydata = $report->get_data();
[19] Fix | Delete
* </code></pre>
[20] Fix | Delete
*
[21] Fix | Delete
* It uses the name provided in the class property or in the constructor call to load the `report-{name}` data store.
[22] Fix | Delete
*
[23] Fix | Delete
* It's used by the {@see GenericController GenericController}.
[24] Fix | Delete
*
[25] Fix | Delete
* @since 9.3.0
[26] Fix | Delete
*/
[27] Fix | Delete
class GenericQuery extends \WC_Object_Query {
[28] Fix | Delete
[29] Fix | Delete
/**
[30] Fix | Delete
* Specific query name.
[31] Fix | Delete
* Will be used to load the `report-{name}` data store,
[32] Fix | Delete
* and to call `woocommerce_analytics_{snake_case(name)}_*` filters.
[33] Fix | Delete
*
[34] Fix | Delete
* @var string
[35] Fix | Delete
*/
[36] Fix | Delete
protected $name;
[37] Fix | Delete
[38] Fix | Delete
/**
[39] Fix | Delete
* Create a new query.
[40] Fix | Delete
*
[41] Fix | Delete
* @param array $args Criteria to query on in a format similar to WP_Query.
[42] Fix | Delete
* @param string $name Query name.
[43] Fix | Delete
* @extends WC_Object_Query::_construct
[44] Fix | Delete
*/
[45] Fix | Delete
public function __construct( $args, $name = null ) {
[46] Fix | Delete
$this->name = $name ?? $this->name;
[47] Fix | Delete
[48] Fix | Delete
return parent::__construct( $args ); // phpcs:ignore Universal.CodeAnalysis.ConstructorDestructorReturn.ReturnValueFound
[49] Fix | Delete
}
[50] Fix | Delete
/**
[51] Fix | Delete
* Valid fields for Products report.
[52] Fix | Delete
*
[53] Fix | Delete
* @return array
[54] Fix | Delete
*/
[55] Fix | Delete
protected function get_default_query_vars() {
[56] Fix | Delete
return array();
[57] Fix | Delete
}
[58] Fix | Delete
[59] Fix | Delete
/**
[60] Fix | Delete
* Get data from `report-{$name}` store, based on the current query vars.
[61] Fix | Delete
* Filters query vars through `woocommerce_analytics_{snake_case(name)}_query_args` filter.
[62] Fix | Delete
* Filters results through `woocommerce_analytics_{snake_case(name)}_select_query` filter.
[63] Fix | Delete
*
[64] Fix | Delete
* @return mixed filtered results from the data store.
[65] Fix | Delete
*/
[66] Fix | Delete
public function get_data() {
[67] Fix | Delete
$snake_name = str_replace( '-', '_', $this->name );
[68] Fix | Delete
/**
[69] Fix | Delete
* Filter query args given for the report.
[70] Fix | Delete
*
[71] Fix | Delete
* @since 9.3.0
[72] Fix | Delete
*
[73] Fix | Delete
* @param array $query_args Query args.
[74] Fix | Delete
*/
[75] Fix | Delete
$args = apply_filters( "woocommerce_analytics_{$snake_name}_query_args", $this->get_query_vars() );
[76] Fix | Delete
[77] Fix | Delete
$data_store = \WC_Data_Store::load( "report-{$this->name}" );
[78] Fix | Delete
$results = $data_store->get_data( $args );
[79] Fix | Delete
/**
[80] Fix | Delete
* Filter report query results.
[81] Fix | Delete
*
[82] Fix | Delete
* @since 9.3.0
[83] Fix | Delete
*
[84] Fix | Delete
* @param stdClass|WP_Error $results Results from the data store.
[85] Fix | Delete
* @param array $args Query args used to get the data (potentially filtered).
[86] Fix | Delete
*/
[87] Fix | Delete
return apply_filters( "woocommerce_analytics_{$snake_name}_select_query", $results, $args );
[88] Fix | Delete
}
[89] Fix | Delete
}
[90] Fix | Delete
[91] Fix | Delete
It is recommended that you Edit text format, this type of Fix handles quite a lot in one request
Function