Example #1
0
 /**
  * Import object data from json string.
  * Note: Watch out for single index arrays becoming stdClass objects
  *
  * @param string JSON
  * @param bool
  * @return Cart
  */
 public function importJson($json, $reset = true)
 {
     // strict parameter
     if (!is_string($json)) {
         return false;
     }
     // reset cart
     if ($reset) {
         $this->reset();
     }
     $cart = @(array) json_decode($json, true);
     // just gimme an array
     if (isset($cart['id'])) {
         $this->setId($cart['id']);
     }
     if (isset($cart['customer'])) {
         $customerData = $cart['customer'];
         $customer = new Customer();
         if (is_array($customerData)) {
             $customer->importJson(json_encode($customerData));
             $this->setCustomer($customer);
         }
     }
     if (isset($cart['items']) && count($cart['items']) > 0) {
         $items = $cart['items'];
         foreach ($items as $productKey => $item) {
             $itemJson = json_encode($item);
             $item = new Item();
             $item->importJson($itemJson);
             $this->setItem($item);
         }
     }
     if (isset($cart['shipments']) && count($cart['shipments']) > 0) {
         $shipments = $cart['shipments'];
         foreach ($shipments as $shipmentKey => $shipment) {
             $tmpShipment = new Shipment();
             if ($shipment instanceof stdClass) {
                 $tmpShipment->importStdClass($shipment);
                 $this->setShipment($tmpShipment);
             } else {
                 if (is_array($shipment)) {
                     $tmpShipment->importJson(json_encode($shipment));
                     $this->setShipment($tmpShipment);
                 }
             }
         }
     }
     if (isset($cart['discounts']) && count($cart['discounts']) > 0) {
         $discounts = $cart['discounts'];
         foreach ($discounts as $discountKey => $discount) {
             $tmpDiscount = new Discount();
             if ($discount instanceof stdClass) {
                 $tmpDiscount->importStdClass($discount);
                 $this->setDiscount($tmpDiscount);
             } else {
                 if (is_array($tmpDiscount)) {
                     $tmpDiscount->importJson(json_encode($discount));
                     $this->setDiscount($tmpDiscount);
                 }
             }
         }
     }
     if (isset($cart['include_tax'])) {
         $includeTax = $cart['include_tax'];
         $this->setIncludeTax($includeTax);
     }
     if (isset($cart['tax_rate'])) {
         $taxRate = $cart['tax_rate'];
         $this->setTaxRate($taxRate);
     }
     if (isset($cart['discount_taxable_last'])) {
         $discountTaxableLast = $cart['discount_taxable_last'];
         $this->setDiscountTaxableLast($discountTaxableLast);
     }
     return $this;
 }