protected function _requireVisitorWithTwoProducts() { $visitor = new Mage_Log_Model_Visitor(); $visitor->setSessionId(md5(time()) . md5(microtime()))->setLastVisitAt(now())->save(); $item = new Mage_Catalog_Model_Product_Compare_Item(); $item->setVisitorId($visitor->getId())->setProductId(1)->save(); $item = new Mage_Catalog_Model_Product_Compare_Item(); $item->setVisitorId($visitor->getId())->setProductId(2)->save(); Mage::getSingleton('Mage_Log_Model_Visitor')->load($visitor->getId()); $this->_assertCompareListEquals(array(1, 2)); }
public function getId() { if ($this->_skipRequestLogging == false) { return parent::getId(); } // Return a bogus visitor-ID that is not logged at all, but used in various buggy Magento parts return abs(crc32(Mage::getModel('core/session')->getSessionId())); }
/** * Calculate cache product compare collection * * @param bool $logout * @return Mage_Catalog_Helper_Product_Compare */ public function calculate($logout = false) { // first visit if (!$this->_catalogSession->hasCatalogCompareItemsCount() && !$this->_customerId) { $count = 0; } else { /** @var $collection Mage_Catalog_Model_Resource_Eav_Mysql4_Product_Compare_Item_Collection */ $collection = Mage::getResourceModel('catalog/product_compare_item_collection')->useProductItem(true); if (!$logout && $this->_customerSession->isLoggedIn()) { $collection->setCustomerId($this->_customerSession->getCustomerId()); } elseif ($this->_customerId) { $collection->setCustomerId($this->_customerId); } else { $collection->setVisitorId($this->_logVisitor->getId()); } /* Price data is added to consider item stock status using price index */ $collection->addPriceData(); $this->_productVisibility->addVisibleInSiteFilterToCollection($collection); $count = $collection->getSize(); } $this->_catalogSession->setCatalogCompareItemsCount($count); return $this; }
/** * Saving information about quote * * @param Mage_Log_Model_Visitor $visitor * @return Mage_Log_Model_Mysql4_Visitor */ protected function _saveQuoteInfo($visitor) { $write = $this->_getWriteAdapter(); if ($visitor->getDoQuoteCreate()) { $write->insert($this->getTable('log/quote_table'), array('quote_id' => $visitor->getQuoteId(), 'visitor_id' => $visitor->getId(), 'created_at' => now())); $visitor->setDoQuoteCreate(false); } if ($visitor->getDoQuoteDestroy()) { /** * We have delete quote from log because if original quote was * deleted and Mysql restarted we will get key duplication error */ $write->delete($this->getTable('log/quote_table'), $write->quoteInto('quote_id=?', $visitor->getQuoteId())); // $write->update($this->getTable('log/quote_table'), // array('deleted_at'=> now()), // $write->quoteInto('quote_id=?', $visitor->getQuoteId()) // ); $visitor->setDoQuoteDestroy(false); $visitor->setQuoteId(null); } return $this; }
/** * Saving information about quote * * @param Mage_Log_Model_Visitor $visitor * @return Mage_Log_Model_Resource_Visitor */ protected function _saveQuoteInfo($visitor) { $adapter = $this->_getWriteAdapter(); if ($visitor->getDoQuoteCreate()) { $data = new Varien_Object(array('quote_id' => (int) $visitor->getQuoteId(), 'visitor_id' => (int) $visitor->getId(), 'created_at' => Mage::getSingleton('core/date')->gmtDate())); $bind = $this->_prepareDataForTable($data, $this->getTable('log/quote_table')); $adapter->insert($this->getTable('log/quote_table'), $bind); $visitor->setDoQuoteCreate(false); } if ($visitor->getDoQuoteDestroy()) { /** * We have delete quote from log because if original quote was * deleted and Mysql restarted we will get key duplication error */ $condition = array('quote_id = ?' => (int) $visitor->getQuoteId()); $adapter->delete($this->getTable('log/quote_table'), $condition); $visitor->setDoQuoteDestroy(false); $visitor->setQuoteId(null); } return $this; }
/** * Saving information about quote * * @param Mage_Log_Model_Visitor $visitor * @return Mage_Log_Model_Mysql4_Visitor */ protected function _saveQuoteInfo($visitor) { $write = $this->_getWriteAdapter(); if ($visitor->getDoQuoteCreate()) { $write->insert($this->getTable('log/quote_table'), array('quote_id' => $visitor->getQuoteId(), 'visitor_id' => $visitor->getId(), 'created_at' => now())); $visitor->setDoQuoteCreate(false); } if ($visitor->getDoQuoteDestroy()) { $write->update($this->getTable('log/quote_table'), array('deleted_at' => now()), $write->quoteInto('quote_id=?', $visitor->getQuoteId())); $visitor->setDoQuoteDestroy(false); $visitor->setQuoteId(null); } return $this; }
/** * return the last login time as a DateTime object. * return null if the last login time cannot be calculated. * @param Mage_Customer_Model_Session * @param Mage_Log_Model_Visitor * @return DateTime */ protected function _getLastLoginTime(Mage_Customer_Model_Session $session, Mage_Log_Model_Visitor $visitorLog = null) { if ($visitorLog && $session->isLoggedIn()) { $lastLogin = date_create_from_format(self::MAGE_DATETIME_FORMAT, $this->_customerLog->load($visitorLog->getId(), 'visitor_id')->getLoginAt()); } return isset($lastLogin) ? $lastLogin : null; }