![]() 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/Indexer/Product/Flat/Action/ |
<?php /** * Copyright © Magento, Inc. All rights reserved. * See COPYING.txt for license details. */ namespace Magento\Catalog\Model\Indexer\Product\Flat\Action; use Magento\Catalog\Model\Indexer\Product\Flat\AbstractAction; use Magento\Catalog\Model\Indexer\Product\Flat\FlatTableBuilder; use Magento\Catalog\Model\Indexer\Product\Flat\TableBuilder; /** * Class Rows reindex action for mass actions */ class Rows extends AbstractAction { /** * @var Eraser */ protected $flatItemEraser; /** * @param \Magento\Framework\App\ResourceConnection $resource * @param \Magento\Store\Model\StoreManagerInterface $storeManager * @param \Magento\Catalog\Helper\Product\Flat\Indexer $productHelper * @param \Magento\Catalog\Model\Product\Type $productType * @param TableBuilder $tableBuilder * @param FlatTableBuilder $flatTableBuilder * @param Eraser $flatItemEraser */ public function __construct( \Magento\Framework\App\ResourceConnection $resource, \Magento\Store\Model\StoreManagerInterface $storeManager, \Magento\Catalog\Helper\Product\Flat\Indexer $productHelper, \Magento\Catalog\Model\Product\Type $productType, TableBuilder $tableBuilder, FlatTableBuilder $flatTableBuilder, Eraser $flatItemEraser ) { parent::__construct( $resource, $storeManager, $productHelper, $productType, $tableBuilder, $flatTableBuilder ); $this->flatItemEraser = $flatItemEraser; } /** * Execute multiple rows reindex action * * @param array $ids * * @return \Magento\Catalog\Model\Indexer\Product\Flat\Action\Rows * @throws \Magento\Framework\Exception\LocalizedException */ public function execute($ids) { if (empty($ids)) { throw new \Magento\Framework\Exception\LocalizedException(__('Bad value was supplied.')); } foreach ($this->_storeManager->getStores() as $store) { $tableExists = $this->_isFlatTableExists($store->getId()); $idsBatches = array_chunk($ids, \Magento\Catalog\Helper\Product\Flat\Indexer::BATCH_SIZE); foreach ($idsBatches as $changedIds) { if ($tableExists) { $this->flatItemEraser->removeDeletedProducts($changedIds, $store->getId()); $this->flatItemEraser->removeDisabledProducts($changedIds, $store->getId()); } if (!empty($changedIds)) { $this->_reindex($store->getId(), $changedIds); } } } return $this; } }