PageRenderTime 45ms CodeModel.GetById 18ms RepoModel.GetById 0ms app.codeStats 1ms

/magento/app/code/core/Mage/Reports/Model/Event/Observer.php

https://bitbucket.org/jit_bec/shopifine
PHP | 260 lines | 117 code | 26 blank | 117 comment | 6 complexity | b6cc5b100e54fd05cd993bc85dacbf60 MD5 | raw file
Possible License(s): LGPL-3.0
  1. <?php
  2. /**
  3. * Magento
  4. *
  5. * NOTICE OF LICENSE
  6. *
  7. * This source file is subject to the Open Software License (OSL 3.0)
  8. * that is bundled with this package in the file LICENSE.txt.
  9. * It is also available through the world-wide-web at this URL:
  10. * http://opensource.org/licenses/osl-3.0.php
  11. * If you did not receive a copy of the license and are unable to
  12. * obtain it through the world-wide-web, please send an email
  13. * to license@magentocommerce.com so we can send you a copy immediately.
  14. *
  15. * DISCLAIMER
  16. *
  17. * Do not edit or add to this file if you wish to upgrade Magento to newer
  18. * versions in the future. If you wish to customize Magento for your
  19. * needs please refer to http://www.magentocommerce.com for more information.
  20. *
  21. * @category Mage
  22. * @package Mage_Reports
  23. * @copyright Copyright (c) 2012 Magento Inc. (http://www.magentocommerce.com)
  24. * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
  25. */
  26. /**
  27. * Reports Event observer model
  28. *
  29. * @category Mage
  30. * @package Mage_Reports
  31. * @author Magento Core Team <core@magentocommerce.com>
  32. */
  33. class Mage_Reports_Model_Event_Observer
  34. {
  35. /**
  36. * Abstract Event obeserver logic
  37. *
  38. * Save event
  39. *
  40. * @param int $eventTypeId
  41. * @param int $objectId
  42. * @param int $subjectId
  43. * @param int $subtype
  44. * @return Mage_Reports_Model_Event_Observer
  45. */
  46. protected function _event($eventTypeId, $objectId, $subjectId = null, $subtype = 0)
  47. {
  48. if (is_null($subjectId)) {
  49. if (Mage::getSingleton('customer/session')->isLoggedIn()) {
  50. $customer = Mage::getSingleton('customer/session')->getCustomer();
  51. $subjectId = $customer->getId();
  52. }
  53. else {
  54. $subjectId = Mage::getSingleton('log/visitor')->getId();
  55. $subtype = 1;
  56. }
  57. }
  58. $eventModel = Mage::getModel('reports/event');
  59. $storeId = Mage::app()->getStore()->getId();
  60. $eventModel
  61. ->setEventTypeId($eventTypeId)
  62. ->setObjectId($objectId)
  63. ->setSubjectId($subjectId)
  64. ->setSubtype($subtype)
  65. ->setStoreId($storeId);
  66. $eventModel->save();
  67. return $this;
  68. }
  69. /**
  70. * Customer login action
  71. *
  72. * @param Varien_Event_Observer $observer
  73. * @return Mage_Reports_Model_Event_Observer
  74. */
  75. public function customerLogin(Varien_Event_Observer $observer)
  76. {
  77. if (!Mage::getSingleton('customer/session')->isLoggedIn()) {
  78. return $this;
  79. }
  80. $visitorId = Mage::getSingleton('log/visitor')->getId();
  81. $customerId = Mage::getSingleton('customer/session')->getCustomerId();
  82. $eventModel = Mage::getModel('reports/event');
  83. $eventModel->updateCustomerType($visitorId, $customerId);
  84. Mage::getModel('reports/product_index_compared')
  85. ->updateCustomerFromVisitor()
  86. ->calculate();
  87. Mage::getModel('reports/product_index_viewed')
  88. ->updateCustomerFromVisitor()
  89. ->calculate();
  90. return $this;
  91. }
  92. /**
  93. * Customer logout processing
  94. *
  95. * @param Varien_Event_Observer $observer
  96. * @return Mage_Reports_Model_Event_Observer
  97. */
  98. public function customerLogout(Varien_Event_Observer $observer)
  99. {
  100. Mage::getModel('reports/product_index_compared')
  101. ->purgeVisitorByCustomer()
  102. ->calculate();
  103. Mage::getModel('reports/product_index_viewed')
  104. ->purgeVisitorByCustomer()
  105. ->calculate();
  106. return $this;
  107. }
  108. /**
  109. * View Catalog Product action
  110. *
  111. * @param Varien_Event_Observer $observer
  112. * @return Mage_Reports_Model_Event_Observer
  113. */
  114. public function catalogProductView(Varien_Event_Observer $observer)
  115. {
  116. $productId = $observer->getEvent()->getProduct()->getId();
  117. Mage::getModel('reports/product_index_viewed')
  118. ->setProductId($productId)
  119. ->save()
  120. ->calculate();
  121. return $this->_event(Mage_Reports_Model_Event::EVENT_PRODUCT_VIEW, $productId);
  122. }
  123. /**
  124. * Send Product link to friends action
  125. *
  126. * @param Varien_Event_Observer $observer
  127. * @return Mage_Reports_Model_Event_Observer
  128. */
  129. public function sendfriendProduct(Varien_Event_Observer $observer)
  130. {
  131. return $this->_event(Mage_Reports_Model_Event::EVENT_PRODUCT_SEND,
  132. $observer->getEvent()->getProduct()->getId()
  133. );
  134. }
  135. /**
  136. * Remove Product from Compare Products action
  137. *
  138. * Reset count of compared products cache
  139. *
  140. * @param Varien_Event_Observer $observer
  141. * @return Mage_Reports_Model_Event_Observer
  142. */
  143. public function catalogProductCompareRemoveProduct(Varien_Event_Observer $observer)
  144. {
  145. Mage::getModel('reports/product_index_compared')->calculate();
  146. return $this;
  147. }
  148. /**
  149. * Remove All Products from Compare Products
  150. *
  151. * Reset count of compared products cache
  152. *
  153. * @param Varien_Event_Observer $observer
  154. * @return Mage_Reports_Model_Event_Observer
  155. */
  156. public function catalogProductCompareClear(Varien_Event_Observer $observer)
  157. {
  158. Mage::getModel('reports/product_index_compared')->calculate();
  159. return $this;
  160. }
  161. /**
  162. * Add Product to Compare Products List action
  163. *
  164. * Reset count of compared products cache
  165. *
  166. * @param Varien_Event_Observer $observer
  167. * @return unknown
  168. */
  169. public function catalogProductCompareAddProduct(Varien_Event_Observer $observer)
  170. {
  171. $productId = $observer->getEvent()->getProduct()->getId();
  172. Mage::getModel('reports/product_index_compared')
  173. ->setProductId($productId)
  174. ->save()
  175. ->calculate();
  176. return $this->_event(Mage_Reports_Model_Event::EVENT_PRODUCT_COMPARE, $productId);
  177. }
  178. /**
  179. * Add product to shopping cart action
  180. *
  181. * @param Varien_Event_Observer $observer
  182. * @return Mage_Reports_Model_Event_Observer
  183. */
  184. public function checkoutCartAddProduct(Varien_Event_Observer $observer)
  185. {
  186. $quoteItem = $observer->getEvent()->getItem();
  187. if (!$quoteItem->getId() && !$quoteItem->getParentItem()) {
  188. $productId = $quoteItem->getProductId();
  189. $this->_event(Mage_Reports_Model_Event::EVENT_PRODUCT_TO_CART, $productId);
  190. }
  191. return $this;
  192. }
  193. /**
  194. * Add product to wishlist action
  195. *
  196. * @param Varien_Event_Observer $observer
  197. * @return Mage_Reports_Model_Event_Observer
  198. */
  199. public function wishlistAddProduct(Varien_Event_Observer $observer)
  200. {
  201. return $this->_event(Mage_Reports_Model_Event::EVENT_PRODUCT_TO_WISHLIST,
  202. $observer->getEvent()->getProduct()->getId()
  203. );
  204. }
  205. /**
  206. * Share customer wishlist action
  207. *
  208. * @param Varien_Event_Observer $observer
  209. * @return Mage_Reports_Model_Event_Observer
  210. */
  211. public function wishlistShare(Varien_Event_Observer $observer)
  212. {
  213. return $this->_event(Mage_Reports_Model_Event::EVENT_WISHLIST_SHARE,
  214. $observer->getEvent()->getWishlist()->getId()
  215. );
  216. }
  217. /**
  218. * Clean events by old visitors
  219. *
  220. * @see Global Log Clean Settings
  221. *
  222. * @param Varien_Event_Observer $observer
  223. * @return Mage_Reports_Model_Event_Observer
  224. */
  225. public function eventClean(Varien_Event_Observer $observer)
  226. {
  227. /* @var $event Mage_Reports_Model_Event */
  228. $event = Mage::getModel('reports/event');
  229. $event->clean();
  230. Mage::getModel('reports/product_index_compared')->clean();
  231. Mage::getModel('reports/product_index_viewed')->clean();
  232. return $this;
  233. }
  234. }