| 1 |
<?php |
| 2 |
/** |
| 3 |
* Welcart order data class |
| 4 |
* |
| 5 |
* @package Welcart |
| 6 |
*/ |
| 7 |
|
| 8 |
namespace Welcart; |
| 9 |
|
| 10 |
if ( ! defined( 'ABSPATH' ) ) { |
| 11 |
exit; |
| 12 |
} |
| 13 |
|
| 14 |
/** |
| 15 |
* Item class |
| 16 |
* |
| 17 |
* The Welcart item class handles individual product data. |
| 18 |
* |
| 19 |
* @since 2.2.2 |
| 20 |
*/ |
| 21 |
class OrderData { |
| 22 |
|
| 23 |
/** |
| 24 |
* ID for this object. |
| 25 |
* |
| 26 |
* @since 2.2.2 |
| 27 |
* @var int |
| 28 |
*/ |
| 29 |
protected $id = 0; |
| 30 |
|
| 31 |
/** |
| 32 |
* Full data for this object. |
| 33 |
* |
| 34 |
* @since 2.2.2 |
| 35 |
* @var array |
| 36 |
*/ |
| 37 |
protected $data = array(); |
| 38 |
|
| 39 |
/** |
| 40 |
* Customer data for this object. |
| 41 |
* |
| 42 |
* @since 2.2.2 |
| 43 |
* @var array |
| 44 |
*/ |
| 45 |
protected $customer = array(); |
| 46 |
|
| 47 |
/** |
| 48 |
* Delivery data for this object. |
| 49 |
* |
| 50 |
* @since 2.2.2 |
| 51 |
* @var array |
| 52 |
*/ |
| 53 |
protected $delivery = array(); |
| 54 |
|
| 55 |
/** |
| 56 |
* Cart data. |
| 57 |
* |
| 58 |
* @since 2.2.2 |
| 59 |
* @var array |
| 60 |
*/ |
| 61 |
protected $cart = array(); |
| 62 |
|
| 63 |
/** |
| 64 |
* Cart meta data. Name value pairs (name + default value). |
| 65 |
* |
| 66 |
* @since 2.2.2 |
| 67 |
* @var array |
| 68 |
*/ |
| 69 |
protected $cart_meta = array(); |
| 70 |
|
| 71 |
/** |
| 72 |
* Order meta data. Name value pairs (name + default value). |
| 73 |
* |
| 74 |
* @since 2.2.2 |
| 75 |
* @var array |
| 76 |
*/ |
| 77 |
protected $order_meta = array(); |
| 78 |
|
| 79 |
/** |
| 80 |
* Extra data for this object. Name value pairs (name + default value). |
| 81 |
* |
| 82 |
* @since 2.2.2 |
| 83 |
* @var array |
| 84 |
*/ |
| 85 |
protected $extra_data = array(); |
| 86 |
|
| 87 |
/** |
| 88 |
* Get a order data if ID is passed, otherwise the order data is false. |
| 89 |
* This class should not be instantiated. |
| 90 |
* The wc_get_order() function should be used instead. |
| 91 |
* |
| 92 |
* @param int $order_id Order ID of the order. |
| 93 |
*/ |
| 94 |
public function __construct( $order_id = 0 ) { |
| 95 |
if ( is_numeric( $order_id ) && $order_id > 0 ) { |
| 96 |
$this->set_id( $order_id ); |
| 97 |
} else { |
| 98 |
$this->set_id( 0 ); |
| 99 |
} |
| 100 |
|
| 101 |
$this->set_data( $this->id ); |
| 102 |
} |
| 103 |
|
| 104 |
/** |
| 105 |
* Set ID. |
| 106 |
* |
| 107 |
* @param int $id ID. |
| 108 |
*/ |
| 109 |
public function set_id( $id ) { |
| 110 |
$this->id = absint( $id ); |
| 111 |
} |
| 112 |
|
| 113 |
/** |
| 114 |
* Set data. |
| 115 |
* |
| 116 |
* @since 2.2.2 |
| 117 |
*/ |
| 118 |
public function set_data( $order_id ) { |
| 119 |
global $wpdb; |
| 120 |
$order_table = $wpdb->prefix . 'usces_order'; |
| 121 |
|
| 122 |
// order data. |
| 123 |
$order_cache_key = 'wel_order_data_' . $order_id; |
| 124 |
$_data = wp_cache_get( $order_cache_key ); |
| 125 |
|
| 126 |
if ( false === $_data ) { |
| 127 |
$_data = $wpdb->get_row( |
| 128 |
$wpdb->prepare( |
| 129 |
"SELECT * FROM {$order_table} WHERE ID = %d", |
| 130 |
$order_id |
| 131 |
) |
| 132 |
); |
| 133 |
if ( null !== $_data ) { |
| 134 |
wp_cache_set( $order_cache_key, $_data ); |
| 135 |
} |
| 136 |
} |
| 137 |
|
| 138 |
if ( ! $_data ) { |
| 139 |
return false; |
| 140 |
} |
| 141 |
|
| 142 |
// order meta data. |
| 143 |
$order_meta_cache_key = 'wel_order_meta_' . $order_id; |
| 144 |
|
| 145 |
$_meta = wp_cache_get( $order_meta_cache_key ); |
| 146 |
|
| 147 |
if ( false === $_meta ) { |
| 148 |
$order_meta_table_name = $wpdb->prefix . 'usces_order_meta'; |
| 149 |
|
| 150 |
$query = $wpdb->prepare( |
| 151 |
"SELECT * FROM {$order_meta_table_name} WHERE order_id = %d", |
| 152 |
$order_id |
| 153 |
); |
| 154 |
|
| 155 |
$_meta = $wpdb->get_results( $query ); |
| 156 |
if ( null !== $_meta ) { |
| 157 |
wp_cache_set( $order_meta_cache_key, $_meta ); |
| 158 |
} |
| 159 |
} |
| 160 |
|
| 161 |
$csod = array(); |
| 162 |
$cscs = array(); |
| 163 |
$csde = array(); |
| 164 |
$order = array(); |
| 165 |
foreach ( $_meta as $_meta_row ){ |
| 166 |
if ( 0 === strpos( $_meta_row->meta_key, 'csod_' ) ) { |
| 167 |
$key = str_replace( 'csod_', '', $_meta_row->meta_key ); |
| 168 |
$csod[ $key ] = $_meta_row->meta_value; |
| 169 |
} elseif ( 0 === strpos( $_meta_row->meta_key, 'cscs_' ) ) { |
| 170 |
$key = str_replace( 'cscs_', '', $_meta_row->meta_key ); |
| 171 |
$cscs[ $key ] = $_meta_row->meta_value; |
| 172 |
} elseif ( 0 === strpos( $_meta_row->meta_key, 'csde_' ) ) { |
| 173 |
$key = str_replace( 'csde_', '', $_meta_row->meta_key ); |
| 174 |
$csde[ $key ] = $_meta_row->meta_value; |
| 175 |
} elseif ( 'customer_country' === $_meta_row->meta_key ) { |
| 176 |
$cscs['country'] = $_meta_row->meta_value; |
| 177 |
} else { |
| 178 |
$this->order_meta[ $_meta_row->meta_key ] = $_meta_row->meta_value; |
| 179 |
} |
| 180 |
} |
| 181 |
|
| 182 |
// customer data. |
| 183 |
$this->customer = array( |
| 184 |
'member_id' => $_data->mem_id, |
| 185 |
'email' => $_data->order_email, |
| 186 |
'name1' => $_data->order_name1, |
| 187 |
'name2' => $_data->order_name2, |
| 188 |
'name3' => $_data->order_name3, |
| 189 |
'name4' => $_data->order_name4, |
| 190 |
'zip' => $_data->order_zip, |
| 191 |
'pref' => $_data->order_pref, |
| 192 |
'address1' => $_data->order_address1, |
| 193 |
'address2' => $_data->order_address2, |
| 194 |
'address3' => $_data->order_address3, |
| 195 |
'tel' => $_data->order_tel, |
| 196 |
'fax' => $_data->order_fax, |
| 197 |
); |
| 198 |
$this->customer = array_merge( $this->customer, $cscs ); |
| 199 |
|
| 200 |
// delivery data. |
| 201 |
$_delivery = wel_safe_unserialize( $_data->order_delivery ); |
| 202 |
$this->delivery = array( |
| 203 |
'delivery_flag' => isset( $_delivery['delivery_flag'] ) ? $_delivery['delivery_flag'] : '', |
| 204 |
'name1' => $_delivery['name1'], |
| 205 |
'name2' => $_delivery['name2'], |
| 206 |
'name3' => $_delivery['name3'], |
| 207 |
'name4' => $_delivery['name4'], |
| 208 |
'zip' => $_delivery['zipcode'], |
| 209 |
'pref' => $_delivery['pref'], |
| 210 |
'address1' => $_delivery['address1'], |
| 211 |
'address2' => $_delivery['address2'], |
| 212 |
'address3' => $_delivery['address3'], |
| 213 |
'tel' => $_delivery['tel'], |
| 214 |
'country' => $_delivery['country'], |
| 215 |
); |
| 216 |
$this->delivery = array_merge( $this->delivery, $csde ); |
| 217 |
|
| 218 |
// cart data. |
| 219 |
$cart_cache_key = 'wel_order_cart_' . $order_id; |
| 220 |
|
| 221 |
$_cart = wp_cache_get( $cart_cache_key ); |
| 222 |
|
| 223 |
if ( false === $_cart ) { |
| 224 |
$_cart = usces_get_ordercartdata( $order_id ); |
| 225 |
if ( null !== $_cart ) { |
| 226 |
wp_cache_set( $cart_cache_key, $_cart ); |
| 227 |
} |
| 228 |
} |
| 229 |
if ( ! $_cart ) { |
| 230 |
$_cart = array(); |
| 231 |
} |
| 232 |
$this->cart = $_cart; |
| 233 |
|
| 234 |
$total_price = $_data->order_item_total_price - $_data->order_usedpoint + $_data->order_discount + $_data->order_shipping_charge + $_data->order_cod_fee + $_data->order_tax; |
| 235 |
if ( $total_price < 0 ) { |
| 236 |
$total_price = 0; |
| 237 |
} |
| 238 |
|
| 239 |
$order_data = array( |
| 240 |
'ID' => $_data->ID, |
| 241 |
'getpoint' => $_data->order_getpoint, |
| 242 |
'usedpoint' => $_data->order_usedpoint, |
| 243 |
'discount' => usces_crform( $_data->order_discount, false, false, 'return', false ), |
| 244 |
'payment_name' => $_data->order_payment_name, |
| 245 |
'shipping_charge' => usces_crform( $_data->order_shipping_charge, false, false, 'return', false ), |
| 246 |
'cod_fee' => usces_crform( $_data->order_cod_fee, false, false, 'return', false ), |
| 247 |
'tax' => usces_crform( $_data->order_tax, false, false, 'return', false ), |
| 248 |
'total_price' => usces_crform( $total_price, false, false, 'return', false ), |
| 249 |
'status' => $_data->order_status, |
| 250 |
'date' => mysql2date( __( 'Y/m/d' ), $_data->order_date ), |
| 251 |
'modified' => mysql2date( __( 'Y/m/d' ), $_data->order_modified ), |
| 252 |
'condition' => wel_safe_unserialize( $_data->order_condition ), |
| 253 |
'customer' => $this->customer, |
| 254 |
'delivery' => $this->delivery, |
| 255 |
'cart' => $this->cart, |
| 256 |
); |
| 257 |
|
| 258 |
$this->data = array_merge( $order_data, $this->order_meta, $this->extra_data ); |
| 259 |
} |
| 260 |
|
| 261 |
/** |
| 262 |
* Returns all data for this object. |
| 263 |
* |
| 264 |
* @since 2.2.2 |
| 265 |
* @return array |
| 266 |
*/ |
| 267 |
public function get_data() { |
| 268 |
if ( ! isset( $this->data['ID'] ) ) { |
| 269 |
return false; |
| 270 |
} else { |
| 271 |
return array_merge( $this->data ); |
| 272 |
} |
| 273 |
} |
| 274 |
|
| 275 |
} |
| 276 |
|