![]() 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-catalog-rule/Model/ResourceModel/ |
<?php /** * Copyright © Magento, Inc. All rights reserved. * See COPYING.txt for license details. */ /** * Catalog rules resource model * * @author Magento Core Team <[email protected]> */ namespace Magento\CatalogRule\Model\ResourceModel; use Magento\Catalog\Model\Product; use Magento\Framework\Model\AbstractModel; use Magento\Framework\Pricing\PriceCurrencyInterface; /** * @SuppressWarnings(PHPMD.CouplingBetweenObjects) */ class Rule extends \Magento\Rule\Model\ResourceModel\AbstractResource { /** * Store number of seconds in a day */ const SECONDS_IN_DAY = 86400; /** * @var \Psr\Log\LoggerInterface */ protected $_logger; /** * Catalog rule data * * @var \Magento\CatalogRule\Helper\Data */ protected $_catalogRuleData = null; /** * Core event manager proxy * * @var \Magento\Framework\Event\ManagerInterface */ protected $_eventManager = null; /** * @var \Magento\Eav\Model\Config */ protected $_eavConfig; /** * @var \Magento\Framework\Stdlib\DateTime\DateTime */ protected $_coreDate; /** * @var \Magento\Catalog\Model\Product\ConditionFactory */ protected $_conditionFactory; /** * @var \Magento\Store\Model\StoreManagerInterface */ protected $_storeManager; /** * @var \Magento\Framework\Stdlib\DateTime */ protected $dateTime; /** * @var PriceCurrencyInterface */ protected $priceCurrency; /** * @var \Magento\Framework\EntityManager\EntityManager */ protected $entityManager; /** * Rule constructor. * @param \Magento\Framework\Model\ResourceModel\Db\Context $context * @param \Magento\Store\Model\StoreManagerInterface $storeManager * @param Product\ConditionFactory $conditionFactory * @param \Magento\Framework\Stdlib\DateTime\DateTime $coreDate * @param \Magento\Eav\Model\Config $eavConfig * @param \Magento\Framework\Event\ManagerInterface $eventManager * @param \Magento\CatalogRule\Helper\Data $catalogRuleData * @param \Psr\Log\LoggerInterface $logger * @param \Magento\Framework\Stdlib\DateTime $dateTime * @param PriceCurrencyInterface $priceCurrency * @param null $connectionName * @SuppressWarnings(PHPMD.ExcessiveParameterList) */ public function __construct( \Magento\Framework\Model\ResourceModel\Db\Context $context, \Magento\Store\Model\StoreManagerInterface $storeManager, \Magento\Catalog\Model\Product\ConditionFactory $conditionFactory, \Magento\Framework\Stdlib\DateTime\DateTime $coreDate, \Magento\Eav\Model\Config $eavConfig, \Magento\Framework\Event\ManagerInterface $eventManager, \Magento\CatalogRule\Helper\Data $catalogRuleData, \Psr\Log\LoggerInterface $logger, \Magento\Framework\Stdlib\DateTime $dateTime, PriceCurrencyInterface $priceCurrency, $connectionName = null ) { $this->_storeManager = $storeManager; $this->_conditionFactory = $conditionFactory; $this->_coreDate = $coreDate; $this->_eavConfig = $eavConfig; $this->_eventManager = $eventManager; $this->_catalogRuleData = $catalogRuleData; $this->_logger = $logger; $this->dateTime = $dateTime; $this->priceCurrency = $priceCurrency; $this->_associatedEntitiesMap = $this->getAssociatedEntitiesMap(); parent::__construct($context, $connectionName); } /** * Initialize main table and table id field * * @return void * @codeCoverageIgnore */ protected function _construct() { $this->_init('catalogrule', 'rule_id'); } /** * @param \Magento\Framework\Model\AbstractModel $rule * @return $this */ protected function _afterDelete(\Magento\Framework\Model\AbstractModel $rule) { $connection = $this->getConnection(); $connection->delete( $this->getTable('catalogrule_product'), ['rule_id=?' => $rule->getId()] ); $connection->delete( $this->getTable('catalogrule_group_website'), ['rule_id=?' => $rule->getId()] ); return parent::_afterDelete($rule); } /** * Get catalog rules product price for specific date, website and * customer group * * @param \DateTimeInterface $date * @param int $wId * @param int $gId * @param int $pId * @return float|false */ public function getRulePrice($date, $wId, $gId, $pId) { $data = $this->getRulePrices($date, $wId, $gId, [$pId]); if (isset($data[$pId])) { return $data[$pId]; } return false; } /** * Retrieve product prices by catalog rule for specific date, website and customer group * Collect data with product Id => price pairs * * @param \DateTimeInterface $date * @param int $websiteId * @param int $customerGroupId * @param array $productIds * @return array */ public function getRulePrices(\DateTimeInterface $date, $websiteId, $customerGroupId, $productIds) { $connection = $this->getConnection(); $select = $connection->select() ->from($this->getTable('catalogrule_product_price'), ['product_id', 'rule_price']) ->where('rule_date = ?', $date->format('Y-m-d')) ->where('website_id = ?', $websiteId) ->where('customer_group_id = ?', $customerGroupId) ->where('product_id IN(?)', $productIds, \Zend_Db::INT_TYPE); return $connection->fetchPairs($select); } /** * Get active rule data based on few filters * * @param int|string $date * @param int $websiteId * @param int $customerGroupId * @param int $productId * @return array */ public function getRulesFromProduct($date, $websiteId, $customerGroupId, $productId) { $connection = $this->getConnection(); if (is_string($date)) { $date = strtotime($date); } $select = $connection->select() ->from($this->getTable('catalogrule_product')) ->where('website_id = ?', $websiteId) ->where('customer_group_id = ?', $customerGroupId) ->where('product_id = ?', $productId) ->where('from_time = 0 or from_time < ?', $date) ->where('to_time = 0 or to_time > ?', $date); return $connection->fetchAll($select); } /** * @param \Magento\Framework\Model\AbstractModel $object * @param mixed $value * @param string $field * @return $this * @SuppressWarnings(PHPMD.UnusedFormalParameter) */ public function load(\Magento\Framework\Model\AbstractModel $object, $value, $field = null) { $this->getEntityManager()->load($object, $value); return $this; } /** * @param AbstractModel $object * @return $this * @throws \Exception */ public function save(\Magento\Framework\Model\AbstractModel $object) { $this->getEntityManager()->save($object); return $this; } /** * Delete the object * * @param \Magento\Framework\Model\AbstractModel $object * @return $this * @throws \Exception */ public function delete(AbstractModel $object) { $this->getEntityManager()->delete($object); return $this; } /** * @return array * @deprecated 100.1.0 */ private function getAssociatedEntitiesMap() { if (!$this->_associatedEntitiesMap) { $this->_associatedEntitiesMap = \Magento\Framework\App\ObjectManager::getInstance() ->get(\Magento\CatalogRule\Model\ResourceModel\Rule\AssociatedEntityMap::class) ->getData(); } return $this->_associatedEntitiesMap; } /** * @return \Magento\Framework\EntityManager\EntityManager * @deprecated 100.1.0 */ private function getEntityManager() { if (null === $this->entityManager) { $this->entityManager = \Magento\Framework\App\ObjectManager::getInstance() ->get(\Magento\Framework\EntityManager\EntityManager::class); } return $this->entityManager; } }