/** * Actually execute the GoogleAnalytics tracking * @param Database_Result * @param IsotopeProductCollection $objOrder */ protected function trackGATransaction($objConfig, $objOrder) { // Initilize GA Tracker $tracker = new \UnitedPrototype\GoogleAnalytics\Tracker($objConfig->ga_account, \Environment::get('base')); // Assemble Visitor information // (could also get unserialized from database) $visitor = new \UnitedPrototype\GoogleAnalytics\Visitor(); $visitor->setIpAddress(\Environment::get('ip')); $visitor->setUserAgent(\Environment::get('httpUserAgent')); $transaction = new \UnitedPrototype\GoogleAnalytics\Transaction(); $transaction->setOrderId($objOrder->document_number); $transaction->setAffiliation($objConfig->name); $transaction->setTotal($objOrder->getTotal()); $transaction->setTax($objOrder->getTotal() - $objOrder->getTaxFreeTotal()); // $transaction->setShipping($objOrder->shippingTotal); $objAddress = $objOrder->getBillingAddress(); $transaction->setCity($objAddress->city); if ($objAddress->subdivision) { $arrSub = explode("-", $objAddress->subdivision, 2); $transaction->setRegion($arrSub[1]); } $transaction->setCountry($objAddress->country); /** @var \Isotope\Model\ProductCollectionItem $objItem */ foreach ($objOrder->getItems() as $objItem) { $item = new \UnitedPrototype\GoogleAnalytics\Item(); if ($objItem->getSku()) { $item->setSku($objItem->getSku()); } else { $item->setSku('product' . $objItem->product_id); } $item->setName($objItem->getName()); $item->setPrice($objItem->getPrice()); $item->setQuantity($objItem->quantity); $arrOptionValues = array(); foreach ($objItem->getConfiguration() as $option) { $arrOptionValues[] = (string) $option; } if (!empty($arrOptionValues)) { $item->setVariation(implode(', ', $arrOptionValues)); } $transaction->addItem($item); } // Track logged-in member as custom variable if ($objConfig->ga_member != '' && $objOrder->member > 0 && ($objMember = \MemberModel::findByPk($objOrder->member)) !== null) { $customVar = new \UnitedPrototype\GoogleAnalytics\CustomVariable(1, 'Member', $this->parseSimpleTokens($objConfig->ga_member, $objMember->row()), \UnitedPrototype\GoogleAnalytics\CustomVariable::SCOPE_VISITOR); $tracker->addCustomVariable($customVar); } // Assemble Session information // (could also get unserialized from PHP session) $session = new \UnitedPrototype\GoogleAnalytics\Session(); $tracker->trackTransaction($transaction, $session, $visitor); }
/** * Delete downloads when deleting this order * @return integer */ public function delete() { $this->Database->query("DELETE FROM tl_iso_order_downloads WHERE pid IN (SELECT id FROM {$this->ctable} WHERE pid={$this->id})"); return parent::delete(); }
/** * Set the cart data * @param string * @param mixed */ public function __set($strKey, $varValue) { switch ($strKey) { case 'billingAddress': case 'billing_address': if (is_array($varValue)) { $this->arrSettings['billingAddress_id'] = 0; $this->arrSettings['billingAddress_data'] = $varValue; } else { $this->arrSettings['billingAddress_id'] = $varValue; } break; case 'shippingAddress': case 'shipping_address': if (is_array($varValue)) { $this->arrSettings['shippingAddress_id'] = 0; $this->arrSettings['shippingAddress_data'] = $varValue; } else { $this->arrSettings['shippingAddress_id'] = $varValue; } break; default: parent::__set($strKey, $varValue); } $this->blnModified = true; $this->arrCache = array(); }