コード例 #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));
 }
コード例 #2
0
 /**
  * Load object by product
  *
  * @param Mage_Core_Model_Abstract $object
  * @param mixed $product
  * @return bool
  */
 public function loadByProduct(Mage_Catalog_Model_Product_Compare_Item $object, $product)
 {
     $read = $this->_getReadAdapter();
     if ($product instanceof Mage_Catalog_Model_Product) {
         $productId = $product->getId();
     } else {
         $productId = (int) $product;
     }
     $select = $read->select()->from($this->getMainTable())->where('product_id=?', $productId)->where('visitor_id=?', $object->getVisitorId());
     if ($object->getCustomerId()) {
         $select->where('customer_id=?', $object->getCustomerId());
     }
     $data = $read->fetchRow($select);
     if (!$data) {
         return false;
     }
     $object->setData($data);
     $this->_afterLoad($object);
     return true;
 }
コード例 #3
0
ファイル: Item.php プロジェクト: jpbender/mage_virtual
 /**
  * Update (Merge) customer data from visitor
  *
  * After Login process
  *
  * @param Mage_Catalog_Model_Product_Compare_Item $object
  * @return Mage_Catalog_Model_Resource_Eav_Mysql4_Product_Compare_Item
  */
 public function updateCustomerFromVisitor($object)
 {
     if (!$object->getCustomerId()) {
         return $this;
     }
     // collect visitor compared items
     $select = $this->_getWriteAdapter()->select()->from($this->getMainTable())->where('visitor_id=?', $object->getVisitorId());
     $visitor = $this->_getWriteAdapter()->fetchAll($select);
     // collect customer compared items
     $select = $this->_getWriteAdapter()->select()->from($this->getMainTable())->where('customer_id=?', $object->getCustomerId())->where('visitor_id<>?', $object->getVisitorId());
     $customer = $this->_getWriteAdapter()->fetchAll($select);
     $products = array();
     $delete = array();
     $update = array();
     foreach ($visitor as $row) {
         $products[$row['product_id']] = array('store_id' => $row['store_id'], 'customer_id' => $object->getCustomerId(), 'visitor_id' => $object->getVisitorId(), 'product_id' => $row['product_id']);
         $update[$row[$this->getIdFieldName()]] = $row['product_id'];
     }
     foreach ($customer as $row) {
         if (isset($products[$row['product_id']])) {
             $delete[] = $row[$this->getIdFieldName()];
         } else {
             $products[$row['product_id']] = array('store_id' => $row['store_id'], 'customer_id' => $object->getCustomerId(), 'visitor_id' => $object->getVisitorId(), 'product_id' => $row['product_id']);
         }
     }
     if ($delete) {
         $this->_getWriteAdapter()->delete($this->getMainTable(), $this->_getWriteAdapter()->quoteInto($this->getIdFieldName() . ' IN(?)', $delete));
     }
     if ($update) {
         foreach ($update as $itemId => $productId) {
             $bind = $products[$productId];
             $this->_getWriteAdapter()->update($this->getMainTable(), $bind, $this->_getWriteAdapter()->quoteInto($this->getIdFieldName() . '=?', $itemId));
         }
     }
     return $this;
 }
コード例 #4
0
ファイル: List.php プロジェクト: hientruong90/ee_14_installer
 /**
  * Add visitor and customer data to compare item
  *
  * @param Mage_Catalog_Model_Product_Compare_Item $item
  * @return Mage_Catalog_Model_Product_Compare_List
  */
 protected function _addVisitorToItem($item)
 {
     $item->addVisitorId(Mage::getSingleton('log/visitor')->getId());
     if (Mage::getSingleton('customer/session')->isLoggedIn()) {
         $item->addCustomerData(Mage::getSingleton('customer/session')->getCustomer());
     }
     return $this;
 }
コード例 #5
0
ファイル: List.php プロジェクト: natxetee/magento2
 /**
  * Add visitor and customer data to compare item
  *
  * @param Mage_Catalog_Model_Product_Compare_Item $item
  * @return Mage_Catalog_Model_Product_Compare_List
  */
 protected function _addVisitorToItem($item)
 {
     $item->addVisitorId(Mage::getSingleton('Mage_Log_Model_Visitor')->getId());
     if (Mage::getSingleton('Mage_Customer_Model_Session')->isLoggedIn()) {
         $item->addCustomerData(Mage::getSingleton('Mage_Customer_Model_Session')->getCustomer());
     }
     return $this;
 }