File "class-wc-order-factory.php"
Full path: /home/kosmetik/public_html/wp-content/plugins/woocommerce/includes/class-wc-order-factory.php
File
size: 3.04 B
MIME-type: text/x-php
Charset: utf-8
Download Open Edit Advanced Editor Back
<?php
defined('ABSPATH') || exit;
class WC_Order_Factory
{
public static function get_order($order_id = false)
{
$order_id = self::get_order_id($order_id);
if (!$order_id) {
return false;
}
$order_type = WC_Data_Store::load('order')->get_order_type($order_id);
$order_type_data = wc_get_order_type($order_type);
if ($order_type_data) {
$classname = $order_type_data['class_name'];
} else {
$classname = false;
}
$classname = apply_filters('woocommerce_order_class', $classname, $order_type, $order_id);
if (!class_exists($classname)) {
return false;
}
try {
return new $classname($order_id);
} catch (Exception $e) {
wc_caught_exception($e, __FUNCTION__, array($order_id));
return false;
}
}
public static function get_order_item($item_id = 0)
{
if (is_numeric($item_id)) {
$item_type = WC_Data_Store::load('order-item')->get_order_item_type($item_id);
$id = $item_id;
} elseif ($item_id instanceof WC_Order_Item) {
$item_type = $item_id->get_type();
$id = $item_id->get_id();
} elseif (is_object($item_id) && !empty($item_id->order_item_type)) {
$id = $item_id->order_item_id;
$item_type = $item_id->order_item_type;
} else {
$item_type = false;
$id = false;
}
if ($id && $item_type) {
$classname = false;
switch ($item_type) {
case 'line_item':
case 'product':
$classname = 'WC_Order_Item_Product';
break;
case 'coupon':
$classname = 'WC_Order_Item_Coupon';
break;
case 'fee':
$classname = 'WC_Order_Item_Fee';
break;
case 'shipping':
$classname = 'WC_Order_Item_Shipping';
break;
case 'tax':
$classname = 'WC_Order_Item_Tax';
break;
}
$classname = apply_filters('woocommerce_get_order_item_classname', $classname, $item_type, $id);
if ($classname && class_exists($classname)) {
try {
return new $classname($id);
} catch (Exception $e) {
return false;
}
}
}
return false;
}
public static function get_order_id($order)
{
global $post;
if (false === $order && is_a($post, 'WP_Post') && 'shop_order' === get_post_type($post)) {
return absint($post->ID);
} elseif (is_numeric($order)) {
return $order;
} elseif ($order instanceof WC_Abstract_Order) {
return $order->get_id();
} elseif (!empty($order->ID)) {
return $order->ID;
} else {
return false;
}
}
}