<?php /** * Created by Vextras. * * Name: Ryan Hungate * Email: ryan@vextras.com * Date: 7/15/16 * Time: 1:26 PM */ class MailChimp_WooCommerce_Cart { protected $store_id; protected $id; protected $customer; protected $campaign_id; protected $checkout_url; protected $currency_code; protected $order_total; protected $tax_total; protected $lines = array(); /** * @param $unique_id * @return $this */ public function setId( $unique_id ) { $this->id = $unique_id; return $this; } /** * @return mixed */ public function getId() { return $this->id; } /** * @param $store_id * @return $this */ public function setStoreID( $store_id ) { $this->store_id = $store_id; return $this; } /** * @return mixed|string */ public function getStoreID() { if ( empty( $this->store_id ) ) { $this->store_id = mailchimp_get_store_id(); } return $this->store_id; } /** * @param MailChimp_WooCommerce_Customer $customer * @return $this */ public function setCustomer( MailChimp_WooCommerce_Customer $customer ) { $this->customer = $customer; return $this; } /** * @return MailChimp_WooCommerce_Customer */ public function getCustomer() { if ( empty( $this->customer ) ) { $this->customer = new MailChimp_WooCommerce_Customer(); } return $this->customer; } /** * @param $id * @param bool $throw_if_invalid * @return $this * @throws Exception */ public function setCampaignID( $id, $throw_if_invalid = false ) { $api = MailChimp_WooCommerce_MailChimpApi::getInstance(); $cid = trim( $id ); if ( ! empty( $cid ) && ( $campaign = $api->getCampaign( $cid, $throw_if_invalid ) ) ) { $this->campaign_id = $campaign['id']; } return $this; } /** * @return $this */ public function removeCampaignID() { $this->campaign_id = null; return $this; } /** * @return mixed */ public function getCampaignID() { return $this->campaign_id; } /** * @param $url * @return $this */ public function setCheckoutUrl( $url ) { $this->checkout_url = $url; return $this; } /** * @return string */ public function getCheckoutURL() { if ( empty( $this->checkout_url ) ) { $this->checkout_url = wc_get_checkout_url(); } return $this->checkout_url; } /** * @return $this */ public function setCurrencyCode() { $this->currency_code = get_woocommerce_currency(); return $this; } /** * @return string */ public function getCurrencyCode() { if ( empty( $this->currency_code ) ) { $this->currency_code = get_woocommerce_currency(); } return $this->currency_code; } /** * @param $total * @return $this */ public function setOrderTotal( $total ) { $this->order_total = $total; return $this; } /** * @return float */ public function getOrderTotal() { return $this->order_total; } /** * @param $total * @return $this */ public function setTaxTotal( $total ) { $this->tax_total = $total; return $this; } /** * @return float */ public function getTaxTotal() { return $this->tax_total; } /** * @param MailChimp_WooCommerce_LineItem $item * @return $this */ public function addItem( MailChimp_WooCommerce_LineItem $item ) { $this->lines[] = $item; return $this; } /** * @return array */ public function items() { return $this->lines; } /** * @return mixed */ public function toArray() { return mailchimp_array_remove_empty( array( 'id' => (string) $this->getId(), 'customer' => $this->getCustomer()->toArray(), 'campaign_id' => (string) $this->getCampaignID(), 'checkout_url' => (string) $this->getCheckoutURL(), 'currency_code' => (string) $this->getCurrencyCode(), 'order_total' => floatval( $this->getOrderTotal() ), 'tax_total' => $this->getTaxTotal() > 0 ? floatval( $this->getTaxTotal() ) : null, 'lines' => array_map( function( $item ) { return $item->toArray(); }, $this->items() ), ) ); } /** * @return array */ public function toArrayForUpdate() { return mailchimp_array_remove_empty( array( 'campaign_id' => (string) $this->getCampaignID(), 'checkout_url' => (string) $this->getCheckoutURL(), 'currency_code' => (string) $this->getCurrencyCode(), 'order_total' => $this->getOrderTotal(), 'tax_total' => ( $this->getTaxTotal() > 0 ? $this->getTaxTotal() : null ), 'lines' => array_map( function( $item ) { return $item->toArray(); }, $this->items() ), ) ); } /** * @param array $data * @return MailChimp_WooCommerce_Cart */ public function fromArray( array $data ) { $singles = array( 'store_id', 'id', 'campaign_id', 'checkout_url', 'currency_code', 'order_total', 'tax_total', ); foreach ( $singles as $key ) { if ( array_key_exists( $key, $data ) ) { $this->$key = $data[ $key ]; } } if ( array_key_exists( 'customer', $data ) && is_array( $data['customer'] ) ) { $customer = new MailChimp_WooCommerce_Customer(); $this->customer = $customer->fromArray( $data['customer'] ); } if ( array_key_exists( 'lines', $data ) && is_array( $data['lines'] ) ) { foreach ( $data['lines'] as $line_item ) { $item = new MailChimp_WooCommerce_LineItem(); $this->lines[] = $item->fromArray( $line_item ); } } return $this; } }