ta_key, meta_value FROM $wpdb->postmeta WHERE post_id IN ({$included_order_ids}) AND meta_key IN ( '_wc_order_attribution_source_type', '_wc_order_attribution_utm_source' ) ", ARRAY_A ); /* phpcs:enable */ } $order_attributions = array(); foreach ( $order_attributions_meta as $meta ) { if ( ! isset( $order_attributions[ $meta['order_id'] ] ) ) { $order_attributions[ $meta['order_id'] ] = array(); } $order_attributions[ $meta['order_id'] ][ $meta['meta_key'] ] = $meta['meta_value']; } return $order_attributions; } /** * Get all statuses that have been synced. * * @return string[] Unique order statuses. */ public static function get_all_statuses() { global $wpdb; $statuses = wp_cache_get( self::ORDERS_STATUSES_ALL_CACHE_KEY, 'woocommerce_analytics' ); if ( false === $statuses ) { $table_name = self::get_db_table_name(); $statuses = $wpdb->get_col( $wpdb->prepare( 'SELECT DISTINCT status FROM %i', $table_name ) ); wp_cache_set( self::ORDERS_STATUSES_ALL_CACHE_KEY, $statuses, 'woocommerce_analytics', YEAR_IN_SECONDS ); } return $statuses; } /** * Ensure the order status will present in `get_all_statuses` call result. * * @internal * @param int $order_id Order ID. * @return void */ public static function maybe_update_order_statuses_cache( $order_id ) { $order = wc_get_order( $order_id ); if ( $order ) { $status = self::normalize_order_status( $order->get_status() ); $statuses = self::get_all_statuses(); if ( ! in_array( $status, $statuses, true ) ) { $statuses[] = $status; wp_cache_set( self::ORDERS_STATUSES_ALL_CACHE_KEY, $statuses, 'woocommerce_analytics', YEAR_IN_SECONDS ); } } } /** * Ensure the order status will present in `get_all_statuses` call result. * * @deprecated 10.3.0 Use maybe_update_order_statuses_cache(). * @param int $order_id Order ID. * @return void */ public static function maybe_update_order_statuses_transient( $order_id ) { wc_deprecated_function( __METHOD__, '10.3.0', __CLASS__ . '::maybe_update_order_statuses_cache()' ); self::maybe_update_order_statuses_cache( $order_id ); } /** * Initialize query objects. */ protected function initialize_queries() { $this->clear_all_clauses(); $this->subquery = new SqlQuery( $this->context . '_subquery' ); $this->subquery->add_sql_clause( 'select', self::get_db_table_name() . '.order_id' ); $this->subquery->add_sql_clause( 'from', self::get_db_table_name() ); } }