File "WC.php"
Full Path: /home/warrior1/public_html/plugins/google-listings-and-ads/src/Proxies/WC.php
File size: 3.96 KB
MIME-type: text/x-php
Charset: utf-8
<?php
declare( strict_types=1 );
namespace Automattic\WooCommerce\GoogleListingsAndAds\Proxies;
use Automattic\WooCommerce\GoogleListingsAndAds\Exception\InvalidValue;
use WC_Countries;
use WC_Coupon;
use WC_Product;
use WC_Shipping_Zone;
use WC_Shipping_Zones;
use WP_Term;
use function WC as WCCore;
defined( 'ABSPATH' ) || exit;
/**
* Class WC
*
* @package Automattic\WooCommerce\GoogleListingsAndAds\Proxies
*/
class WC {
/**
* The base location for the store.
*
* @var string
*/
protected $base_country;
/**
* @var array
*/
protected $countries;
/** @var WC_Countries */
protected $wc_countries;
/**
* @var array
*/
protected $continents;
/**
* WC constructor.
*
* @param WC_Countries|null $countries
*/
public function __construct( ?WC_Countries $countries = null ) {
$countries = $countries ?? new WC_Countries();
$this->wc_countries = $countries;
$this->base_country = $countries->get_base_country() ?? 'US';
$this->countries = $countries->get_countries() ?? [];
$this->allowed_countries = $countries->get_allowed_countries() ?? [];
$this->continents = $countries->get_continents() ?? [];
}
/**
* Get WooCommerce
*
* @return array
*/
public function get_countries(): array {
return $this->countries;
}
/**
* Get WooCommerce allowed countries.
*
* @return array
*/
public function get_allowed_countries(): array {
return $this->allowed_countries;
}
/**
* Get the base country for the store.
*
* @return string
*/
public function get_base_country(): string {
return $this->base_country;
}
/**
* Get all continents.
*
* @return array
*/
public function get_continents(): array {
return $this->continents;
}
/**
* Get the WC_Countries object
*
* @return WC_Countries
*/
public function get_wc_countries(): WC_Countries {
return $this->wc_countries;
}
/**
* Get a WooCommerce product and confirm it exists.
*
* @param int $product_id
*
* @return WC_Product
*
* @throws InvalidValue When the product does not exist.
*/
public function get_product( int $product_id ): WC_Product {
$product = wc_get_product( $product_id );
if ( ! $product instanceof WC_Product ) {
throw InvalidValue::not_valid_product_id( $product_id );
}
return $product;
}
/**
* Get a WooCommerce product if it exists or return null if it doesn't
*
* @param int $product_id
*
* @return WC_Product|null
*/
public function maybe_get_product( int $product_id ): ?WC_Product {
$product = wc_get_product( $product_id );
if ( ! $product instanceof WC_Product ) {
return null;
}
return $product;
}
/**
* Get a WooCommerce coupon if it exists or return null if it doesn't
*
* @param int $coupon_id
*
* @return WC_Coupon|null
*/
public function maybe_get_coupon( int $coupon_id ): ?WC_Coupon {
$coupon = new WC_Coupon( $coupon_id );
if ( $coupon->get_id() === 0 ) {
return null;
}
return $coupon;
}
/**
* Get shipping zones from the database.
*
* @return array Array of arrays.
*
* @since 1.9.0
*/
public function get_shipping_zones(): array {
return WC_Shipping_Zones::get_zones();
}
/**
* Get shipping zone using it's ID
*
* @param int $zone_id Zone ID.
*
* @return WC_Shipping_Zone|bool
*
* @since 1.9.0
*/
public function get_shipping_zone( int $zone_id ): ?WC_Shipping_Zone {
return WC_Shipping_Zones::get_zone( $zone_id );
}
/**
* Get an array of shipping classes.
*
* @return array|WP_Term[]
*
* @since 1.10.0
*/
public function get_shipping_classes(): array {
return WCCore()->shipping()->get_shipping_classes();
}
/**
* Get Base Currency Code.
*
* @return string
*
* @since 1.10.0
*/
public function get_woocommerce_currency(): string {
return get_woocommerce_currency();
}
/**
* Get available payment gateways.
*/
public function get_available_payment_gateways(): array {
return WCCore()->payment_gateways->get_available_payment_gateways();
}
}