Automattic\WooCommerce\Admin\API\Reports

DataStore::get_status_subquery()protectedWC 1.0

Returns order status subquery to be used in WHERE SQL query, based on query arguments from the user.

Method of the class: DataStore{}

No Hooks.

Return

String.

Usage

// protected - for code of main (parent) or child class
$result = $this->get_status_subquery( $query_args, $operator );
$query_args(array) (required)
Parameters supplied by the user.
$operator(string)
AND or OR, based on match query argument.
Default: 'AND'

DataStore::get_status_subquery() code WC 8.7.0

protected function get_status_subquery( $query_args, $operator = 'AND' ) {
	global $wpdb;

	$subqueries        = array();
	$excluded_statuses = array();
	if ( isset( $query_args['status_is'] ) && is_array( $query_args['status_is'] ) && count( $query_args['status_is'] ) > 0 ) {
		$allowed_statuses = array_map( array( $this, 'normalize_order_status' ), esc_sql( $query_args['status_is'] ) );
		if ( $allowed_statuses ) {
			$subqueries[] = "{$wpdb->prefix}wc_order_stats.status IN ( '" . implode( "','", $allowed_statuses ) . "' )";
		}
	}

	if ( isset( $query_args['status_is_not'] ) && is_array( $query_args['status_is_not'] ) && count( $query_args['status_is_not'] ) > 0 ) {
		$excluded_statuses = array_map( array( $this, 'normalize_order_status' ), $query_args['status_is_not'] );
	}

	if ( ( ! isset( $query_args['status_is'] ) || empty( $query_args['status_is'] ) )
		&& ( ! isset( $query_args['status_is_not'] ) || empty( $query_args['status_is_not'] ) )
	) {
		$excluded_statuses = array_map( array( $this, 'normalize_order_status' ), $this->get_excluded_report_order_statuses() );
	}

	if ( $excluded_statuses ) {
		$subqueries[] = "{$wpdb->prefix}wc_order_stats.status NOT IN ( '" . implode( "','", $excluded_statuses ) . "' )";
	}

	return implode( " $operator ", $subqueries );
}