![]() Server : Apache System : Linux server2.corals.io 4.18.0-348.2.1.el8_5.x86_64 #1 SMP Mon Nov 15 09:17:08 EST 2021 x86_64 User : corals ( 1002) PHP Version : 7.4.33 Disable Function : exec,passthru,shell_exec,system Directory : /home/corals/cartforge.co/vendor/magento/module-reports/Model/Product/Index/ |
<?php /** * Copyright © Magento, Inc. All rights reserved. * See COPYING.txt for license details. */ namespace Magento\Reports\Model\Product\Index; /** * Reports Product Index Abstract Model * * phpcs:disable Magento2.Classes.AbstractApi * @api * @since 100.0.2 * @SuppressWarnings(PHPMD.CookieAndSessionMisuse) */ abstract class AbstractIndex extends \Magento\Framework\Model\AbstractModel { /** * Cache key name for Count of product index * * @var string */ protected $_countCacheKey; /** * @var \Magento\Store\Model\StoreManagerInterface */ protected $_storeManager; /** * @var \Magento\Customer\Model\Visitor */ protected $_customerVisitor; /** * @var \Magento\Customer\Model\Session */ protected $_customerSession; /** * @var \Magento\Framework\Session\Generic */ protected $_reportSession; /** * @var \Magento\Catalog\Model\Product\Visibility */ protected $_productVisibility; /** * @var \Magento\Framework\Stdlib\DateTime */ protected $dateTime; /** * @param \Magento\Framework\Model\Context $context * @param \Magento\Framework\Registry $registry * @param \Magento\Store\Model\StoreManagerInterface $storeManager * @param \Magento\Customer\Model\Visitor $customerVisitor * @param \Magento\Customer\Model\Session $customerSession * @param \Magento\Framework\Session\Generic $reportSession * @param \Magento\Catalog\Model\Product\Visibility $productVisibility * @param \Magento\Framework\Stdlib\DateTime $dateTime * @param \Magento\Framework\Model\ResourceModel\AbstractResource $resource * @param \Magento\Framework\Data\Collection\AbstractDb $resourceCollection * @param array $data * @SuppressWarnings(PHPMD.ExcessiveParameterList) */ public function __construct( \Magento\Framework\Model\Context $context, \Magento\Framework\Registry $registry, \Magento\Store\Model\StoreManagerInterface $storeManager, \Magento\Customer\Model\Visitor $customerVisitor, \Magento\Customer\Model\Session $customerSession, \Magento\Framework\Session\Generic $reportSession, \Magento\Catalog\Model\Product\Visibility $productVisibility, \Magento\Framework\Stdlib\DateTime $dateTime, \Magento\Framework\Model\ResourceModel\AbstractResource $resource = null, \Magento\Framework\Data\Collection\AbstractDb $resourceCollection = null, array $data = [] ) { parent::__construct($context, $registry, $resource, $resourceCollection, $data); $this->_storeManager = $storeManager; $this->dateTime = $dateTime; $this->_customerVisitor = $customerVisitor; $this->_customerSession = $customerSession; $this->_reportSession = $reportSession; $this->_productVisibility = $productVisibility; } /** * Prepare customer/visitor, store data before save * * @return $this */ public function beforeSave() { parent::beforeSave(); if (!$this->hasVisitorId()) { $this->setVisitorId($this->getVisitorId()); } if (!$this->hasCustomerId()) { $this->setCustomerId($this->getCustomerId()); } if (!$this->hasStoreId()) { $this->setStoreId($this->getStoreId()); } if (!$this->hasAddedAt()) { $this->setAddedAt((new \DateTime())->format(\Magento\Framework\Stdlib\DateTime::DATETIME_PHP_FORMAT)); } return $this; } /** * Retrieve visitor id * * If don't exists return current visitor id * * @return int */ public function getVisitorId() { if ($this->hasData('visitor_id')) { return $this->getData('visitor_id'); } return $this->_customerVisitor->getId(); } /** * Retrieve customer id * * If customer don't logged in return null * * @return int */ public function getCustomerId() { if ($this->hasData('customer_id')) { return $this->getData('customer_id'); } return $this->_customerSession->getCustomerId(); } /** * Retrieve store id * * Default return current store id * * @return int */ public function getStoreId() { if ($this->hasData('store_id')) { return $this->getData('store_id'); } return $this->_storeManager->getStore()->getId(); } /** * On customer login merge visitor/customer index * * @return $this */ public function updateCustomerFromVisitor() { $this->_getResource()->updateCustomerFromVisitor($this); return $this; } /** * Purge visitor data by customer (logout) * * @return $this */ public function purgeVisitorByCustomer() { $this->_getResource()->purgeVisitorByCustomer($this); return $this; } /** * Retrieve Reports Session instance * * @return \Magento\Framework\Session\Generic */ protected function _getSession() { return $this->_reportSession; } /** * Calculate count of product index items cache * * @return $this */ public function calculate() { $collection = $this->getCollection()->setCustomerId( $this->getCustomerId() )->addIndexFilter()->setVisibility( $this->_productVisibility->getVisibleInSiteIds() ); $count = $collection->getSize(); $this->_getSession()->setData($this->_countCacheKey, $count); return $this; } /** * Retrieve Exclude Product Ids List for Collection * * @return array */ public function getExcludeProductIds() { return []; } /** * Retrieve count of product index items * * @return int */ public function getCount() { if (!$this->_countCacheKey) { return 0; } if (!$this->_getSession()->hasData($this->_countCacheKey)) { $this->calculate(); } return $this->_getSession()->getData($this->_countCacheKey); } /** * Clean index (visitors) * * @return $this */ public function clean() { $this->_getResource()->clean($this); return $this; } /** * Add product ids to current visitor/customer log * * @param string[] $productIds * @return $this */ public function registerIds($productIds) { $this->_getResource()->registerIds($this, $productIds); $this->_getSession()->unsetData($this->_countCacheKey); return $this; } }