File "class-wc-data-store.php"
Full path: /home/kosmetik/public_html/wp-content/plugins/woocommerce/includes/class-wc-data-store.php
File
size: 3.41 B
MIME-type: text/x-php
Charset: utf-8
Download Open Edit Advanced Editor Back
<?php
defined('ABSPATH') || exit;
class WC_Data_Store
{
private $instance = null;
private $stores = array('coupon' => 'WC_Coupon_Data_Store_CPT', 'customer' => 'WC_Customer_Data_Store', 'customer-download' => 'WC_Customer_Download_Data_Store', 'customer-download-log' => 'WC_Customer_Download_Log_Data_Store', 'customer-session' => 'WC_Customer_Data_Store_Session', 'order' => 'WC_Order_Data_Store_CPT', 'order-refund' => 'WC_Order_Refund_Data_Store_CPT', 'order-item' => 'WC_Order_Item_Data_Store', 'order-item-coupon' => 'WC_Order_Item_Coupon_Data_Store', 'order-item-fee' => 'WC_Order_Item_Fee_Data_Store', 'order-item-product' => 'WC_Order_Item_Product_Data_Store', 'order-item-shipping' => 'WC_Order_Item_Shipping_Data_Store', 'order-item-tax' => 'WC_Order_Item_Tax_Data_Store', 'payment-token' => 'WC_Payment_Token_Data_Store', 'product' => 'WC_Product_Data_Store_CPT', 'product-grouped' => 'WC_Product_Grouped_Data_Store_CPT', 'product-variable' => 'WC_Product_Variable_Data_Store_CPT', 'product-variation' => 'WC_Product_Variation_Data_Store_CPT', 'shipping-zone' => 'WC_Shipping_Zone_Data_Store', 'webhook' => 'WC_Webhook_Data_Store');
private $current_class_name = '';
private $object_type = '';
public function __construct($object_type)
{
$this->object_type = $object_type;
$this->stores = apply_filters('woocommerce_data_stores', $this->stores);
if (!array_key_exists($object_type, $this->stores)) {
$pieces = explode('-', $object_type);
$object_type = $pieces[0];
}
if (array_key_exists($object_type, $this->stores)) {
$store = apply_filters('woocommerce_' . $object_type . '_data_store', $this->stores[$object_type]);
if (is_object($store)) {
if (!$store instanceof WC_Object_Data_Store_Interface) {
throw new Exception(__('Invalid data store.', 'woocommerce'));
}
$this->current_class_name = get_class($store);
$this->instance = $store;
} else {
if (!class_exists($store)) {
throw new Exception(__('Invalid data store.', 'woocommerce'));
}
$this->current_class_name = $store;
$this->instance = new $store();
}
} else {
throw new Exception(__('Invalid data store.', 'woocommerce'));
}
}
public function __sleep()
{
return array('object_type');
}
public function __wakeup()
{
$this->__construct($this->object_type);
}
public static function load($object_type)
{
return new WC_Data_Store($object_type);
}
public function get_current_class_name()
{
return $this->current_class_name;
}
public function read(&$data)
{
$this->instance->read($data);
}
public function create(&$data)
{
$this->instance->create($data);
}
public function update(&$data)
{
$this->instance->update($data);
}
public function delete(&$data, $args = array())
{
$this->instance->delete($data, $args);
}
public function __call($method, $parameters)
{
if (is_callable(array($this->instance, $method))) {
$object = array_shift($parameters);
$parameters = array_merge(array(&$object), $parameters);
return $this->instance->{$method}(...$parameters);
}
}
}