HEX
Server: Apache/2.4.65 (Debian)
System: Linux kubikelcreative 5.10.0-35-amd64 #1 SMP Debian 5.10.237-1 (2025-05-19) x86_64
User: www-data (33)
PHP: 8.4.13
Disabled: NONE
Upload Files
File: /var/www/indoadvisory/wp/wp-content/plugins/polylang-wc/include/rest-order.php
<?php
/**
 * @package Polylang-WC
 */

/**
 * Exposes the order language in the REST API.
 *
 * @since 1.1
 */
class PLLWC_REST_Order extends PLL_REST_Translated_Object {
	/**
	 * Order language data store.
	 *
	 * @var PLLWC_Order_Language_CPT
	 */
	protected $data_store;

	/**
	 * Constructor.
	 *
	 * @since 1.1
	 */
	public function __construct() {
		add_filter( 'woocommerce_rest_shop_order_object_query', array( $this, 'add_language_query_arg_in_rest' ), 10, 2 );

		if ( empty( PLL()->rest_api ) ) {
			return;
		}

		parent::__construct( PLL()->rest_api, array( 'shop_order' => array( 'filters' => false, 'translations' => false ) ) );

		$this->data_store = PLLWC_Data_Store::load( 'order_language' );
	}

	/**
	 * Adds a `lang` entry to the given array, depending on the language requested in the REST API.
	 * This is used to filter the orders by language in WC's REST route V3 (`/wc/v3/orders`).
	 * Hooked to `woocommerce_rest_{$post_type}_object_query`.
	 *
	 * @see WC_REST_CRUD_Controller::prepare_objects_query()
	 *
	 * @since 1.9
	 *
	 * @param array           $args    Key value array of query var to query value.
	 * @param WP_REST_Request $request The request used.
	 * @return array
	 *
	 * @phpstan-param WP_REST_Request<array{lang?: string}> $request
	 */
	public function add_language_query_arg_in_rest( $args, $request ) {
		$args['lang'] = $request->get_param( 'lang' );
		return $args;
	}

	/**
	 * Returns the object language.
	 *
	 * @since 1.1
	 *
	 * @param array $object Order array.
	 * @return string|false
	 */
	public function get_language( $object ) {
		return $this->data_store->get_language( $object['id'] );
	}

	/**
	 * Sets the object language.
	 *
	 * @since 1.1
	 *
	 * @param string   $lang   Language code.
	 * @param WC_Order $object Instance of WC_Order.
	 * @return bool
	 */
	public function set_language( $lang, $object ) {
		if ( $object instanceof WC_Order ) {
			$this->data_store->set_language( $object->get_id(), $lang );
		}
		return true;
	}
}