Exemplo n.º 1
0
 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));
 }
Exemplo n.º 2
0
 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()));
 }
Exemplo n.º 3
0
 /**
  * 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;
 }
Exemplo n.º 4
0
 /**
  * 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;
 }
Exemplo n.º 5
0
 /**
  * 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;
 }
Exemplo n.º 6
0
 /**
  * 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;
 }