Edit File by line
/home/zeestwma/richards.../wp-conte.../plugins/woocomme.../src/Admin/API/Reports
File: DataStore.php
}
[1500] Fix | Delete
}
[1501] Fix | Delete
[1502] Fix | Delete
$join_alias = 'orderitemmeta1';
[1503] Fix | Delete
$table_to_join_on = "{$wpdb->prefix}wc_order_product_lookup";
[1504] Fix | Delete
[1505] Fix | Delete
if ( empty( $sql_clauses['join'] ) ) {
[1506] Fix | Delete
$sql_clauses['join'][] = "JOIN {$wpdb->prefix}woocommerce_order_items orderitems ON orderitems.order_id = {$table_to_join_on}.order_id";
[1507] Fix | Delete
}
[1508] Fix | Delete
[1509] Fix | Delete
// If we're matching all filters (AND), we'll need multiple JOINs on postmeta.
[1510] Fix | Delete
// If not, just one.
[1511] Fix | Delete
if ( 'AND' === $match_operator || 1 === count( $sql_clauses['join'] ) ) {
[1512] Fix | Delete
$join_idx = count( $sql_clauses['join'] );
[1513] Fix | Delete
$join_alias = 'orderitemmeta' . $join_idx;
[1514] Fix | Delete
$sql_clauses['join'][] = "JOIN {$wpdb->prefix}woocommerce_order_itemmeta as {$join_alias} ON {$join_alias}.order_item_id = {$table_to_join_on}.order_item_id";
[1515] Fix | Delete
}
[1516] Fix | Delete
[1517] Fix | Delete
$in_comparator = '=' === $comparator ? 'in' : 'not in';
[1518] Fix | Delete
[1519] Fix | Delete
// Add subquery for products ordered using attributes not used in variations.
[1520] Fix | Delete
$term_attribute_subquery = "select product_id from {$wpdb->prefix}wc_product_attributes_lookup where is_variation_attribute=0 and term_id = %s";
[1521] Fix | Delete
// phpcs:disable WordPress.DB.PreparedSQL.InterpolatedNotPrepared
[1522] Fix | Delete
// phpcs:disable WordPress.DB.PreparedSQLPlaceholders.ReplacementsWrongNumber
[1523] Fix | Delete
$sql_clauses['where'][] = $wpdb->prepare(
[1524] Fix | Delete
"
[1525] Fix | Delete
( ( {$join_alias}.meta_key = %s AND {$join_alias}.meta_value {$comparator} %s ) or (
[1526] Fix | Delete
{$wpdb->prefix}wc_order_product_lookup.variation_id = 0 and {$wpdb->prefix}wc_order_product_lookup.product_id {$in_comparator} ({$term_attribute_subquery})
[1527] Fix | Delete
) )",
[1528] Fix | Delete
$meta_key,
[1529] Fix | Delete
$meta_value,
[1530] Fix | Delete
$term_id,
[1531] Fix | Delete
);
[1532] Fix | Delete
// phpcs:enable WordPress.DB.PreparedSQL.InterpolatedNotPrepared
[1533] Fix | Delete
// phpcs:enable WordPress.DB.PreparedSQLPlaceholders.ReplacementsWrongNumber
[1534] Fix | Delete
}
[1535] Fix | Delete
}
[1536] Fix | Delete
[1537] Fix | Delete
// If we're matching multiple attributes and all filters (AND), make sure
[1538] Fix | Delete
// we're matching attributes on the same product.
[1539] Fix | Delete
$num_attribute_filters = count( $sql_clauses['join'] );
[1540] Fix | Delete
[1541] Fix | Delete
for ( $i = 2; $i < $num_attribute_filters; $i++ ) {
[1542] Fix | Delete
$join_alias = 'orderitemmeta' . $i;
[1543] Fix | Delete
$sql_clauses['join'][] = "AND orderitemmeta1.order_item_id = {$join_alias}.order_item_id";
[1544] Fix | Delete
}
[1545] Fix | Delete
[1546] Fix | Delete
return $sql_clauses;
[1547] Fix | Delete
}
[1548] Fix | Delete
[1549] Fix | Delete
/**
[1550] Fix | Delete
* Returns logic operator for WHERE subclause based on 'match' query argument.
[1551] Fix | Delete
*
[1552] Fix | Delete
* @param array $query_args Parameters supplied by the user.
[1553] Fix | Delete
* @return string
[1554] Fix | Delete
*/
[1555] Fix | Delete
protected function get_match_operator( $query_args ) {
[1556] Fix | Delete
$operator = 'AND';
[1557] Fix | Delete
[1558] Fix | Delete
if ( ! isset( $query_args['match'] ) ) {
[1559] Fix | Delete
return $operator;
[1560] Fix | Delete
}
[1561] Fix | Delete
[1562] Fix | Delete
if ( 'all' === strtolower( $query_args['match'] ) ) {
[1563] Fix | Delete
$operator = 'AND';
[1564] Fix | Delete
} elseif ( 'any' === strtolower( $query_args['match'] ) ) {
[1565] Fix | Delete
$operator = 'OR';
[1566] Fix | Delete
}
[1567] Fix | Delete
return $operator;
[1568] Fix | Delete
}
[1569] Fix | Delete
[1570] Fix | Delete
/**
[1571] Fix | Delete
* Returns filtered comma separated ids, based on query arguments from the user.
[1572] Fix | Delete
*
[1573] Fix | Delete
* @param array $query_args Parameters supplied by the user.
[1574] Fix | Delete
* @param string $field Query field to filter.
[1575] Fix | Delete
* @param string $separator Field separator.
[1576] Fix | Delete
* @return string
[1577] Fix | Delete
*/
[1578] Fix | Delete
protected function get_filtered_ids( $query_args, $field, $separator = ',' ) {
[1579] Fix | Delete
global $wpdb;
[1580] Fix | Delete
[1581] Fix | Delete
$ids_str = '';
[1582] Fix | Delete
$ids = isset( $query_args[ $field ] ) && is_array( $query_args[ $field ] ) ? $query_args[ $field ] : array();
[1583] Fix | Delete
[1584] Fix | Delete
/**
[1585] Fix | Delete
* Filter the IDs before retrieving report data.
[1586] Fix | Delete
*
[1587] Fix | Delete
* Allows filtering of the objects included or excluded from reports.
[1588] Fix | Delete
*
[1589] Fix | Delete
* @param array $ids List of object Ids.
[1590] Fix | Delete
* @param array $query_args The original arguments for the request.
[1591] Fix | Delete
* @param string $field The object type.
[1592] Fix | Delete
* @param string $context The data store context.
[1593] Fix | Delete
*/
[1594] Fix | Delete
$ids = apply_filters( 'woocommerce_analytics_' . $field, $ids, $query_args, $field, $this->context );
[1595] Fix | Delete
[1596] Fix | Delete
if ( ! empty( $ids ) ) {
[1597] Fix | Delete
$placeholders = implode( $separator, array_fill( 0, count( $ids ), '%d' ) );
[1598] Fix | Delete
/* phpcs:disable WordPress.DB.PreparedSQL.InterpolatedNotPrepared */
[1599] Fix | Delete
$ids_str = $wpdb->prepare( "{$placeholders}", $ids );
[1600] Fix | Delete
/* phpcs:enable */
[1601] Fix | Delete
}
[1602] Fix | Delete
return $ids_str;
[1603] Fix | Delete
}
[1604] Fix | Delete
[1605] Fix | Delete
/**
[1606] Fix | Delete
* Assign report columns once full table name has been assigned.
[1607] Fix | Delete
*/
[1608] Fix | Delete
protected function assign_report_columns() {}
[1609] Fix | Delete
}
[1610] Fix | Delete
[1611] Fix | Delete
It is recommended that you Edit text format, this type of Fix handles quite a lot in one request
Function