![]() 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/old/vendor/magento/module-catalog/Model/ResourceModel/Product/ |
<?php /** * Copyright © Magento, Inc. All rights reserved. * See COPYING.txt for license details. */ namespace Magento\Catalog\Model\ResourceModel\Product; use Magento\Store\Model\Store; use Magento\Eav\Model\ResourceModel\Attribute\DefaultEntityAttributes\ProviderInterface as DefaultAttributesProvider; /** * Catalog Product Flat resource model * * @author Magento Core Team <[email protected]> */ class Flat extends \Magento\Framework\Model\ResourceModel\Db\AbstractDb implements DefaultAttributesProvider { /** * Store scope Id * * @var int */ protected $_storeId; /** * Catalog config * * @var \Magento\Catalog\Model\Config */ protected $_catalogConfig; /** * Store manager * * @var \Magento\Store\Model\StoreManagerInterface */ protected $_storeManager; /** * @var \Magento\Catalog\Model\Product\Attribute\DefaultAttributes */ protected $defaultAttributes; /** * @param \Magento\Framework\Model\ResourceModel\Db\Context $context * @param \Magento\Store\Model\StoreManagerInterface $storeManager * @param \Magento\Catalog\Model\Config $catalogConfig * @param \Magento\Catalog\Model\Product\Attribute\DefaultAttributes $defaultAttributes * @param string $connectionName */ public function __construct( \Magento\Framework\Model\ResourceModel\Db\Context $context, \Magento\Store\Model\StoreManagerInterface $storeManager, \Magento\Catalog\Model\Config $catalogConfig, \Magento\Catalog\Model\Product\Attribute\DefaultAttributes $defaultAttributes, $connectionName = null ) { $this->_storeManager = $storeManager; $this->_catalogConfig = $catalogConfig; $this->defaultAttributes = $defaultAttributes; parent::__construct($context, $connectionName); } /** * Init connection and resource table * * @return void */ protected function _construct() { $this->_init('catalog_product_flat', 'entity_id'); $this->setStoreId(null); } /** * Retrieve store for resource model * * @return int */ public function getStoreId() { return $this->_storeId; } /** * Set store for resource model * * @param null|string|bool|int|Store $store * @return $this */ public function setStoreId($store) { if (is_int($store)) { $this->_storeId = $store; } else { $this->_storeId = $this->_storeManager->getStore()->getId(); } if (empty($this->_storeId)) { $defaultStore = $this->_storeManager->getDefaultStoreView(); if ($defaultStore) { $this->_storeId = (int)$defaultStore->getId(); } } return $this; } /** * Retrieve Flat Table name * * @param mixed $store * @return string */ public function getFlatTableName($store = null) { if ($store === null) { $store = $this->getStoreId(); } return $this->getTable('catalog_product_flat_' . $store); } /** * Retrieve entity type id * * @return int */ public function getTypeId() { return $this->_catalogConfig->getEntityType(\Magento\Catalog\Model\Product::ENTITY)->getEntityTypeId(); } /** * Retrieve attribute columns for collection select * * @param string $attributeCode * @return array|null */ public function getAttributeForSelect($attributeCode) { $describe = $this->getConnection()->describeTable($this->getFlatTableName()); if (!isset($describe[$attributeCode])) { return null; } $columns = [$attributeCode => $attributeCode]; $attributeIndex = sprintf('%s_value', $attributeCode); if (isset($describe[$attributeIndex])) { $columns[$attributeIndex] = $attributeIndex; } return $columns; } /** * Retrieve Attribute Sort column name * * @param string $attributeCode * @return string */ public function getAttributeSortColumn($attributeCode) { $describe = $this->getConnection()->describeTable($this->getFlatTableName()); if (!isset($describe[$attributeCode])) { return null; } $attributeIndex = sprintf('%s_value', $attributeCode); if (isset($describe[$attributeIndex])) { return $attributeIndex; } return $attributeCode; } /** * Retrieve Flat Table columns list * * @return array */ public function getAllTableColumns() { $describe = $this->getConnection()->describeTable($this->getFlatTableName()); return array_keys($describe); } /** * Check whether the attribute is a real field in entity table * Rewrited for EAV Collection * * @param integer|string|\Magento\Eav\Model\Entity\Attribute\AbstractAttribute $attribute * @return bool */ public function isAttributeStatic($attribute) { $attributeCode = null; if ($attribute instanceof \Magento\Eav\Model\Entity\Attribute\AttributeInterface) { $attributeCode = $attribute->getAttributeCode(); } elseif (is_string($attribute)) { $attributeCode = $attribute; } elseif (is_numeric($attribute)) { $attributeCode = $this->getAttribute($attribute)->getAttributeCode(); } if ($attributeCode) { $columns = $this->getAllTableColumns(); if (in_array($attributeCode, $columns)) { return true; } } return false; } /** * Retrieve entity id field name in entity table * Rewrote for EAV collection compatibility * * @return string */ public function getEntityIdField() { return $this->getIdFieldName(); } /** * Retrieve attribute instance * Special for non static flat table * * @param mixed $attribute * @return \Magento\Eav\Model\Entity\Attribute\AbstractAttribute */ public function getAttribute($attribute) { return $this->_catalogConfig->getAttribute(\Magento\Catalog\Model\Product::ENTITY, $attribute); } /** * Retrieve main resource table name * * @return string */ public function getMainTable() { return $this->getFlatTableName($this->getStoreId()); } /** * Retrieve default entity static attributes * * @return string[] */ public function getDefaultAttributes() { return array_unique( array_merge( $this->defaultAttributes->getDefaultAttributes(), [$this->getEntityIdField()] ) ); } }